Red Hat Bugzilla – Bug 210453
gnbd handles signals outside process context
Last modified: 2009-04-16 15:58:13 EDT
Description of problem:
Processes accessing a GFS filesystem backed by gnbd devices become stuck in D
At the time of the hangs messages appear on the client nodes from gnbd:
Sep 4 14:06:01 HPC2 sshd(pam_unix): session closed for user jopan
Sep 4 14:08:54 HPC2 kernel: gnbd (pid 18821: MakeNearBnBtJPE) got signal 9
Sep 4 14:08:54 HPC2 kernel: gnbd5: Send control failed (result -4)
Sep 4 14:10:17 HPC2 sshd(pam_unix): session opened for user jopan by (uid=0)
Sep 4 14:10:19 HPC2 sshd(pam_unix): session closed for user jopan
It looks like sock_xmit is being called via do_gnbd_request and gnbd_send_req
outside process context (softirq?).
At this time, current evaluates to the last process to be scheduled instead of
the gnbd thread. If the process happens to have a signal pending when we return
from sock_sendmsg, sock_xmit incorrectly dequeues it and returns -EINTR.
We should only attempt signal handling when running in the context of the gnbd
An advisory has been issued which should help the problem
described in this bug report. This report is therefore being
closed with a resolution of ERRATA. For more information
on the solution and/or where to find the updated files,
please follow the link below. You may reopen this bug report
if the solution does not work for you.