From: Oleg Nesterov The only user of send_sigio_to_task() already holds tasklist_lock, so it is better not to send the signal via send_group_sig_info() (which takes tasklist recursively) but use group_send_sig_info(). The same change in send_sigurg()->send_sigurg_to_task(). Signed-off-by: Oleg Nesterov Cc: "Paul E. McKenney" Signed-off-by: Andrew Morton --- fs/fcntl.c | 6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-) diff -puN fs/fcntl.c~sigio-cleanup-dont-take-tasklist-twice fs/fcntl.c --- devel/fs/fcntl.c~sigio-cleanup-dont-take-tasklist-twice 2005-11-27 22:01:48.000000000 -0800 +++ devel-akpm/fs/fcntl.c 2005-11-27 22:01:48.000000000 -0800 @@ -457,11 +457,11 @@ static void send_sigio_to_task(struct ta else si.si_band = band_table[reason - POLL_IN]; si.si_fd = fd; - if (!send_group_sig_info(fown->signum, &si, p)) + if (!group_send_sig_info(fown->signum, &si, p)) break; /* fall-through: fall back on the old plain SIGIO signal */ case 0: - send_group_sig_info(SIGIO, SEND_SIG_PRIV, p); + group_send_sig_info(SIGIO, SEND_SIG_PRIV, p); } } @@ -495,7 +495,7 @@ static void send_sigurg_to_task(struct t struct fown_struct *fown) { if (sigio_perm(p, fown, SIGURG)) - send_group_sig_info(SIGURG, SEND_SIG_PRIV, p); + group_send_sig_info(SIGURG, SEND_SIG_PRIV, p); } int send_sigurg(struct fown_struct *fown) _