Re: [RFC][PATCH 2/5] signal: Add rwlock to protect sighand->action

From: Matt Fleming
Date: Fri Sep 30 2011 - 11:56:49 EST


On Fri, 2011-09-30 at 16:12 +0100, Matt Fleming wrote:
> @@ -2935,9 +3025,11 @@ int do_sigaction(int sig, struct k_sigaction *act, struct k_sigaction *oact)
> if (!valid_signal(sig) || sig < 1 || (act && sig_kernel_only(sig)))
> return -EINVAL;
>
> + spin_lock_irq(&current->sighand->siglock);
> + read_lock(&current->sighand->action_lock);
> +
> k = &t->sighand->action[sig-1];
>
> - spin_lock_irq(&current->sighand->siglock);
> if (oact)
> *oact = *k;
>
> @@ -2967,6 +3059,7 @@ int do_sigaction(int sig, struct k_sigaction *act, struct k_sigaction *oact)
> }
> }
>
> + read_unlock(&current->sighand->action_lock);
> spin_unlock_irq(&current->sighand->siglock);
> return 0;
> }

Guh! I just noticed this. That should obviously be write-locked.

--
Matt Fleming, Intel Open Source Technology Center

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/