linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* minix fs corruption fix for 2.4
@ 2003-11-03 13:21 Konstantin Boldyshev
  2003-11-03 16:55 ` Linus Torvalds
  0 siblings, 1 reply; 5+ messages in thread
From: Konstantin Boldyshev @ 2003-11-03 13:21 UTC (permalink / raw)
  To: linux-kernel; +Cc: marcelo.tosatti

[-- Attachment #1: Type: TEXT/PLAIN, Size: 1098 bytes --]

Hello,

Enclosed is a simple patch to fix corruption of minix filesystem
when deleting character and block device nodes (special files).
>From what I've found out the bug was introduced somehwere in 2.3
and is present in all 2.4 versions, and I guess also goes into 2.6.
Older 2.0 and 2.2 kernels do not have it - it seems that one who
was rewriting fs code for 2.4 just forgot to add the needed check.

Note that other filesystems that are rarely used nowdays may have
the same bug, especially if they used minix code as a template.


diff -urN linux-2.4.22/fs/minix/itree_common.c linux/fs/minix/itree_common.c
--- linux-2.4.22/fs/minix/itree_common.c	Thu Oct 16 11:30:27 2003
+++ linux/fs/minix/itree_common.c	Mon Nov  3 12:25:20 2003
@@ -301,6 +301,12 @@
 	int first_whole;
 	long iblock;

+	if (!(S_ISREG(inode->i_mode) || S_ISDIR(inode->i_mode) ||
+	    S_ISLNK(inode->i_mode)))
+		return;
+	if (IS_APPEND(inode) || IS_IMMUTABLE(inode))
+		return;
+
 	iblock = (inode->i_size + BLOCK_SIZE-1) >> 10;
 	block_truncate_page(inode->i_mapping, inode->i_size, get_block);


-- 
Regards,
Konstantin

[-- Attachment #2: Type: TEXT/PLAIN, Size: 555 bytes --]

diff -urN linux-2.4.22/fs/minix/itree_common.c linux/fs/minix/itree_common.c
--- linux-2.4.22/fs/minix/itree_common.c	Thu Oct 16 11:30:27 2003
+++ linux/fs/minix/itree_common.c	Mon Nov  3 12:25:20 2003
@@ -301,6 +301,12 @@
 	int first_whole;
 	long iblock;
 
+	if (!(S_ISREG(inode->i_mode) || S_ISDIR(inode->i_mode) ||
+	    S_ISLNK(inode->i_mode)))
+		return;
+	if (IS_APPEND(inode) || IS_IMMUTABLE(inode))
+		return;
+
 	iblock = (inode->i_size + BLOCK_SIZE-1) >> 10;
 	block_truncate_page(inode->i_mapping, inode->i_size, get_block);
 

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2003-11-04  6:29 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2003-11-03 13:21 minix fs corruption fix for 2.4 Konstantin Boldyshev
2003-11-03 16:55 ` Linus Torvalds
2003-11-03 17:19   ` viro
2003-11-03 17:50     ` Linus Torvalds
2003-11-04  6:30   ` Konstantin Boldyshev

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).