]> git.hungrycats.org Git - linux/commitdiff
USB: serial: io_edgeport: fix use after free in debug printk
authorDan Carpenter <dan.carpenter@linaro.org>
Thu, 31 Oct 2024 09:48:30 +0000 (12:48 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 14 Nov 2024 12:15:18 +0000 (13:15 +0100)
commit 37bb5628379295c1254c113a407cab03a0f4d0b4 upstream.

The "dev_dbg(&urb->dev->dev, ..." which happens after usb_free_urb(urb)
is a use after free of the "urb" pointer.  Store the "dev" pointer at the
start of the function to avoid this issue.

Fixes: 984f68683298 ("USB: serial: io_edgeport.c: remove dbg() usage")
Cc: stable@vger.kernel.org
Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>
Signed-off-by: Johan Hovold <johan@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/serial/io_edgeport.c

index 3a4c0febf33589a88e5e3fc2e64e95c5f2c56504..67c0c51603e59c2734dd2d6150a00e43eabeb39c 100644 (file)
@@ -770,11 +770,12 @@ static void edge_bulk_out_data_callback(struct urb *urb)
 static void edge_bulk_out_cmd_callback(struct urb *urb)
 {
        struct edgeport_port *edge_port = urb->context;
+       struct device *dev = &urb->dev->dev;
        int status = urb->status;
 
        atomic_dec(&CmdUrbs);
-       dev_dbg(&urb->dev->dev, "%s - FREE URB %p (outstanding %d)\n",
-               __func__, urb, atomic_read(&CmdUrbs));
+       dev_dbg(dev, "%s - FREE URB %p (outstanding %d)\n", __func__, urb,
+               atomic_read(&CmdUrbs));
 
 
        /* clean up the transfer buffer */
@@ -784,8 +785,7 @@ static void edge_bulk_out_cmd_callback(struct urb *urb)
        usb_free_urb(urb);
 
        if (status) {
-               dev_dbg(&urb->dev->dev,
-                       "%s - nonzero write bulk status received: %d\n",
+               dev_dbg(dev, "%s - nonzero write bulk status received: %d\n",
                        __func__, status);
                return;
        }