lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Sat, 5 May 2007 23:47:52 +0200
From:	Frederik Deweerdt <deweerdt@...e.fr>
To:	Pekka J Enberg <penberg@...helsinki.fi>
Cc:	Andrew Morton <akpm@...ux-foundation.org>,
	linux-kernel@...r.kernel.org
Subject: Re: [-mm patch] do_revoke error handling (was Re: 2.6.21-mm1)

On Sun, May 06, 2007 at 12:23:15AM +0300, Pekka J Enberg wrote:
> On Sat, May 05, 2007 at 01:49:55AM -0700, Andrew Morton wrote:
> > > 
> > > ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.21/2.6.21-mm1/
> > > 
> > fs/revoke.c: In function 'do_revoke':
> > fs/revoke.c:563: warning: 'details.fset' may be used uninitialized in this function
> > fs/revoke.c:563: warning: 'details.restore_start' may be used uninitialized in this function
> 
> On Sat, 5 May 2007, Frederik Deweerdt wrote:
> > It seems that we should goto 'out_free_table' if an error happens in
> > the mainloop. Otherwise 'details' is passed to restore_files() without
> > being initialized.
> 
> Good catch. The patch is wrong, though. Wwe must restore the file 
> descriptors in case revoke fails; otherwise we'll leave non-revoked files 
> hanging. The proper fix is to move initialization before the 
> do_each_thread() bit. Care to make a new patch, Frederik?
>
OK, thanks for the explanation. Here it is.
Frederik

Signed-off-by: Frederik Deweerdt <frederik.deweerdt@...il.com>

diff --git a/fs/revoke.c b/fs/revoke.c
index 1f2e3ef..86a2842 100644
--- a/fs/revoke.c
+++ b/fs/revoke.c
@@ -597,6 +597,9 @@ static int do_revoke(struct inode *inode, struct file *to_exclude)
 		goto retry;
 	}
 
+	details.fset = fset;
+	details.restore_start = 0;
+
 	/*
 	 * First revoke the descriptors. After we are done, no one can start
 	 * new operations on them.
@@ -625,9 +628,6 @@ static int do_revoke(struct inode *inode, struct file *to_exclude)
 	if (err)
 		goto out_restore;
 
-	details.fset = fset;
-	details.restore_start = 0;
-
 	/*
 	 * Now, revoke the files for good.
 	 */
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ