2009-07-09 10:00:15

by Sten Spans

[permalink] [raw]
Subject: security_file_lock cmd argument


I was playing around with the security_file_lock hook which
is invoked from fs/locks.c. The desciption in include/linux/security.h
states the following:

* @file_lock:
* Check permission before performing file locking operations.
* Note: this hook mediates both flock and fcntl style locks.
* @file contains the file structure.
* @cmd contains the posix-translated lock operation to perform
* (e.g. F_RDLCK, F_WRLCK).

However when invoked via sys_flock:

SYSCALL_DEFINE2(flock, unsigned int, fd, unsigned int, cmd)
{
..
error = security_file_lock(filp, cmd);

Which results in passing flock style arguments (LOCK_*) rather
than fcntl (F_*LCK). This also is inconsistent with the two
other security_file_lock invocations in the same file.
This one-liner fixes the issue:

--- fs/locks.c.orig 2009-07-09 11:26:45.000000000 +0200
+++ fs/locks.c 2009-07-09 11:27:24.000000000 +0200
@@ -1590,7 +1590,7 @@
if (can_sleep)
lock->fl_flags |= FL_SLEEP;

- error = security_file_lock(filp, cmd);
+ error = security_file_lock(filp, lock->fl_type);
if (error)
goto out_free;

--
GeNUA Gesellschaft f?r Netzwerk - und Unix-Administration mbH
Domagkstr. 7, D-85551 Kirchheim. http://www.genua.de
Tel: (089) 99 19 50-0, Fax: (089) 99 19 50 - 999

Gesch?ftsf?hrer: Dr. Magnus Harlander, Dr. Michaela Harlander,
Bernhard Schneck. Amtsgericht M?nchen HRB 98238


2009-07-16 00:05:53

by James Morris

[permalink] [raw]
Subject: Re: security_file_lock cmd argument

> From: Sten Spans <[email protected]>

This looks good, but you need to add a signed-off-by line per
Documentation/SubmittingPatches


> To: [email protected]
> Subject: security_file_lock cmd argument
>
>
> I was playing around with the security_file_lock hook which
> is invoked from fs/locks.c. The desciption in include/linux/security.h
> states the following:
>
> * @file_lock:
> * Check permission before performing file locking operations.
> * Note: this hook mediates both flock and fcntl style locks.
> * @file contains the file structure.
> * @cmd contains the posix-translated lock operation to perform
> * (e.g. F_RDLCK, F_WRLCK).
>
> However when invoked via sys_flock:
>
> SYSCALL_DEFINE2(flock, unsigned int, fd, unsigned int, cmd)
> {
> ..
> error = security_file_lock(filp, cmd);
>
> Which results in passing flock style arguments (LOCK_*) rather
> than fcntl (F_*LCK). This also is inconsistent with the two
> other security_file_lock invocations in the same file.
> This one-liner fixes the issue:
>
> --- fs/locks.c.orig 2009-07-09 11:26:45.000000000 +0200
> +++ fs/locks.c 2009-07-09 11:27:24.000000000 +0200
> @@ -1590,7 +1590,7 @@
> if (can_sleep)
> lock->fl_flags |= FL_SLEEP;
>
> - error = security_file_lock(filp, cmd);
> + error = security_file_lock(filp, lock->fl_type);
> if (error)
> goto out_free;
>
> --
> GeNUA Gesellschaft f?r Netzwerk - und Unix-Administration mbH
> Domagkstr. 7, D-85551 Kirchheim. http://www.genua.de
> Tel: (089) 99 19 50-0, Fax: (089) 99 19 50 - 999
>
> Gesch?ftsf?hrer: Dr. Magnus Harlander, Dr. Michaela Harlander,
> Bernhard Schneck. Amtsgericht M?nchen HRB 98238
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to [email protected]
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/
> --
> To unsubscribe from this list: send the line "unsubscribe linux-security-module" in
> the body of a message to [email protected]
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>

--
James Morris
<[email protected]>

2009-07-16 07:42:28

by Sten Spans

[permalink] [raw]
Subject: Re: security_file_lock cmd argument

On Thu, Jul 16, 2009 at 10:05:47AM +1000, James Morris wrote:
> > From: Sten Spans <[email protected]>
>
> This looks good, but you need to add a signed-off-by line per
> Documentation/SubmittingPatches
>

Makes sense, how about:

Pass posix-translated lock operations to security_file_lock
when invoked via sys_flock.

Signed-off-by: Sten Spans <[email protected]>

--- fs/locks.c.orig 2009-07-09 11:26:45.000000000 +0200
+++ fs/locks.c 2009-07-09 11:27:24.000000000 +0200
@@ -1590,7 +1590,7 @@
if (can_sleep)
lock->fl_flags |= FL_SLEEP;

- error = security_file_lock(filp, cmd);
+ error = security_file_lock(filp, lock->fl_type);
if (error)
goto out_free;

--
GeNUA Gesellschaft f?r Netzwerk - und Unix-Administration mbH
Domagkstr. 7, D-85551 Kirchheim. http://www.genua.de
Tel: (089) 99 19 50-0, Fax: (089) 99 19 50 - 999

Gesch?ftsf?hrer: Dr. Magnus Harlander, Dr. Michaela Harlander,
Bernhard Schneck. Amtsgericht M?nchen HRB 98238

2009-07-16 22:04:16

by James Morris

[permalink] [raw]
Subject: Re: security_file_lock cmd argument

On Thu, 16 Jul 2009, Sten Spans wrote:

> On Thu, Jul 16, 2009 at 10:05:47AM +1000, James Morris wrote:
> > > From: Sten Spans <[email protected]>
> >
> > This looks good, but you need to add a signed-off-by line per
> > Documentation/SubmittingPatches
> >
>
> Makes sense, how about:
>
> Pass posix-translated lock operations to security_file_lock
> when invoked via sys_flock.
>
> Signed-off-by: Sten Spans <[email protected]>

Thanks.

Applied to
git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6#next


--
James Morris
<[email protected]>