Am 17.03.2012 18:36, schrieb santosh nayak:
> From: Santosh Nayak <[email protected]>
> 
> Use uninterruptable sleep lock  'mutex_lock()'  in place of
> mutex_lock_interruptible() because there is no userspace
> for s2250_probe().
> 
> Return -ENOMEM   if kzalloc() fails to allocate and initialize.
> 
> Signed-off-by: Santosh Nayak <[email protected]>
> ---
>  drivers/staging/media/go7007/s2250-board.c |   43 +++++++++++++++------------
>  1 files changed, 24 insertions(+), 19 deletions(-)
> 
> diff --git a/drivers/staging/media/go7007/s2250-board.c 
> b/drivers/staging/media/go7007/s2250-board.c
> index 014d384..1406a37 100644
> --- a/drivers/staging/media/go7007/s2250-board.c
> +++ b/drivers/staging/media/go7007/s2250-board.c
> @@ -637,27 +637,32 @@ static int s2250_probe(struct i2c_client *client,
>       state->audio_input = 0;
>       write_reg(client, 0x08, 0x02); /* Line In */
>  
> -     if (mutex_lock_interruptible(&usb->i2c_lock) == 0) {
> -             data = kzalloc(16, GFP_KERNEL);
> -             if (data != NULL) {
> -                     int rc;
> -                     rc = go7007_usb_vendor_request(go, 0x41, 0, 0,
> -                                                    data, 16, 1);
> -                     if (rc > 0) {
> -                             u8 mask;
> -                             data[0] = 0;
> -                             mask = 1<<5;
> -                             data[0] &= ~mask;
> -                             data[1] |= mask;
> -                             go7007_usb_vendor_request(go, 0x40, 0,
> -                                                       (data[1]<<8)
> -                                                       + data[1],
> -                                                       data, 16, 0);
> -                     }
> -                     kfree(data);
> -             }
> +     mutex_lock(&usb->i2c_lock);
> +     data = kzalloc(16, GFP_KERNEL);
> +     if (data == NULL) {
> +             i2c_unregister_device(audio);
> +             kfree(state);
>               mutex_unlock(&usb->i2c_lock);
> +             return -ENOMEM;
> +     } else {
> +             int rc;
> +             rc = go7007_usb_vendor_request(go, 0x41, 0, 0,
> +                                            data, 16, 1);
> +             if (rc > 0) {
> +                     u8 mask;
> +                     data[0] = 0;
> +                     mask = 1<<5;
> +                     data[0] &= ~mask;
> +                     data[1] |= mask;
> +                     go7007_usb_vendor_request(go, 0x40, 0,
> +                                               (data[1]<<8)
> +                                               + data[1],
> +                                               data, 16, 0);
> +             }
> +             kfree(data);
>       }
> +     mutex_unlock(&usb->i2c_lock);
> +
>  
>       v4l2_info(sd, "initialized successfully\n");
>       return 0;

hi,
You can drop the else
1. there is no 3. way
2. you can save 1 indent level

just one question: the (data[1]<<8)+ data[1] is intended ? always data[1] ?
(i have no clue, it is the original code, it just feels .. strange )

re,
 wh
_______________________________________________
devel mailing list
[email protected]
http://driverdev.linuxdriverproject.org/mailman/listinfo/devel

Reply via email to