Skip to contentSkip to conversation

pcmcia/serial release of memory I/O twice

PATCH New Jose Alonso 1 participant 1 message Mar 3, 2004 TTY layer and serial drivers

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 pcmcia/serial release of memory I/O twice

I am using a pcmcia modem (linux-2.6.3) and when I unplug the card the kernel warms:
"kernel: Trying to free nonexistent resource <000003e8-000003ef>"

The I/O address is allocated by pcmcia_request_io and released by serial8250_release_port and pcmcia_release_io.

The allocation of I/O address is done in:
module serial_cs:
simple_config:

    pcmcia_request_io  ---> allocate I/O address
    setup_serial ... serial8250_request_port --> doesn't allocate I/O
                     because flag UPF_RESOURCES is not set.

The release of I/O address is done in:
module serial_cs:
serial_remove:

    unregister_serial ... serial8250_release_port ---> release I/O
    pcmcia_release_io ---> release again the I/O

I suggest the patch bellow:
"serial8250_release_port undo only what serial8250_request_port does"

--- linux-2.6.3/drivers/serial/8250.c.ORIG 2004-02-18 00:57:14.000000000
-0300
+++ linux-2.6.3/drivers/serial/8250.c 2004-03-03 11:26:27.757353637 -
0300
@@ -1670,6 +1670,8 @@
struct uart_8250_port *up = (struct uart_8250_port *)port; unsigned long start, offset = 0, size = 0;

+ if (!(up->port.flags & UPF_RESOURCES))
+ return;
if (up->port.type == PORT_RSA) {
offset = UART_RSA_BASE << up->port.regshift; size = 8;

Signature · 1 line
     alonso