OSDN Git Service

USB: gadget: serial: Fix debugfs crash
authorArumuga Durai A <cadurai@codeaurora.org>
Thu, 5 May 2016 07:23:29 +0000 (12:53 +0530)
committerGerrit - the friendly Code Review server <code-review@localhost>
Fri, 15 Jul 2016 09:36:33 +0000 (02:36 -0700)
Serial function driver creates debugfs files even though ports
are not allocated. Fetching/reading those files without allocation
of ports leads to crash. Check port allocation before creating
the files.

Change-Id: I85b050a261cca6f961d5d9058efb8b7facf242ce
Signed-off-by: Arumuga Durai A <cadurai@codeaurora.org>
drivers/usb/gadget/function/u_serial.c

index bea936a..e0b7794 100644 (file)
@@ -1258,6 +1258,9 @@ static ssize_t debug_read_status(struct file *file, char __user *ubuf,
        int ret;
        int result = 0;
 
+       if (!ui_dev)
+               return -EINVAL;
+
        tty = ui_dev->port.tty;
        gser = ui_dev->port_usb;
 
@@ -1307,6 +1310,9 @@ static ssize_t debug_write_reset(struct file *file, const char __user *buf,
        struct gs_port *ui_dev = file->private_data;
        unsigned long flags;
 
+       if (!ui_dev)
+               return -EINVAL;
+
        spin_lock_irqsave(&ui_dev->port_lock, flags);
        ui_dev->nbytes_from_host = ui_dev->nbytes_to_tty =
                ui_dev->nbytes_from_tty = ui_dev->nbytes_to_host = 0;
@@ -1336,6 +1342,9 @@ static void usb_debugfs_init(struct gs_port *ui_dev, int port_num)
 {
        char buf[48];
 
+       if (!ui_dev)
+               return;
+
        snprintf(buf, 48, "usb_serial%d", port_num);
        gs_dent = debugfs_create_dir(buf, 0);
        if (!gs_dent || IS_ERR(gs_dent))