2009-12-09 13:23:31

by Julia Lawall

[permalink] [raw]
Subject: [PATCH] drivers/usb/gadget: Use ERR_PTR/IS_ERR

From: Julia Lawall <[email protected]>

Use ERR_PTR and IS_ERR rather than mixing integers and pointers.

The semantic match that finds this problem is as follows:
(http://coccinelle.lip6.fr/)

// <smpl>
@@
expression *E;
@@

* E < 0
// </smpl>

Signed-off-by: Julia Lawall <[email protected]>

---
drivers/usb/gadget/f_audio.c | 8 +++++---
1 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/drivers/usb/gadget/f_audio.c b/drivers/usb/gadget/f_audio.c
index c43c89f..0f2eee1 100644
--- a/drivers/usb/gadget/f_audio.c
+++ b/drivers/usb/gadget/f_audio.c
@@ -252,12 +252,12 @@ static struct f_audio_buf *f_audio_buffer_alloc(int buf_size)

copy_buf = kzalloc(sizeof *copy_buf, GFP_ATOMIC);
if (!copy_buf)
- return (struct f_audio_buf *)-ENOMEM;
+ return ERR_PTR(-ENOMEM);

copy_buf->buf = kzalloc(buf_size, GFP_ATOMIC);
if (!copy_buf->buf) {
kfree(copy_buf);
- return (struct f_audio_buf *)-ENOMEM;
+ return ERR_PTR(-ENOMEM);
}

return copy_buf;
@@ -332,7 +332,7 @@ static int f_audio_out_ep_complete(struct usb_ep *ep, struct usb_request *req)
list_add_tail(&copy_buf->list, &audio->play_queue);
schedule_work(&audio->playback_work);
copy_buf = f_audio_buffer_alloc(audio_buf_size);
- if (copy_buf < 0)
+ if (IS_ERR(copy_buf))
return -ENOMEM;
}

@@ -576,6 +576,8 @@ static int f_audio_set_alt(struct usb_function *f, unsigned intf, unsigned alt)
usb_ep_enable(out_ep, audio->out_desc);
out_ep->driver_data = audio;
audio->copy_buf = f_audio_buffer_alloc(audio_buf_size);
+ if (IS_ERR(audio->copy_buf))
+ return -ENOMEM;

/*
* allocate a bunch of read buffers


2009-12-11 03:20:19

by David Brownell

[permalink] [raw]
Subject: Re: [PATCH] drivers/usb/gadget: Use ERR_PTR/IS_ERR

On Wednesday 09 December 2009, Julia Lawall wrote:
> From: Julia Lawall <[email protected]>
>
> Use ERR_PTR and IS_ERR rather than mixing integers and pointers.
>
> The semantic match that finds this problem is as follows:
> (http://coccinelle.lip6.fr/)
>
> // <smpl>
> @@
> expression *E;
> @@
>
> * E < 0
> // </smpl>
>
> Signed-off-by: Julia Lawall <[email protected]>

Acked-by: David Brownell <[email protected]>

>
> ---
> drivers/usb/gadget/f_audio.c | 8 +++++---
> 1 files changed, 5 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/usb/gadget/f_audio.c b/drivers/usb/gadget/f_audio.c
> index c43c89f..0f2eee1 100644
> --- a/drivers/usb/gadget/f_audio.c
> +++ b/drivers/usb/gadget/f_audio.c
> @@ -252,12 +252,12 @@ static struct f_audio_buf *f_audio_buffer_alloc(int buf_size)
>
> copy_buf = kzalloc(sizeof *copy_buf, GFP_ATOMIC);
> if (!copy_buf)
> - return (struct f_audio_buf *)-ENOMEM;
> + return ERR_PTR(-ENOMEM);
>
> copy_buf->buf = kzalloc(buf_size, GFP_ATOMIC);
> if (!copy_buf->buf) {
> kfree(copy_buf);
> - return (struct f_audio_buf *)-ENOMEM;
> + return ERR_PTR(-ENOMEM);
> }
>
> return copy_buf;
> @@ -332,7 +332,7 @@ static int f_audio_out_ep_complete(struct usb_ep *ep, struct usb_request *req)
> list_add_tail(&copy_buf->list, &audio->play_queue);
> schedule_work(&audio->playback_work);
> copy_buf = f_audio_buffer_alloc(audio_buf_size);
> - if (copy_buf < 0)
> + if (IS_ERR(copy_buf))
> return -ENOMEM;
> }
>
> @@ -576,6 +576,8 @@ static int f_audio_set_alt(struct usb_function *f, unsigned intf, unsigned alt)
> usb_ep_enable(out_ep, audio->out_desc);
> out_ep->driver_data = audio;
> audio->copy_buf = f_audio_buffer_alloc(audio_buf_size);
> + if (IS_ERR(audio->copy_buf))
> + return -ENOMEM;
>
> /*
> * allocate a bunch of read buffers
>
>