2012-06-22 23:26:54

by Hartley Sweeten

[permalink] [raw]
Subject: [PATCH 17/31] staging: comedi: ni_daq_700: remove unused private data variable

The 'have_irq' variable is not needed since this driver doesn't
use interrupts. Remove it.

The kfree(s->private) needs to remain to free the memory allocated
in subdev_700_init().

Signed-off-by: H Hartley Sweeten <[email protected]>
Cc: Ian Abbott <[email protected]>
Cc: Frank Mori Hess <[email protected]>
Cc: Greg Kroah-hartman <[email protected]>
---
drivers/staging/comedi/drivers/ni_daq_700.c | 5 +----
1 file changed, 1 insertion(+), 4 deletions(-)

diff --git a/drivers/staging/comedi/drivers/ni_daq_700.c b/drivers/staging/comedi/drivers/ni_daq_700.c
index 2f84934..525f076 100644
--- a/drivers/staging/comedi/drivers/ni_daq_700.c
+++ b/drivers/staging/comedi/drivers/ni_daq_700.c
@@ -69,7 +69,6 @@ struct dio700_board {
struct subdev_700_struct {
unsigned long cb_arg;
int (*cb_func) (int, int, int, unsigned long);
- int have_irq;
};

#define CALLBACK_ARG (((struct subdev_700_struct *)s->private)->cb_arg)
@@ -166,9 +165,7 @@ static void subdev_700_cleanup(struct comedi_device *dev,
struct comedi_subdevice *s)
{
if (s->private)
- if (subdevpriv->have_irq)
-
- kfree(s->private);
+ kfree(s->private);
}

static int dio700_attach(struct comedi_device *dev, struct comedi_devconfig *it)
--
1.7.11


2012-06-25 07:31:42

by Dan Carpenter

[permalink] [raw]
Subject: Re: [PATCH 17/31] staging: comedi: ni_daq_700: remove unused private data variable

On Fri, Jun 22, 2012 at 04:26:46PM -0700, H Hartley Sweeten wrote:
> The 'have_irq' variable is not needed since this driver doesn't
> use interrupts. Remove it.
>
> The kfree(s->private) needs to remain to free the memory allocated
> in subdev_700_init().
>

Hm... That's weird. The function which set have_irq to 1 was never
called and you already removed it in a previous patch.

So this fixes a memory leak right? Because the kfree() was never
called in the original code. Please mark bug fixes as special if
you can.

> #define CALLBACK_ARG (((struct subdev_700_struct *)s->private)->cb_arg)
> @@ -166,9 +165,7 @@ static void subdev_700_cleanup(struct comedi_device *dev,
> struct comedi_subdevice *s)
> {
> if (s->private)
> - if (subdevpriv->have_irq)
> -
> - kfree(s->private);
> + kfree(s->private);

You could also remove the: "if (s->private)" check.

regards,
dan carpenter