* [PATCH] Yama: access current->comm directly
@ 2012-07-30 16:58 Kees Cook
2012-07-30 21:21 ` John Johansen
0 siblings, 1 reply; 4+ messages in thread
From: Kees Cook @ 2012-07-30 16:58 UTC (permalink / raw)
To: linux-kernel
Cc: James Morris, Kees Cook, John Johansen, linux-security-module
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@intel.com>
Suggested-by: Oleg Nesterov <oleg@redhat.com>
Cc: stable@vger.kernel.org
Signed-off-by: Kees Cook <keescook@chromium.org>
---
security/yama/yama_lsm.c | 6 ++----
1 files changed, 2 insertions(+), 4 deletions(-)
diff --git a/security/yama/yama_lsm.c b/security/yama/yama_lsm.c
index 83554ee..20a68ca 100644
--- a/security/yama/yama_lsm.c
+++ b/security/yama/yama_lsm.c
@@ -279,12 +279,10 @@ static int yama_ptrace_access_check(struct task_struct *child,
}
if (rc) {
- char name[sizeof(current->comm)];
+ /* task_lock is held by the caller, so use comm directly. */
printk_ratelimited(KERN_NOTICE
"ptrace of pid %d was attempted by: %s (pid %d)\n",
- child->pid,
- get_task_comm(name, current),
- current->pid);
+ child->pid, current->comm, current->pid);
}
return rc;
--
1.7.0.4
--
Kees Cook
Chrome OS Security
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH] Yama: access current->comm directly
2012-07-30 16:58 [PATCH] Yama: access current->comm directly Kees Cook
@ 2012-07-30 21:21 ` John Johansen
2012-07-30 21:50 ` Alan Cox
0 siblings, 1 reply; 4+ messages in thread
From: John Johansen @ 2012-07-30 21:21 UTC (permalink / raw)
To: Kees Cook; +Cc: linux-kernel, James Morris, linux-security-module
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@intel.com>
> Suggested-by: Oleg Nesterov <oleg@redhat.com>
> Cc: stable@vger.kernel.org
> Signed-off-by: Kees Cook <keescook@chromium.org>
yep, looks good
Acked-by: John Johansen <john.johansen@canonical.com>
> ---
> security/yama/yama_lsm.c | 6 ++----
> 1 files changed, 2 insertions(+), 4 deletions(-)
>
> diff --git a/security/yama/yama_lsm.c b/security/yama/yama_lsm.c
> index 83554ee..20a68ca 100644
> --- a/security/yama/yama_lsm.c
> +++ b/security/yama/yama_lsm.c
> @@ -279,12 +279,10 @@ static int yama_ptrace_access_check(struct task_struct *child,
> }
>
> if (rc) {
> - char name[sizeof(current->comm)];
> + /* task_lock is held by the caller, so use comm directly. */
> printk_ratelimited(KERN_NOTICE
> "ptrace of pid %d was attempted by: %s (pid %d)\n",
> - child->pid,
> - get_task_comm(name, current),
> - current->pid);
> + child->pid, current->comm, current->pid);
> }
>
> return rc;
>
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] Yama: access current->comm directly
2012-07-30 21:21 ` John Johansen
@ 2012-07-30 21:50 ` Alan Cox
2012-07-30 23:04 ` Kees Cook
0 siblings, 1 reply; 4+ messages in thread
From: Alan Cox @ 2012-07-30 21:50 UTC (permalink / raw)
To: John Johansen
Cc: Kees Cook, linux-kernel, James Morris, linux-security-module
On Mon, 30 Jul 2012 14:21:33 -0700
John Johansen <john.johansen@canonical.com> 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@intel.com>
> > Suggested-by: Oleg Nesterov <oleg@redhat.com>
> > Cc: stable@vger.kernel.org
> > Signed-off-by: Kees Cook <keescook@chromium.org>
> yep, looks good
>
> Acked-by: John Johansen <john.johansen@canonical.com>
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.
Alan
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] Yama: access current->comm directly
2012-07-30 21:50 ` Alan Cox
@ 2012-07-30 23:04 ` Kees Cook
0 siblings, 0 replies; 4+ messages in thread
From: Kees Cook @ 2012-07-30 23:04 UTC (permalink / raw)
To: Alan Cox; +Cc: John Johansen, linux-kernel, James Morris, linux-security-module
Hi,
On Mon, Jul 30, 2012 at 2:50 PM, Alan Cox <alan@lxorguk.ukuu.org.uk> wrote:
> On Mon, 30 Jul 2012 14:21:33 -0700
> John Johansen <john.johansen@canonical.com> 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@intel.com>
>> > Suggested-by: Oleg Nesterov <oleg@redhat.com>
>> > Cc: stable@vger.kernel.org
>> > Signed-off-by: Kees Cook <keescook@chromium.org>
>> yep, looks good
>>
>> Acked-by: John Johansen <john.johansen@canonical.com>
>
>
> 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
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2012-07-30 23:04 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-07-30 16:58 [PATCH] Yama: access current->comm directly Kees Cook
2012-07-30 21:21 ` John Johansen
2012-07-30 21:50 ` Alan Cox
2012-07-30 23:04 ` Kees Cook
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.