2005-05-10 19:02:08

by Jesper Juhl

[permalink] [raw]
Subject: [PATCH] bluetooth: kill redundant NULL checks and casts before kfree

(please keep me on CC when replying)


There's no need to check for NULL before calling kfree() on a pointer, and
since kfree() takes a void* argument there's no need to cast pointers to
other types before passing them to kfree().
This patch cleans that up in drivers/bluetooth/

Please apply.


Signed-off-by: Jesper Juhl <[email protected]>
---

drivers/bluetooth/bpa10x.c | 7 ++-----
drivers/bluetooth/hci_usb.c | 6 ++----
drivers/bluetooth/hci_vhci.c | 8 +++-----
3 files changed, 7 insertions(+), 14 deletions(-)

diff -upr linux-2.6.12-rc3-mm3-orig/drivers/bluetooth/bpa10x.c linux-2.6.12-rc3-mm3/drivers/bluetooth/bpa10x.c
--- linux-2.6.12-rc3-mm3-orig/drivers/bluetooth/bpa10x.c 2005-03-02 08:38:17.000000000 +0100
+++ linux-2.6.12-rc3-mm3/drivers/bluetooth/bpa10x.c 2005-05-10 20:53:56.000000000 +0200
@@ -367,11 +367,8 @@ static inline void bpa10x_free_urb(struc
if (!urb)
return;

- if (urb->setup_packet)
- kfree(urb->setup_packet);
-
- if (urb->transfer_buffer)
- kfree(urb->transfer_buffer);
+ kfree(urb->setup_packet);
+ kfree(urb->transfer_buffer);

usb_free_urb(urb);
}
diff -upr linux-2.6.12-rc3-mm3-orig/drivers/bluetooth/hci_usb.c linux-2.6.12-rc3-mm3/drivers/bluetooth/hci_usb.c
--- linux-2.6.12-rc3-mm3-orig/drivers/bluetooth/hci_usb.c 2005-04-30 18:24:53.000000000 +0200
+++ linux-2.6.12-rc3-mm3/drivers/bluetooth/hci_usb.c 2005-05-10 20:56:17.000000000 +0200
@@ -387,10 +387,8 @@ static void hci_usb_unlink_urbs(struct h
urb = &_urb->urb;
BT_DBG("%s freeing _urb %p type %d urb %p",
husb->hdev->name, _urb, _urb->type, urb);
- if (urb->setup_packet)
- kfree(urb->setup_packet);
- if (urb->transfer_buffer)
- kfree(urb->transfer_buffer);
+ kfree(urb->setup_packet);
+ kfree(urb->transfer_buffer);
_urb_free(_urb);
}

diff -upr linux-2.6.12-rc3-mm3-orig/drivers/bluetooth/hci_vhci.c linux-2.6.12-rc3-mm3/drivers/bluetooth/hci_vhci.c
--- linux-2.6.12-rc3-mm3-orig/drivers/bluetooth/hci_vhci.c 2005-04-30 18:24:53.000000000 +0200
+++ linux-2.6.12-rc3-mm3/drivers/bluetooth/hci_vhci.c 2005-05-10 20:58:23.000000000 +0200
@@ -78,12 +78,10 @@ static int hci_vhci_close(struct hci_dev

static void hci_vhci_destruct(struct hci_dev *hdev)
{
- struct hci_vhci_struct *vhci;
+ if (!hdev)
+ return;

- if (!hdev) return;
-
- vhci = (struct hci_vhci_struct *) hdev->driver_data;
- kfree(vhci);
+ kfree(hdev->driver_data)
}

static int hci_vhci_send_frame(struct sk_buff *skb)




2005-05-10 19:25:08

by Alexey Dobriyan

[permalink] [raw]
Subject: Re: [PATCH] bluetooth: kill redundant NULL checks and casts before kfree

On Tuesday 10 May 2005 23:05, Jesper Juhl wrote:

> There's no need to check for NULL before calling kfree() on a pointer, and
> since kfree() takes a void* argument there's no need to cast pointers to
> other types before passing them to kfree().

> + kfree(hdev->driver_data)

This won't compile.

2005-05-10 19:46:17

by Jesper Juhl

[permalink] [raw]
Subject: Re: [PATCH] bluetooth: kill redundant NULL checks and casts before kfree

On Tue, 10 May 2005, Alexey Dobriyan wrote:

> On Tuesday 10 May 2005 23:05, Jesper Juhl wrote:
>
> > There's no need to check for NULL before calling kfree() on a pointer, and
> > since kfree() takes a void* argument there's no need to cast pointers to
> > other types before passing them to kfree().
>
> > + kfree(hdev->driver_data)
>
> This won't compile.
>
Ouch. You are right.
I usually compile test patches, but I have to admit I didn't this time.
Sorry about that. Fixed patch below.


Signed-off-by: Jesper Juhl <[email protected]>
---

diff -upr linux-2.6.12-rc3-mm3-orig/drivers/bluetooth/bpa10x.c linux-2.6.12-rc3-mm3/drivers/bluetooth/bpa10x.c
--- linux-2.6.12-rc3-mm3-orig/drivers/bluetooth/bpa10x.c 2005-03-02 08:38:17.000000000 +0100
+++ linux-2.6.12-rc3-mm3/drivers/bluetooth/bpa10x.c 2005-05-10 20:53:56.000000000 +0200
@@ -367,11 +367,8 @@ static inline void bpa10x_free_urb(struc
if (!urb)
return;

- if (urb->setup_packet)
- kfree(urb->setup_packet);
-
- if (urb->transfer_buffer)
- kfree(urb->transfer_buffer);
+ kfree(urb->setup_packet);
+ kfree(urb->transfer_buffer);

usb_free_urb(urb);
}
diff -upr linux-2.6.12-rc3-mm3-orig/drivers/bluetooth/hci_usb.c linux-2.6.12-rc3-mm3/drivers/bluetooth/hci_usb.c
--- linux-2.6.12-rc3-mm3-orig/drivers/bluetooth/hci_usb.c 2005-04-30 18:24:53.000000000 +0200
+++ linux-2.6.12-rc3-mm3/drivers/bluetooth/hci_usb.c 2005-05-10 20:56:17.000000000 +0200
@@ -387,10 +387,8 @@ static void hci_usb_unlink_urbs(struct h
urb = &_urb->urb;
BT_DBG("%s freeing _urb %p type %d urb %p",
husb->hdev->name, _urb, _urb->type, urb);
- if (urb->setup_packet)
- kfree(urb->setup_packet);
- if (urb->transfer_buffer)
- kfree(urb->transfer_buffer);
+ kfree(urb->setup_packet);
+ kfree(urb->transfer_buffer);
_urb_free(_urb);
}

diff -upr linux-2.6.12-rc3-mm3-orig/drivers/bluetooth/hci_vhci.c linux-2.6.12-rc3-mm3/drivers/bluetooth/hci_vhci.c
--- linux-2.6.12-rc3-mm3-orig/drivers/bluetooth/hci_vhci.c 2005-04-30 18:24:53.000000000 +0200
+++ linux-2.6.12-rc3-mm3/drivers/bluetooth/hci_vhci.c 2005-05-10 21:46:48.000000000 +0200
@@ -78,12 +78,10 @@ static int hci_vhci_close(struct hci_dev

static void hci_vhci_destruct(struct hci_dev *hdev)
{
- struct hci_vhci_struct *vhci;
+ if (!hdev)
+ return;

- if (!hdev) return;
-
- vhci = (struct hci_vhci_struct *) hdev->driver_data;
- kfree(vhci);
+ kfree(hdev->driver_data);
}

static int hci_vhci_send_frame(struct sk_buff *skb)


2005-05-11 10:55:53

by Marcel Holtmann

[permalink] [raw]
Subject: Re: [PATCH] bluetooth: kill redundant NULL checks and casts before kfree

Hi Jesper,

> > > There's no need to check for NULL before calling kfree() on a pointer, and
> > > since kfree() takes a void* argument there's no need to cast pointers to
> > > other types before passing them to kfree().
> >
> > > + kfree(hdev->driver_data)
> >
> > This won't compile.
> >
> Ouch. You are right.
> I usually compile test patches, but I have to admit I didn't this time.
> Sorry about that. Fixed patch below.

the hci_vhci.c change is not needed, because I have a pending update for
that driver that already fixes this. The other two hunks are in my tree
now.

Regards

Marcel