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

Matt Fleming
2011-09-30T15:56:48Z

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