Enable interrupts during open to avoid NULL pointer access in interrupt handler.

This commit is contained in:
Thomas Doerfler
2009-10-13 11:34:49 +00:00
parent 94d7bd743c
commit 7cafde2296
2 changed files with 14 additions and 2 deletions
+5
View File
@@ -1,3 +1,8 @@
2009-10-13 Sebastian Huber <sebastian.huber@embedded-brains.de>
* libchip/serial/ns16550.c: Enable interrupts during open to avoid
NULL pointer access in interrupt handler.
2009-10-09 Sebastian Huber <sebastian.huber@embedded-brains.de>
* libchip/i2c/spi-sd-card.c, libchip/ide/ata.c: Update for block
+9 -2
View File
@@ -173,6 +173,9 @@ NS16550_STATIC int ns16550_open(
rtems_libio_open_close_args_t *oc = (rtems_libio_open_close_args_t *) arg;
struct rtems_termios_tty *tty = (struct rtems_termios_tty *) oc->iop->data1;
console_tbl *c = &Console_Port_Tbl [minor];
console_data *d = &Console_Port_Data [minor];
d->termios_data = tty;
/* Assert DTR */
if (c->pDeviceFlow != &ns16550_flow_DTRCTS) {
@@ -182,6 +185,10 @@ NS16550_STATIC int ns16550_open(
/* Set initial baud */
rtems_termios_set_initial_baud( tty, (int32_t) c->pDeviceParams);
if (c->pDeviceFns->deviceOutputUsesInterrupts) {
ns16550_enable_interrupts( minor, NS16550_ENABLE_ALL_INTR_EXCEPT_TX);
}
return RTEMS_SUCCESSFUL;
}
@@ -202,6 +209,8 @@ NS16550_STATIC int ns16550_close(
ns16550_negate_DTR(minor);
}
ns16550_enable_interrupts(minor, NS16550_DISABLE_ALL_INTR);
return(RTEMS_SUCCESSFUL);
}
@@ -648,8 +657,6 @@ NS16550_STATIC void ns16550_initialize_interrupts( int minor)
}
}
#endif
ns16550_enable_interrupts( minor, NS16550_ENABLE_ALL_INTR_EXCEPT_TX);
}
/*