All of lore.kernel.org
 help / color / mirror / Atom feed
From: Dan Carpenter <dan.carpenter@oracle.com>
To: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
Cc: Greg KH <gregkh@linuxfoundation.org>,
	One Thousand Gnomes <gnomes@lxorguk.ukuu.org.uk>,
	Jean Delvare <jdelvare@suse.de>,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH v5 WIP 5/5] paride: use new parport device model
Date: Tue, 19 May 2015 14:32:55 +0300	[thread overview]
Message-ID: <20150519113255.GO22558@mwanda> (raw)
In-Reply-To: <1430907377-17147-5-git-send-email-sudipm.mukherjee@gmail.com>

On Wed, May 06, 2015 at 03:46:17PM +0530, Sudip Mukherjee wrote:
> +void *pi_register_driver(char *name)
> +{
> +	struct parport_driver *parp_drv;
> +	int ret;
> +
> +	parp_drv = kzalloc(sizeof(*parp_drv), GFP_KERNEL);
> +	if (!parp_drv)
> +		return NULL;
> +
> +	parp_drv->name = name;
> +	parp_drv->probe = pi_probe;
> +
> +	ret = parport_register_driver(parp_drv);
> +
> +	if (ret)
> +		return NULL;

Remove the blank line between the call and the error handling.  We
should probably free parp_drv on error.

> +	return (void *)parp_drv;
> +}
> +EXPORT_SYMBOL(pi_register_driver);
> +
> +void pi_unregister_driver(void *_drv)
> +{
> +	struct parport_driver *drv = _drv;
> +
> +	parport_unregister_driver(drv);
> +	kfree(drv);
> +}
> +EXPORT_SYMBOL(pi_unregister_driver);
> diff --git a/drivers/block/paride/paride.h b/drivers/block/paride/paride.h
> index 2bddbf4..ddb9e58 100644
> --- a/drivers/block/paride/paride.h
> +++ b/drivers/block/paride/paride.h
> @@ -165,6 +165,8 @@ typedef struct pi_protocol PIP;
>  
>  extern int paride_register( PIP * );
>  extern void paride_unregister ( PIP * );
> +void *pi_register_driver(char *);
> +void pi_unregister_driver(void *);
>  
>  #endif /* __DRIVERS_PARIDE_H__ */
>  /* end of paride.h */
> diff --git a/drivers/block/paride/pcd.c b/drivers/block/paride/pcd.c
> index 3b7c9f1..9336236 100644
> --- a/drivers/block/paride/pcd.c
> +++ b/drivers/block/paride/pcd.c
> @@ -221,6 +221,7 @@ static int pcd_busy;		/* request being processed ? */
>  static int pcd_sector;		/* address of next requested sector */
>  static int pcd_count;		/* number of blocks still to do */
>  static char *pcd_buf;		/* buffer for request in progress */
> +static void *par_drv;		/* reference of parport driver */
>  
>  /* kernel glue structures */
>  
> @@ -690,6 +691,12 @@ static int pcd_detect(void)
>  	printk("%s: %s version %s, major %d, nice %d\n",
>  	       name, name, PCD_VERSION, major, nice);
>  
> +	par_drv = pi_register_driver(name);
> +	if (!par_drv) {
> +		pr_err("failed to register %s driver\n", name);
> +		return -1;
> +	}
> +
>  	k = 0;
>  	if (pcd_drive_count == 0) { /* nothing spec'd - so autoprobe for 1 */
>  		cd = pcd;
> @@ -723,6 +730,7 @@ static int pcd_detect(void)
>  	printk("%s: No CD-ROM drive found\n", name);
>  	for (unit = 0, cd = pcd; unit < PCD_UNITS; unit++, cd++)
>  		put_disk(cd->disk);
> +	pi_unregister_driver(par_drv);

You didn't introduce this, but I think the error handling here is broken
for the autoprobe case.  The autoprobe case doesn't have a for loop.

>  	return -1;
>  }
>  

regards,
dan carpenter


  reply	other threads:[~2015-05-19 11:33 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-05-06 10:16 [PATCH v5 WIP 1/5] parport: add device-model to parport subsystem Sudip Mukherjee
2015-05-06 10:16 ` [PATCH v5 WIP 2/5] staging: panel: use new parport device model Sudip Mukherjee
2015-05-19 11:18   ` Dan Carpenter
2015-05-20  8:23   ` Jean Delvare
2015-05-06 10:16 ` [PATCH v5 WIP 3/5] i2c-parport: define ports to connect Sudip Mukherjee
2015-05-19  7:50   ` Jean Delvare
2015-05-19  8:44     ` Sudip Mukherjee
2015-05-19  9:28       ` Jean Delvare
2015-05-19  9:58         ` Sudip Mukherjee
2015-05-19 11:23   ` Dan Carpenter
2015-05-19 12:23     ` Jean Delvare
2015-05-06 10:16 ` [PATCH v5 WIP 4/5] i2c-parport: use new parport device model Sudip Mukherjee
2015-05-20  7:57   ` Jean Delvare
2015-05-20  8:16     ` Sudip Mukherjee
2015-05-06 10:16 ` [PATCH v5 WIP 5/5] paride: " Sudip Mukherjee
2015-05-19 11:32   ` Dan Carpenter [this message]
2015-05-19 12:32     ` Sudip Mukherjee
2015-05-20  8:07   ` Jean Delvare
2015-05-20  8:33     ` Sudip Mukherjee
2015-05-19 11:08 ` [PATCH v5 WIP 1/5] parport: add device-model to parport subsystem Dan Carpenter
2015-05-19 13:18   ` Sudip Mukherjee
2015-05-20  7:54 ` Jean Delvare

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20150519113255.GO22558@mwanda \
    --to=dan.carpenter@oracle.com \
    --cc=gnomes@lxorguk.ukuu.org.uk \
    --cc=gregkh@linuxfoundation.org \
    --cc=jdelvare@suse.de \
    --cc=linux-kernel@vger.kernel.org \
    --cc=sudipm.mukherjee@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.