[PATCH 5/7] ocxl: Create a clear delineation between ocxl backend & frontend
    Frederic Barrat 
    fbarrat at linux.ibm.com
       
    Fri Mar 15 03:27:06 AEDT 2019
    
    
  
> diff --git a/drivers/misc/ocxl/file.c b/drivers/misc/ocxl/file.c
> index 865b3d176431..424bb0b40afb 100644
> --- a/drivers/misc/ocxl/file.c
> +++ b/drivers/misc/ocxl/file.c
> -int ocxl_register_afu(struct ocxl_afu *afu)
> +int ocxl_file_register_afu(struct ocxl_afu *afu)
>   {
>   	int minor;
> +	int rc;
> +	struct ocxl_file_info *info;
> +	struct ocxl_fn *fn = afu->fn;
> +	struct pci_dev *pci_dev = to_pci_dev(fn->dev.parent);
> +
> +	info = kzalloc(sizeof(*info), GFP_KERNEL);
> +	if (info == NULL)
> +		return -ENOMEM;
>   
> -	minor = allocate_afu_minor(afu);
> -	if (minor < 0)
> +	info->afu = afu;
> +
> +	minor = allocate_minor(info);
> +	if (minor < 0) {
> +		kfree(info);
>   		return minor;
> -	afu->dev.devt = MKDEV(MAJOR(ocxl_dev), minor);
> -	afu->dev.class = ocxl_class;
> -	return device_register(&afu->dev);
> +	}
> +
> +	info->dev.parent = &fn->dev;
> +	info->dev.devt = MKDEV(MAJOR(ocxl_dev), minor);
> +	info->dev.class = ocxl_class;
> +
> +	ocxl_afu_set_private(afu, info, ocxl_file_release);
We no longer define a 'release' method for the AFU device. We need one, 
which should in turn free the info struct when the device ref count hits 
0. That should explain the following error seen when unloading the driver:
"Device 'xyz' does not have a release() function, it is broken and must 
be fixed. See Documentation/kobject.txt"
   Fred
    
    
More information about the Linuxppc-dev
mailing list