Hi,
  I have found a bug. It is in support of serial cards which uses memory 
for I/O
insted of ports. I made a patch for serial.c and fix one place, but 
probably the
problem like this one could be somewhere else.
Description:
  If you try to use setserial with such cards you will get "Address in 
use" (-EADDRINUSE)
Best regards,
                      Kurakin Roman
--- serial.c.orig	Mon Feb 11 11:54:21 2002
+++ serial.c	Mon Feb 11 11:55:44 2002
@@ -2084,6 +2084,7 @@
         unsigned int		i,change_irq,change_port;
         int 			retval = 0;
         unsigned long		new_port;
+	unsigned long           new_mem;
 
         if (copy_from_user(&new_serial,new_info,sizeof(new_serial)))
                 return -EFAULT;
@@ -2094,6 +2095,8 @@
         if (HIGH_BITS_OFFSET)
                 new_port += (unsigned long) new_serial.port_high << HIGH_BITS_OFFSET;
 
+	new_mem = new_serial.iomem_base;
+
         change_irq = new_serial.irq != state->irq;
         change_port = (new_port != ((int) state->port)) ||
                 (new_serial.hub6 != state->hub6);
@@ -2134,6 +2137,7 @@
                 for (i = 0 ; i < NR_PORTS; i++)
                         if ((state != &rs_table[i]) &&
                             (rs_table[i].port == new_port) &&
+			    (rs_table[i].iomem_base == new_mem) &&
                             rs_table[i].type)
                                 return -EADDRINUSE;
         }
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/
This archive was generated by hypermail 2b29 : Fri Feb 15 2002 - 21:00:37 EST