Re: [PATCH] Yama: access current->comm directly

From: Kees Cook
Date: Mon Jul 30 2012 - 19:04:26 EST


Hi,

On Mon, Jul 30, 2012 at 2:50 PM, Alan Cox <alan@xxxxxxxxxxxxxxxxxxx> wrote:
> On Mon, 30 Jul 2012 14:21:33 -0700
> John Johansen <john.johansen@xxxxxxxxxxxxx> wrote:
>
>> On 07/30/2012 09:58 AM, Kees Cook wrote:
>> > The core ptrace access checking routine already holds the task lock,
>> > so there is no need to use get_task_comm() which just tries to take the
>> > lock again. Drop its use and access current->comm directly.
>> >
>> > Reported-by: Fengguang Wu <fengguang.wu@xxxxxxxxx>
>> > Suggested-by: Oleg Nesterov <oleg@xxxxxxxxxx>
>> > Cc: stable@xxxxxxxxxxxxxxx
>> > Signed-off-by: Kees Cook <keescook@xxxxxxxxxxxx>
>> yep, looks good
>>
>> Acked-by: John Johansen <john.johansen@xxxxxxxxxxxxx>
>
>
> Code looks correct but having a weird cornercase direct reference is
> asking for an accident later. For maintainability I'd rather see that as
> __get_task_comm() or get_task_commu_unlocked() which does the job, deals
> with all the edge cases and contains a WARN_ON check on the lock.

I'd be happy to refactor this area, sure. What's the best way to check
for this lock. I see in staging:

#define ASSERT_SPINLOCK(_l) WARN_ON(!spin_is_locked(_l))

but in other areas, I see things using the raw_ prefix:

WARN_ON(raw_spin_is_locked(&kvm_lock));

Which is preferred for task_lock?

-Kees

--
Kees Cook
Chrome OS Security
--
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/