Re: [patch] HID: picoLCD: fix a NULL test in picolcd_raw_cir()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, 07 September 2012 Dan Carpenter <dan.carpenter@xxxxxxxxxx> wrote:
> Smatch complains that the NULL checking in this function is not
> consistent and could lead to a NULL dereference.  The comments say that
> we should return here if rc_dev is NULL so I've changed the test to
> match the comment.

Good catch! Currently thanks to HID mutex around probe()/remove()
we should never be able to see rc_dev being NULL here.


Once the probe()/remove() mutex gets tied to hw_start()/hw_stop() or
otherwise changed to allow drivers to chat with device during probe()
->rc_dev might be NULL in picolcd_raw_cir().


Reviewed-by: Bruno Prémont <bonbons@xxxxxxxxxxxxxxxxx>

Jiri, please apply to picolcd branch.

Thanks,
Bruno


> Signed-off-by: Dan Carpenter <dan.carpenter@xxxxxxxxxx>
> ---
> Only needed in linux-next.  This is a static checker fix and I don't
> have the hardware to test it.  Please review carefully.
> 
> diff --git a/drivers/hid/hid-picolcd_cir.c b/drivers/hid/hid-picolcd_cir.c
> index 14c5ce0..13ca919 100644
> --- a/drivers/hid/hid-picolcd_cir.c
> +++ b/drivers/hid/hid-picolcd_cir.c
> @@ -51,7 +51,7 @@ int picolcd_raw_cir(struct picolcd_data *data,
>  
>  	/* ignore if rc_dev is NULL or status is shunned */
>  	spin_lock_irqsave(&data->lock, flags);
> -	if (data->rc_dev && (data->status & PICOLCD_CIR_SHUN)) {
> +	if (!data->rc_dev || (data->status & PICOLCD_CIR_SHUN)) {
>  		spin_unlock_irqrestore(&data->lock, flags);
>  		return 1;
>  	}
--
To unsubscribe from this list: send the line "unsubscribe kernel-janitors" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Kernel Development]     [Kernel Announce]     [Kernel Newbies]     [Linux Networking Development]     [Share Photos]     [IDE]     [Security]     [Git]     [Netfilter]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Device Mapper]

  Powered by Linux