[PATCH] isdn iprofd hang ttyI1...

From: Andrea Baldoni (abaldoni@xcal.net)
Date: Wed Jan 03 2001 - 14:58:34 EST


Hello!

The iprofd contained in isdnutils 3.0 use the same buffer and buffer size
in GETting and SETting via IOCTL IIOC[GS]ETPRF the virtual modem profiles.

The kernel use different sizes, so iprofd set incorrect data, resulting in a
hang of the ttyI from 1 to last. I suppose the right way to implement profile
save & restore will be kernel-version independent and maybe I will work on
that, but at the moment I made the IIOCGETPRF and IIOCSETPRF IOCTLs symmetric:

patch (for 2.4.0-prerelease)

--- drivers/isdn/isdn_common.c.orig Wed Jan 3 20:39:30 2001
+++ drivers/isdn/isdn_common.c Wed Jan 3 20:42:16 2001
@@ -1512,7 +1512,7 @@
                                         int i;
 
                                         if ((ret = verify_area(VERIFY_READ, (void *) arg,
- (ISDN_MODEM_NUMREG + ISDN_MSNLEN)
+ (ISDN_MODEM_NUMREG + ISDN_MSNLEN + ISDN_LMSNLEN)
                                                    * ISDN_MAX_CHANNELS)))
                                                 return ret;
 
@@ -1521,6 +1521,9 @@
                                                      ISDN_MODEM_NUMREG))
                                                         return -EFAULT;
                                                 p += ISDN_MODEM_NUMREG;
+ if (copy_from_user(dev->mdm.info[i].emu.plmsn, p, ISDN_LMSNLEN))
+ return -EFAULT;
+ p += ISDN_LMSNLEN;
                                                 if (copy_from_user(dev->mdm.info[i].emu.pmsn, p, ISDN_MSNLEN))
                                                         return -EFAULT;
                                                 p += ISDN_MSNLEN;

Ciao,
 Andrea Baldoni
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Sun Jan 07 2001 - 21:00:16 EST