Re: usb: gadget: f_uac1: convert to new function interface with backward compatibility

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

 



Hello Dan,

Thanks for this check.

W dniu 31.10.2014 o 14:06, Dan Carpenter pisze:
Hello Andrzej Pietrasiewicz,

This is a semi-automatic email about new static checker warnings.


<snip>


drivers/usb/gadget/function/u_uac1.c
    210	
    211		opts = container_of(card->func.fi, struct f_uac1_opts, func_inst);
                                     ^^^^^^^^^^^^^
New dereference.

    212		fn_play = opts->fn_play;
                           ^^^^^^^^^^^^^
Technically, I think the container_of() just does pointer math and the
actual dereference is here.  I'm not sure, either way it's dereferenced.

    213		fn_cap = opts->fn_cap;
    214		fn_cntl = opts->fn_cntl;
    215	
    216		if (!card)
                     ^^^^^
Existing code assumes card can be NULL.


gaudio_open_snd_dev() is called from gaudio_setup(), which is called
when this function instance is first bound and the card parameter
is propagated from f_audio_bind().

In f_audio_bind() the audio local variable is dereferenced to get
the "card". audio itself is a container_of struct usb_function
and also contains struct gaudio (as a regular member, not a pointer).
So if the said usb_function is non-NULL, its container's "card" member
is non-NULL either.

The struct usb_function is passed from composite.c:usb_add_function()
where it is assumed to be non-NULL. This means that the check in line 216
is not needed.

Actually in the circulation there has been your patch:

5d5515f389a0db9da5ee85481a5939508aa31dec
usb: gadget: f_uac1: remove an unneeded NULL check

which implements exactly what I described above.

AP

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux