mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* PROBLEM: 2.6.9-rc3 Bug in NTFS  code
@ 2004-10-02 22:49 Dino Klein
  2004-10-03  0:27 ` Anton Altaparmakov
  0 siblings, 1 reply; 5+ messages in thread
From: Dino Klein @ 2004-10-02 22:49 UTC (permalink / raw)
  To: linux-kernel

below is what I had in the logs when attempting to umount a readonly NTFS.

------------[ cut here ]------------
kernel BUG at fs/ntfs/inode.c:354!
invalid operand: 0000 [#1]
SMP
Modules linked in: ntfs ohci1394 ieee1394 via_agp snd_emu10k1 snd_rawmidi 
snd_pcm snd_timer snd_seq_device snd_ac97_codec snd_page_alloc snd_util_mem 
snd_hwdep snd soundcore hpt366 ipv6 parport_pc lp parport autofs4 sunrpc 
3c59x ipt_REJECT ipt_state ip_conntrack iptable_filter ip_tables floppy sg 
scsi_mod microcode tsdev joydev usbhid dm_mod uhci_hcd ohci_hcd ehci_hcd 
usbcore button battery asus_acpi ac ext3 jbd
CPU:    0
EIP:    0060:[<f8c7f456>]    Not tainted VLI
EFLAGS: 00010286   (2.6.9-rc3)
EIP is at ntfs_destroy_extent_inode+0x26/0x30 [ntfs]
eax: c1ef89c0   ebx: f6cdfc40   ecx: 00000000   edx: f5a3c9b0
esi: 00000002   edi: f73b5e00   ebp: f73b5e50   esp: f5affef8
ds: 007b   es: 007b   ss: 0068
Process umount (pid: 3161, threadinfo=f5afe000 task=f72d4bf0)
Stack: f8c81cbf f6cdfcec f73b5e00 c0174734 f6cdfcec c017561c f6cdfcec 
f594aee0
       c01756b3 f594af60 f8c84912 f73b5e00 f5afe000 00000000 c0161d46 
ffffffff
       f8c8cd20 f73b5e00 f7f94200 f8c8cda0 f5afe000 c01627e7 f73b5e40 
f73b5e00
Call Trace:
[<f8c81cbf>] ntfs_clear_big_inode+0x6f/0x80 [ntfs]
[<c0174734>] clear_inode+0xf4/0x130
[<c017561c>] generic_forget_inode+0xec/0x110
[<c01756b3>] iput+0x53/0x70
[<f8c84912>] ntfs_put_super+0xf2/0x2c0 [ntfs]
[<c0161d46>] generic_shutdown_super+0x176/0x190
[<c01627e7>] kill_block_super+0x17/0x40
[<c0161afe>] deactivate_super+0x6e/0x90
[<c0177a0b>] sys_umount+0x3b/0x90
[<c01500ec>] do_munmap+0x12c/0x170
[<c0177a75>] sys_oldumount+0x15/0x20
[<c010606d>] sysenter_past_esp+0x52/0x71
Code: 26 00 00 00 00 89 c2 8b 40 58 85 c0 75 1d f0 ff 4a 1c 0f 94 c0 84 c0 
75 08 0f 0b 64 01 1d 6c c8 f8 a1 3c d4 c8 f8 e9 aa 7b 4c c7 <0f> 0b 62 01 1d 
6c c8 f8 eb d9 c7 42 1c 01 00 00 00 8d 4a 3c c7

_________________________________________________________________
Check out Election 2004 for up-to-date election news, plus voter tools and 
more! http://special.msn.com/msn/election2004.armx


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

* Re: PROBLEM: 2.6.9-rc3 Bug in NTFS  code
  2004-10-02 22:49 PROBLEM: 2.6.9-rc3 Bug in NTFS code Dino Klein
@ 2004-10-03  0:27 ` Anton Altaparmakov
  2004-10-03  7:25   ` Anton Altaparmakov
  0 siblings, 1 reply; 5+ messages in thread
From: Anton Altaparmakov @ 2004-10-03  0:27 UTC (permalink / raw)
  To: Linus Torvalds, Dino Klein; +Cc: linux-kernel, linux-ntfs-dev

On Sat, 2 Oct 2004, Dino Klein wrote:
> below is what I had in the logs when attempting to umount a readonly NTFS.
[snip]

I suspect that this is caused by a bug I introduced in 2.1.18 release and 
that I already fixed in my development tree.  I unfortunately completely 
forgot that the code containing the bug was already in the mainstream 
kernels so I didn't think of submitting the fix straight away.  )))-:

Linus, please do a

	bk pull bk://linux-ntfs.bkbits.net/ntfs-2.6

to apply the fix which is also shown below in diff style patch.  Thanks!

Dino, could you apply the below patch and just check that the bug goes 
away (if you prefer just add by hand the line "ctx->al_entry = NULL;" to 
fs/ntfs/attrib.c as shown at the bottom of the patch).  It is always 
possible I introduced a different bug I haven't found yet as well so it 
would be good to know that this fix fixes the problem you are 
experiencing...  Thanks!

Best regards,

	Anton
-- 
Anton Altaparmakov <aia21 at cam.ac.uk> (replace at with @)
Unix Support, Computing Service, University of Cambridge, CB2 3QH, UK
Linux NTFS maintainer / IRC: #ntfs on irc.freenode.net
WWW: http://linux-ntfs.sf.net/, http://www-stu.christs.cam.ac.uk/~aia21/

This will update the following files:

 Documentation/filesystems/ntfs.txt |    2 ++
 fs/ntfs/ChangeLog                  |    7 +++++++
 fs/ntfs/Makefile                   |    2 +-
 fs/ntfs/attrib.c                   |    5 +++++
 4 files changed, 15 insertions(+), 1 deletion(-)

through these ChangeSets:

<aia21@cantab.net> (04/10/03 1.2031.1.1)
   NTFS: Fix stupid bug in fs/ntfs/attrib.c::ntfs_attr_reinit_search_ctx() where
         we did not clear ctx->al_entry but it was still set due to changes in
         ntfs_attr_lookup() and ntfs_external_attr_find() in particular.
   
   Signed-off-by: Anton Altaparmakov <aia21@cantab.net>

===================================================================

diff -Nru a/Documentation/filesystems/ntfs.txt b/Documentation/filesystems/ntfs.txt
--- a/Documentation/filesystems/ntfs.txt	2004-10-03 01:16:22 +01:00
+++ b/Documentation/filesystems/ntfs.txt	2004-10-03 01:16:22 +01:00
@@ -277,6 +277,8 @@
 
 Note, a technical ChangeLog aimed at kernel hackers is in fs/ntfs/ChangeLog.
 
+2.1.20:
+	- Fix a stupid bug introduced in 2.1.18 release.
 2.1.19:
 	- Minor bugfix in handling of the default upcase table.
 	- Many internal cleanups and improvements.  Many thanks to Linus
diff -Nru a/fs/ntfs/ChangeLog b/fs/ntfs/ChangeLog
--- a/fs/ntfs/ChangeLog	2004-10-03 01:16:22 +01:00
+++ b/fs/ntfs/ChangeLog	2004-10-03 01:16:22 +01:00
@@ -21,6 +21,13 @@
 	- Enable the code for setting the NT4 compatibility flag when we start
 	  making NTFS 1.2 specific modifications.
 
+2.1.20 - Fix a stupid bug in ntfs_attr_reinit_search_ctx().
+
+	- Fix stupid bug in fs/ntfs/attrib.c::ntfs_attr_reinit_search_ctx()
+	  where we did not clear ctx->al_entry but it was still set due to
+	  changes in ntfs_attr_lookup() and ntfs_external_attr_find() in
+	  particular.
+
 2.1.19 - Many cleanups, improvements, and a minor bug fix.
 
 	- Update ->setattr (fs/ntfs/inode.c::ntfs_setattr()) to refuse to
diff -Nru a/fs/ntfs/Makefile b/fs/ntfs/Makefile
--- a/fs/ntfs/Makefile	2004-10-03 01:16:22 +01:00
+++ b/fs/ntfs/Makefile	2004-10-03 01:16:22 +01:00
@@ -6,7 +6,7 @@
 	     index.o inode.o mft.o mst.o namei.o super.o sysctl.o unistr.o \
 	     upcase.o
 
-EXTRA_CFLAGS = -DNTFS_VERSION=\"2.1.19\"
+EXTRA_CFLAGS = -DNTFS_VERSION=\"2.1.20\"
 
 ifeq ($(CONFIG_NTFS_DEBUG),y)
 EXTRA_CFLAGS += -DDEBUG
diff -Nru a/fs/ntfs/attrib.c b/fs/ntfs/attrib.c
--- a/fs/ntfs/attrib.c	2004-10-03 01:16:22 +01:00
+++ b/fs/ntfs/attrib.c	2004-10-03 01:16:22 +01:00
@@ -1861,6 +1861,11 @@
 		/* Sanity checks are performed elsewhere. */
 		ctx->attr = (ATTR_RECORD*)((u8*)ctx->mrec +
 				le16_to_cpu(ctx->mrec->attrs_offset));
+		/*
+		 * This needs resetting due to ntfs_external_attr_find() which
+		 * can leave it set despite having zeroed ctx->base_ntfs_ino.
+		 */
+		ctx->al_entry = NULL;
 		return;
 	} /* Attribute list. */
 	if (ctx->ntfs_ino != ctx->base_ntfs_ino)


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

* Re: PROBLEM: 2.6.9-rc3 Bug in NTFS  code
  2004-10-03  0:27 ` Anton Altaparmakov
@ 2004-10-03  7:25   ` Anton Altaparmakov
  0 siblings, 0 replies; 5+ messages in thread
From: Anton Altaparmakov @ 2004-10-03  7:25 UTC (permalink / raw)
  To: Linus Torvalds, Dino Klein; +Cc: linux-kernel, linux-ntfs-dev

On Sun, 3 Oct 2004, Anton Altaparmakov wrote:
> On Sat, 2 Oct 2004, Dino Klein wrote:
> > below is what I had in the logs when attempting to umount a readonly NTFS.
> [snip]
> 
> I suspect that this is caused by a bug I introduced in 2.1.18 release and 
> that I already fixed in my development tree.  I unfortunately completely 
> forgot that the code containing the bug was already in the mainstream 
> kernels so I didn't think of submitting the fix straight away.  )))-:

Ouch.  Having slept over it I awoke this morning with the realization that 
there is in fact another bug, which would definitely cause exactly the BUG 
check to trigger that Dino reported.  )-:  Sorry about that.  Just goes to 
show that when I was porting my code from libntfs to the kernel and 
thinking "wow, this is really too easy", I was actually missing the 
subtleties involved so I broke it.  )-:

Linus, please do a

	bk pull bk://linux-ntfs.bkbits.net/ntfs-2.6

to apply the fix which is also shown below in diff style patch.  Thanks!

Dino, could you apply the below patch and just check that the bug goes 
away in case I have missed yet another problem...  I am pretty confident 
that this is it this time but you never know. (You can just add the lines 
"if (ni != base_ni) unmap_extent_mft_record(ni);" to fs/ntfs/attrib.c as 
shown in the patch.)  Thanks a lot in advance!

Note you also want the fix from my previous email as the two bugs/fixes 
are related...

Best regards,

	Anton
-- 
Anton Altaparmakov <aia21 at cam.ac.uk> (replace at with @)
Unix Support, Computing Service, University of Cambridge, CB2 3QH, UK
Linux NTFS maintainer / IRC: #ntfs on irc.freenode.net
WWW: http://linux-ntfs.sf.net/ & http://www-stu.christs.cam.ac.uk/~aia21/

This will update the following files:

 Documentation/filesystems/ntfs.txt |    2 +-
 fs/ntfs/ChangeLog                  |    4 ++++
 fs/ntfs/attrib.c                   |    4 +++-
 3 files changed, 8 insertions(+), 2 deletions(-)

through these ChangeSets:

<aia21@cantab.net> (04/10/03 1.2034.1.1)
   NTFS: Fix another stupid bug in fs/ntfs/attrib.c::ntfs_external_attr_find()
         where we forgot to unmap the extent mft record when we had finished
         enumerating an attribute which caused a bug check to trigger when the
         VFS calls ->clear_inode.
   
   Signed-off-by: Anton Altaparmakov <aia21@cantab.net>

===================================================================

diff -Nru a/Documentation/filesystems/ntfs.txt b/Documentation/filesystems/ntfs.txt
--- a/Documentation/filesystems/ntfs.txt	2004-10-03 08:17:35 +01:00
+++ b/Documentation/filesystems/ntfs.txt	2004-10-03 08:17:35 +01:00
@@ -278,7 +278,7 @@
 Note, a technical ChangeLog aimed at kernel hackers is in fs/ntfs/ChangeLog.
 
 2.1.20:
-	- Fix a stupid bug introduced in 2.1.18 release.
+	- Fix two stupid bugs introduced in 2.1.18 release.
 2.1.19:
 	- Minor bugfix in handling of the default upcase table.
 	- Many internal cleanups and improvements.  Many thanks to Linus
diff -Nru a/fs/ntfs/ChangeLog b/fs/ntfs/ChangeLog
--- a/fs/ntfs/ChangeLog	2004-10-03 08:17:35 +01:00
+++ b/fs/ntfs/ChangeLog	2004-10-03 08:17:35 +01:00
@@ -27,6 +27,10 @@
 	  where we did not clear ctx->al_entry but it was still set due to
 	  changes in ntfs_attr_lookup() and ntfs_external_attr_find() in
 	  particular.
+	- Fix another stupid bug in fs/ntfs/attrib.c::ntfs_external_attr_find()
+	  where we forgot to unmap the extent mft record when we had finished
+	  enumerating an attribute which caused a bug check to trigger when the
+	  VFS calls ->clear_inode.
 
 2.1.19 - Many cleanups, improvements, and a minor bug fix.
 
diff -Nru a/fs/ntfs/attrib.c b/fs/ntfs/attrib.c
--- a/fs/ntfs/attrib.c	2004-10-03 08:17:35 +01:00
+++ b/fs/ntfs/attrib.c	2004-10-03 08:17:35 +01:00
@@ -1738,11 +1738,13 @@
 	 * correctly yet as we do not know what @ctx->attr will be set to by
 	 * the call to ntfs_attr_find() below.
 	 */
+	if (ni != base_ni)
+		unmap_extent_mft_record(ni);
 	ctx->mrec = ctx->base_mrec;
 	ctx->attr = (ATTR_RECORD*)((u8*)ctx->mrec +
 			le16_to_cpu(ctx->mrec->attrs_offset));
 	ctx->is_first = TRUE;
-	ctx->ntfs_ino = ctx->base_ntfs_ino;
+	ctx->ntfs_ino = base_ni;
 	ctx->base_ntfs_ino = NULL;
 	ctx->base_mrec = NULL;
 	ctx->base_attr = NULL;

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

* Re: PROBLEM: 2.6.9-rc3 Bug in NTFS code
  2004-10-03 18:56 Dino Klein
@ 2004-10-03 20:10 ` Anton Altaparmakov
  0 siblings, 0 replies; 5+ messages in thread
From: Anton Altaparmakov @ 2004-10-03 20:10 UTC (permalink / raw)
  To: Dino Klein; +Cc: torvalds, linux-kernel, linux-ntfs-dev

On Sun, 3 Oct 2004, Dino Klein wrote:
> initially I applied only the second patch (since I didn't realize there were
> two different patches), and that fixed the umount problem.
> afterwards I applied both, checked again, and there were no problems as well.
> 
> thanks.

Great, thanks for letting me know.

Best regards,

	Anton

-- 
Anton Altaparmakov <aia21 at cam.ac.uk> (replace at with @)
Unix Support, Computing Service, University of Cambridge, CB2 3QH, UK
Linux NTFS maintainer / IRC: #ntfs on irc.freenode.net
WWW: http://linux-ntfs.sf.net/ & http://www-stu.christs.cam.ac.uk/~aia21/

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

* Re: PROBLEM: 2.6.9-rc3 Bug in NTFS code
@ 2004-10-03 18:56 Dino Klein
  2004-10-03 20:10 ` Anton Altaparmakov
  0 siblings, 1 reply; 5+ messages in thread
From: Dino Klein @ 2004-10-03 18:56 UTC (permalink / raw)
  To: aia21, torvalds; +Cc: linux-kernel, linux-ntfs-dev

initially I applied only the second patch (since I didn't realize there were 
two different patches), and that fixed the umount problem.
afterwards I applied both, checked again, and there were no problems as 
well.

thanks.

>On Sun, 3 Oct 2004, Anton Altaparmakov wrote:
> > On Sat, 2 Oct 2004, Dino Klein wrote:
> > > below is what I had in the logs when attempting to umount a readonly 
>NTFS.
> > [snip]
> >
> > I suspect that this is caused by a bug I introduced in 2.1.18 release 
>and
> > that I already fixed in my development tree.  I unfortunately completely
> > forgot that the code containing the bug was already in the mainstream
> > kernels so I didn't think of submitting the fix straight away.  )))-:
>
>Ouch.  Having slept over it I awoke this morning with the realization that
>there is in fact another bug, which would definitely cause exactly the BUG
>check to trigger that Dino reported.  )-:  Sorry about that.  Just goes to
>show that when I was porting my code from libntfs to the kernel and
>thinking "wow, this is really too easy", I was actually missing the
>subtleties involved so I broke it.  )-:
>
>Linus, please do a
>
>	bk pull bk://linux-ntfs.bkbits.net/ntfs-2.6
>
>to apply the fix which is also shown below in diff style patch.  Thanks!
>
>Dino, could you apply the below patch and just check that the bug goes
>away in case I have missed yet another problem...  I am pretty confident
>that this is it this time but you never know. (You can just add the lines
>"if (ni != base_ni) unmap_extent_mft_record(ni);" to fs/ntfs/attrib.c as
>shown in the patch.)  Thanks a lot in advance!
>
>Note you also want the fix from my previous email as the two bugs/fixes
>are related...
>
>Best regards,
>
>	Anton
>--
>Anton Altaparmakov <aia21 at cam.ac.uk> (replace at with @)
>Unix Support, Computing Service, University of Cambridge, CB2 3QH, UK
>Linux NTFS maintainer / IRC: #ntfs on irc.freenode.net
>WWW: http://linux-ntfs.sf.net/ & http://www-stu.christs.cam.ac.uk/~aia21/
>
>This will update the following files:
>
>  Documentation/filesystems/ntfs.txt |    2 +-
>  fs/ntfs/ChangeLog                  |    4 ++++
>  fs/ntfs/attrib.c                   |    4 +++-
>  3 files changed, 8 insertions(+), 2 deletions(-)
>
>through these ChangeSets:
>
><aia21@cantab.net> (04/10/03 1.2034.1.1)
>    NTFS: Fix another stupid bug in 
>fs/ntfs/attrib.c::ntfs_external_attr_find()
>          where we forgot to unmap the extent mft record when we had 
>finished
>          enumerating an attribute which caused a bug check to trigger when 
>the
>          VFS calls ->clear_inode.
>
>    Signed-off-by: Anton Altaparmakov <aia21@cantab.net>
>
>===================================================================
>
>diff -Nru a/Documentation/filesystems/ntfs.txt 
>b/Documentation/filesystems/ntfs.txt
>--- a/Documentation/filesystems/ntfs.txt	2004-10-03 08:17:35 +01:00
>+++ b/Documentation/filesystems/ntfs.txt	2004-10-03 08:17:35 +01:00
>@@ -278,7 +278,7 @@
>  Note, a technical ChangeLog aimed at kernel hackers is in 
>fs/ntfs/ChangeLog.
>
>  2.1.20:
>-	- Fix a stupid bug introduced in 2.1.18 release.
>+	- Fix two stupid bugs introduced in 2.1.18 release.
>  2.1.19:
>  	- Minor bugfix in handling of the default upcase table.
>  	- Many internal cleanups and improvements.  Many thanks to Linus
>diff -Nru a/fs/ntfs/ChangeLog b/fs/ntfs/ChangeLog
>--- a/fs/ntfs/ChangeLog	2004-10-03 08:17:35 +01:00
>+++ b/fs/ntfs/ChangeLog	2004-10-03 08:17:35 +01:00
>@@ -27,6 +27,10 @@
>  	  where we did not clear ctx->al_entry but it was still set due to
>  	  changes in ntfs_attr_lookup() and ntfs_external_attr_find() in
>  	  particular.
>+	- Fix another stupid bug in fs/ntfs/attrib.c::ntfs_external_attr_find()
>+	  where we forgot to unmap the extent mft record when we had finished
>+	  enumerating an attribute which caused a bug check to trigger when the
>+	  VFS calls ->clear_inode.
>
>  2.1.19 - Many cleanups, improvements, and a minor bug fix.
>
>diff -Nru a/fs/ntfs/attrib.c b/fs/ntfs/attrib.c
>--- a/fs/ntfs/attrib.c	2004-10-03 08:17:35 +01:00
>+++ b/fs/ntfs/attrib.c	2004-10-03 08:17:35 +01:00
>@@ -1738,11 +1738,13 @@
>  	 * correctly yet as we do not know what @ctx->attr will be set to by
>  	 * the call to ntfs_attr_find() below.
>  	 */
>+	if (ni != base_ni)
>+		unmap_extent_mft_record(ni);
>  	ctx->mrec = ctx->base_mrec;
>  	ctx->attr = (ATTR_RECORD*)((u8*)ctx->mrec +
>  			le16_to_cpu(ctx->mrec->attrs_offset));
>  	ctx->is_first = TRUE;
>-	ctx->ntfs_ino = ctx->base_ntfs_ino;
>+	ctx->ntfs_ino = base_ni;
>  	ctx->base_ntfs_ino = NULL;
>  	ctx->base_mrec = NULL;
>  	ctx->base_attr = NULL;

_________________________________________________________________
On the road to retirement? Check out MSN Life Events for advice on how to 
get there! http://lifeevents.msn.com/category.aspx?cid=Retirement


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

end of thread, other threads:[~2004-10-03 20:10 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2004-10-02 22:49 PROBLEM: 2.6.9-rc3 Bug in NTFS code Dino Klein
2004-10-03  0:27 ` Anton Altaparmakov
2004-10-03  7:25   ` Anton Altaparmakov
2004-10-03 18:56 Dino Klein
2004-10-03 20:10 ` Anton Altaparmakov

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®