2013-03-21 07:40:01

by Wei Yongjun

[permalink] [raw]
Subject: [PATCH] NFC: microread: use kfree_skb() instead of kfree()

From: Wei Yongjun <[email protected]>

Use kfree_skb() instead of kfree() to free sk_buff.

Signed-off-by: Wei Yongjun <[email protected]>
---
drivers/nfc/microread/mei.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/nfc/microread/mei.c b/drivers/nfc/microread/mei.c
index eef38cf..da8264c 100644
--- a/drivers/nfc/microread/mei.c
+++ b/drivers/nfc/microread/mei.c
@@ -130,7 +130,7 @@ static void microread_event_cb(struct mei_device *device, u32 events,

reply_size = mei_recv(device, skb->data, MEI_NFC_MAX_READ);
if (reply_size < MEI_NFC_HEADER_SIZE) {
- kfree(skb);
+ kfree_skb(skb);
return;
}




2013-03-21 13:57:58

by Wei Yongjun

[permalink] [raw]
Subject: Re: [linux-nfc] [PATCH] NFC: microread: use kfree_skb() instead of kfree()

On 03/21/2013 07:37 PM, Rymarkiewicz Waldemar wrote:
> Hi,
>
>> Use kfree_skb() instead of kfree() to free sk_buff.
>>
>> Signed-off-by: Wei Yongjun <[email protected]>
>> ---
>> drivers/nfc/microread/mei.c | 2 +-
>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/drivers/nfc/microread/mei.c b/drivers/nfc/microread/mei.c
>> index eef38cf..da8264c 100644
>> --- a/drivers/nfc/microread/mei.c
>> +++ b/drivers/nfc/microread/mei.c
>> @@ -130,7 +130,7 @@ static void microread_event_cb(struct mei_device *device, u32 events,
>>
>> reply_size = mei_recv(device, skb->data, MEI_NFC_MAX_READ);
>> if (reply_size < MEI_NFC_HEADER_SIZE) {
>> - kfree(skb);
>> + kfree_skb(skb);
>> return;
>> }
>
> kfree_skb call is used internally by the kernel. A driver should use dev_kfree_skb instead, I guess.

It seems that dev_kfree_skb() call when dev_alloc_skb() is used, and
kfree_skb() use to free skb malloced by alloc_skb().

Regards,
Yongjun Wei



2013-03-22 10:39:05

by Rymarkiewicz Waldemar

[permalink] [raw]
Subject: Re: [linux-nfc] [PATCH] NFC: microread: use kfree_skb() instead of kfree()

Hi,

>>
>> kfree_skb call is used internally by the kernel. A driver should use dev_kfree_skb instead, I guess.
>
> It seems that dev_kfree_skb() call when dev_alloc_skb() is used, and
> kfree_skb() use to free skb malloced by alloc_skb().

I agree. The driver should use dev_* flavoured skb function then.


Thanks,
/Waldek



2013-03-28 11:23:40

by Samuel Ortiz

[permalink] [raw]
Subject: Re: [linux-nfc] [PATCH] NFC: microread: use kfree_skb() instead of kfree()

Hi Waldemar,

On Fri, Mar 22, 2013 at 11:38:57AM +0100, Rymarkiewicz Waldemar wrote:
> Hi,
>
> >>
> >>kfree_skb call is used internally by the kernel. A driver should use dev_kfree_skb instead, I guess.
> >
> >It seems that dev_kfree_skb() call when dev_alloc_skb() is used, and
> >kfree_skb() use to free skb malloced by alloc_skb().
>
> I agree. The driver should use dev_* flavoured skb function then.
I'd prefer the driver to call nfc_alloc_recv_skb() instead. This one calls
alloc_skb() but we could have it call dev_alloc_skb() I suppose. dev_alloc_skb
does atomic allocation though.
And kfree_skb() or dev_kfree_skb() is essentially the same.

I'll fix the driver so that it calls nfc_alloc_recv_skb() and kfree_skb unless
Wei beats me at it.

Cheers,
Samuel.

--
Intel Open Source Technology Centre
http://oss.intel.com/

2013-03-21 11:37:18

by Rymarkiewicz Waldemar

[permalink] [raw]
Subject: Re: [linux-nfc] [PATCH] NFC: microread: use kfree_skb() instead of kfree()

Hi,

> Use kfree_skb() instead of kfree() to free sk_buff.
>
> Signed-off-by: Wei Yongjun <[email protected]>
> ---
> drivers/nfc/microread/mei.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/nfc/microread/mei.c b/drivers/nfc/microread/mei.c
> index eef38cf..da8264c 100644
> --- a/drivers/nfc/microread/mei.c
> +++ b/drivers/nfc/microread/mei.c
> @@ -130,7 +130,7 @@ static void microread_event_cb(struct mei_device *device, u32 events,
>
> reply_size = mei_recv(device, skb->data, MEI_NFC_MAX_READ);
> if (reply_size < MEI_NFC_HEADER_SIZE) {
> - kfree(skb);
> + kfree_skb(skb);
> return;
> }

kfree_skb call is used internally by the kernel. A driver should use
dev_kfree_skb instead, I guess.

Thanks,
/Waldek