All of lore.kernel.org
 help / color / mirror / Atom feed
* [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.