--- serial.c.orig Fri Dec 21 20:41:54 2001 +++ serial.c Fri Jan 25 15:00:20 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; }