git: async_rcvd: Fix possible deadlock

Sepherosa Ziehau sephe at crater.dragonflybsd.org
Sun Mar 10 18:57:40 PDT 2013


commit d4cbc55116b8cf96243f52483e50d48e08a50bf2
Author: Sepherosa Ziehau <sephe at dragonflybsd.org>
Date:   Mon Mar 11 09:50:05 2013 +0800

    async_rcvd: Fix possible deadlock
    
    It is possible when we try dropping the asynchronized rcvd message, the
    message is not on the msgport yet, but sendmsg_stage1 is done, i.e.
    MSG_DONE is cleared.  Originally we were waiting for the MSG_DONE to be
    set, however, it will _never_ be set, since the message dropping is done
    in the netisr and the MSG_DONE will only be turned on when the message
    is dequeued and runs in the _same_ netisr.
    
    Fixing this deadlock by keeping dropping the asynchronized rcvd message,
    if the message's MSG_DONE flag is not set.
    
    Reported-by: pavalos@

Summary of changes:
 sys/kern/uipc_msg.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/d4cbc55116b8cf96243f52483e50d48e08a50bf2


-- 
DragonFly BSD source repository



More information about the Commits mailing list