Hi.

The following patch fixes an interrupt flag bug in irtty.c
as per the stanford team's report way back. Applies against
224-ac18.


--- linux-244-ac18-clean/drivers/net/irda/irtty.c       Sat May 19 20:59:17 2001
+++ linux-244-ac18/drivers/net/irda/irtty.c     Sun May 27 21:56:14 2001
@@ -971,13 +971,17 @@
        switch (cmd) {
        case SIOCSBANDWIDTH: /* Set bandwidth */
                if (!capable(CAP_NET_ADMIN))
-                       return -EPERM;
-               irda_task_execute(self, irtty_change_speed, NULL, NULL, 
-                                 (void *) irq->ifr_baudrate);
+                       ret = -EPERM;
+               else
+                       irda_task_execute(self, irtty_change_speed, NULL, NULL, 
+                                         (void *) irq->ifr_baudrate);
                break;
        case SIOCSDONGLE: /* Set dongle */
-               if (!capable(CAP_NET_ADMIN))
-                       return -EPERM;
+               if (!capable(CAP_NET_ADMIN)) {
+                       ret = -EPERM;
+                       break;
+               }
+
                /* Initialize dongle */
                dongle = irda_device_dongle_init(dev, irq->ifr_dongle);
                if (!dongle)
@@ -999,21 +1003,24 @@
                break;
        case SIOCSMEDIABUSY: /* Set media busy */
                if (!capable(CAP_NET_ADMIN))
-                       return -EPERM;
-               irda_device_set_media_busy(self->netdev, TRUE);
+                       ret = -EPERM;
+               else
+                       irda_device_set_media_busy(self->netdev, TRUE);
                break;
        case SIOCGRECEIVING: /* Check if we are receiving right now */
                irq->ifr_receiving = irtty_is_receiving(self);
                break;
        case SIOCSDTRRTS:
                if (!capable(CAP_NET_ADMIN))
-                       return -EPERM;
-               irtty_set_dtr_rts(dev, irq->ifr_dtr, irq->ifr_rts);
+                       ret = -EPERM;
+               else
+                       irtty_set_dtr_rts(dev, irq->ifr_dtr, irq->ifr_rts);
                break;
        case SIOCSMODE:
                if (!capable(CAP_NET_ADMIN))
-                       return -EPERM;
-               irtty_set_mode(dev, irq->ifr_mode);
+                       ret = -EPERM;
+               else
+                       irtty_set_mode(dev, irq->ifr_mode);
                break;
        default:
                ret = -EOPNOTSUPP;
-- 
Regards,
        Rasmus([EMAIL PROTECTED])

Things are more like they are now than they ever were before.
-Former U.S. President Dwight D. Eisenhower
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to