Hello, the following patch fixes:
2007-08-22 Wolfgang Grandegger <[EMAIL PROTECTED]> * ksrc/drivers/can/rtcan_socket.c: protect the list of sockets per device properly when adding or deleting sockets. It should be applied to Xenomai's trunk and v2.3.x branch. Wolfgang.
Index: ChangeLog =================================================================== --- ChangeLog (revision 2945) +++ ChangeLog (working copy) @@ -1,3 +1,8 @@ +2007-08-22 Wolfgang Grandegger <[EMAIL PROTECTED]> + + * ksrc/drivers/can/rtcan_socket.c: protect the list of sockets + per device properly when adding or deleting sockets. + 2007-08-18 Philippe Gerum <[EMAIL PROTECTED]> * RELEASE: Xenomai 2.4-rc2 Index: ksrc/drivers/can/rtcan_socket.c =================================================================== --- ksrc/drivers/can/rtcan_socket.c (revision 2945) +++ ksrc/drivers/can/rtcan_socket.c (working copy) @@ -37,6 +37,7 @@ LIST_HEAD(rtcan_socket_list); void rtcan_socket_init(struct rtdm_dev_context *context) { struct rtcan_socket *sock = (struct rtcan_socket *)&context->dev_private; + rtdm_lockctx_t lock_ctx; rtdm_sem_init(&sock->recv_sem, 0); @@ -56,7 +57,10 @@ void rtcan_socket_init(struct rtdm_dev_c sock->rx_timeout = RTDM_TIMEOUT_INFINITE; INIT_LIST_HEAD(&sock->tx_wait_head); + + rtdm_lock_get_irqsave(&rtcan_socket_lock, lock_ctx); list_add(&sock->socket_list, &rtcan_socket_list); + rtdm_lock_put_irqrestore(&rtcan_socket_lock, lock_ctx); } @@ -64,6 +68,7 @@ void rtcan_socket_cleanup(struct rtdm_de { struct rtcan_socket *sock = (struct rtcan_socket *)&context->dev_private; struct tx_wait_queue *tx_waiting; + rtdm_lockctx_t lock_ctx; int tx_list_empty; @@ -91,5 +96,8 @@ void rtcan_socket_cleanup(struct rtdm_de } while (!tx_list_empty); rtdm_sem_destroy(&sock->recv_sem); + + rtdm_lock_get_irqsave(&rtcan_socket_lock, lock_ctx); list_del(&sock->socket_list); + rtdm_lock_put_irqrestore(&rtcan_socket_lock, lock_ctx); }
_______________________________________________ Xenomai-core mailing list Xenomai-core@gna.org https://mail.gna.org/listinfo/xenomai-core