Re: [PATCH] usb: gadget: Check for NULL pointer in disconnect

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

 



> Do you really see some udc drivers call it after composite_unbind is
> called? If it is, you may add dump_stack() to track that error.
>
> Besides this, function suspended_show is needed to add cdev NULL pointer
> checking.

We see this happening occasionally in *not yet* upstreamed UDC
code of some vendors (Yes, disconnect being called after unbind)
After reviewing the entire composite.c file, I did notice that
none of the functions check for NULL pointer when cdev is
obtained from get_gadget_data.
Is crashing/bringing down the whole kernel intentionally
left to happen ? Isn't printing a WARN/ERROR msg and
returning not the preferable approach ?

On 03/22/2015 12:43 AM, Peter Chen wrote:
On Fri, Mar 20, 2015 at 04:40:52PM -0700, Badhri Jagan Sridharan wrote:
Added a safety net to make sure that
composite_disconnect does not end up disconneting
a NULL device. Prevents NULL pointer crash.

Signed-off-by: Badhri Jagan Sridharan <Badhri@xxxxxxxxxx>
---
  drivers/usb/gadget/composite.c | 5 +++++
  1 file changed, 5 insertions(+)

diff --git a/drivers/usb/gadget/composite.c b/drivers/usb/gadget/composite.c
index 13adfd1..90b37bd 100644
--- a/drivers/usb/gadget/composite.c
+++ b/drivers/usb/gadget/composite.c
@@ -1823,6 +1823,11 @@ void composite_disconnect(struct usb_gadget *gadget)
  	struct usb_composite_dev	*cdev = get_gadget_data(gadget);
  	unsigned long			flags;

+	if (!cdev) {
+		WARN(1, "Trying to disconnect a NULL composite device\n");
+		return;
+	}
+

Do you really see some udc drivers call it after composite_unbind is
called? If it is, you may add dump_stack() to track that error.

Besides this, function suspended_show is needed to add cdev NULL pointer
checking.

  	/* REVISIT:  should we have config and device level
  	 * disconnect callbacks?
  	 */
--
2.2.0.rc0.207.ga3a616c

--
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

--
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