peers/xsegbd: Possible NULL ptr deref in release
authorStratos Psomadakis <psomas@grnet.gr>
Tue, 29 May 2012 14:18:25 +0000 (17:18 +0300)
committerStratos Psomadakis <psomas@grnet.gr>
Wed, 6 Jun 2012 11:58:50 +0000 (14:58 +0300)
xseg/peers/kernel/xsegbd.c

index 3da3b03..5ee7af4 100644 (file)
@@ -277,11 +277,13 @@ static void xsegbd_dev_release(struct device *dev)
        }
 
        /* reset the port's waitcue (aka cancel_wait) */
-       port = &xsegbd.xseg->ports[xsegbd_dev->src_portno];
-       port->waitcue = (long) NULL;
-
-       xseg_free_requests(xsegbd.xseg, xsegbd_dev->src_portno, xsegbd_dev->nr_requests);
+       if ((port = &xsegbd.xseg->ports[xsegbd_dev->src_portno]) != NULL) {
+               port->waitcue = (long) NULL;
 
+               if (xseg_free_requests(xsegbd.xseg, xsegbd_dev->src_portno, xsegbd_dev->nr_requests) != 0)
+                       XSEGLOG("Error trying to free requests!\n");
+       }
+       
        WARN_ON(nr_pending < xsegbd_dev->nr_requests);
        spin_lock_irq(&__lock);
        nr_pending -= xsegbd_dev->nr_requests;