linux-mips
[Top] [All Lists]

Re: [PATCH v8 5/9] seccomp: split mode set routines

To: Oleg Nesterov <oleg@redhat.com>
Subject: Re: [PATCH v8 5/9] seccomp: split mode set routines
From: Kees Cook <keescook@chromium.org>
Date: Wed, 25 Jun 2014 07:51:25 -0700
Cc: LKML <linux-kernel@vger.kernel.org>, Andy Lutomirski <luto@amacapital.net>, "Michael Kerrisk (man-pages)" <mtk.manpages@gmail.com>, Alexei Starovoitov <ast@plumgrid.com>, Andrew Morton <akpm@linux-foundation.org>, Daniel Borkmann <dborkman@redhat.com>, Will Drewry <wad@chromium.org>, Julien Tinnes <jln@chromium.org>, David Drysdale <drysdale@google.com>, Linux API <linux-api@vger.kernel.org>, "x86@kernel.org" <x86@kernel.org>, "linux-arm-kernel@lists.infradead.org" <linux-arm-kernel@lists.infradead.org>, linux-mips@linux-mips.org, linux-arch <linux-arch@vger.kernel.org>, linux-security-module <linux-security-module@vger.kernel.org>
Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=mime-version:sender:in-reply-to:references:date:message-id:subject :from:to:cc:content-type; bh=FNRwftFuANuIfX/LBvzGK/EiALT+SoPX0f2P2wYXV/M=; b=PHrT7Oni4yxEmN3iI0jy2KuCSTBMnAg/DDXSTImJQ8ha+iJm9QGr+osIoyV80NFeHJ uBXmFCXPi/k6W5iPnw4/z++FtnNp7HibdczK6KvvSkKEtQHWrCB6NibsDeAWVlCXFsBV KjBFuLbVjExi5fyQ18aZNEhtqghaBtH5GMjNsA3yOp0bjPALsqRg3nqVB2hV7M0nVZ0f wOSnEkT3mLdU4MYQue2wlGRwi4rV83w3bwp0ITzdaGN+b9YPHVyIxbxxGXWEbM2oiV8V zUAQBWrv2lZTi6P9MOzACySOxDJO8C3FM5FWUuEGluQNuoOSUkE5F7I3b6zwb0Zpaoj4 Jt+A==
Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=mime-version:sender:in-reply-to:references:date:message-id:subject :from:to:cc:content-type; bh=FNRwftFuANuIfX/LBvzGK/EiALT+SoPX0f2P2wYXV/M=; b=J82Wuz1bft7xnF+aWMEnL1ZJhkgPwcVftTXmRccnvTksDMP6SWe/lRCTDtP0JmZycI q/lMwRaL4yUa3aPeS+wxfjN7RNmPPEgPGRFLg3bJI6MmZXoPbo3YaGcMMFzxwoyULEVf 9j2PO47QYOK4TYGD/yWepqRvQTKtIGozBgImQ=
In-reply-to: <20140625135121.GB7892@redhat.com>
List-archive: <http://www.linux-mips.org/archives/linux-mips/>
List-help: <mailto:ecartis@linux-mips.org?Subject=help>
List-id: linux-mips <linux-mips.eddie.linux-mips.org>
List-owner: <mailto:ralf@linux-mips.org>
List-post: <mailto:linux-mips@linux-mips.org>
List-software: Ecartis version 1.0.0
List-subscribe: <mailto:ecartis@linux-mips.org?subject=subscribe%20linux-mips>
List-unsubscribe: <mailto:ecartis@linux-mips.org?subject=unsubscribe%20linux-mips>
Original-recipient: rfc822;linux-mips@linux-mips.org
References: <1403642893-23107-1-git-send-email-keescook@chromium.org> <1403642893-23107-6-git-send-email-keescook@chromium.org> <20140625135121.GB7892@redhat.com>
Sender: linux-mips-bounce@linux-mips.org
On Wed, Jun 25, 2014 at 6:51 AM, Oleg Nesterov <oleg@redhat.com> wrote:
> On 06/24, Kees Cook wrote:
>>
>> +static inline void seccomp_assign_mode(struct task_struct *task,
>> +                                    unsigned long seccomp_mode)
>> +{
>> +     BUG_ON(!spin_is_locked(&task->sighand->siglock));
>> +
>> +     task->seccomp.mode = seccomp_mode;
>> +     set_tsk_thread_flag(task, TIF_SECCOMP);
>> +}
>
> OK, but unless task == current this can race with secure_computing().
> I think this needs smp_mb__before_atomic() and secure_computing() needs
> rmb() after test_bit(TIF_SECCOMP).
>
> Otherwise, can't __secure_computing() hit BUG() if it sees the old
> mode == SECCOMP_MODE_DISABLED ?
>
> Or seccomp_run_filters() can see ->filters == NULL and WARN(),
> smp_load_acquire() only serializes that LOAD with the subsequent memory
> operations.

Hm, actually, now I'm worried about smp_load_acquire() being too slow
in run_filters().

The ordering must be:
- task->seccomp.filter must be valid before
- task->seccomp.mode is set, which must be valid before
- TIF_SECCOMP is set

But I don't want to impact secure_computing(). What's the best way to
make sure this ordering is respected?

-Kees

-- 
Kees Cook
Chrome OS Security

<Prev in Thread] Current Thread [Next in Thread>