shm_mq: Third attempt at fixing nowait behavior in shm_mq_receive.
Commit a1480ec1 purported to fix the problems with commit b2ccb5f4, but it didn't completely fix them. The problem is that the checks were performed in the wrong order, leading to a race condition. If the sender attached, sent a message, and detached after the receiver called shm_mq_get_sender and before the receiver called shm_mq_counterparty_gone, we'd incorrectly return SHM_MQ_DETACHED before all messages were read. Repair by reversing the order of operations, and add a long comment explaining why this new logic is (hopefully) correct.
Showing
Please register or sign in to comment