[patch] reiser4: new export_ops fixup

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Sven Müller wrote:

Hi,
yesterday I tried a new kernel version (2.6.24-r3). And today in the morning I got the next kernel oops. The problem is still the same:

Access portage via nfs.

The file system should be consistent. At least my machine didn't crash since the last check. And I didn't get any other errors. The kernel ooops message is:

Mar  7 08:23:46 Blechkasten su[7174]: + pts/4 sm:root
Mar  7 08:30:01 Blechkasten BUG: unable to handle kernel NULL pointer dereference at virtual address 00000050
Mar 7 08:30:01 Blechkasten printing eip: c01a8c7a *pde = 00000000 Mar 7 08:30:01 Blechkasten Oops: 0000 [#1] Mar 7 08:30:01 Blechkasten Modules linked in: libafs(P) lirc_i2c(F) lirc_dev nvidia(P) tuner tea5767 tda8290 tuner_simple mt20xx tea5761 bttv ir_common videobuf_dma_sg videobuf_core btcx_risc tveeprom Mar 7 08:30:01 Blechkasten Mar 7 08:30:01 Blechkasten Pid: 3233, comm: nfsd Tainted: PF (2.6.24-gentoo-r3 #1)
Mar  7 08:30:01 Blechkasten EIP: 0060:[<c01a8c7a>] EFLAGS: 00010286 CPU: 0
Mar  7 08:30:01 Blechkasten EIP is at max_item_size_node40+0xb/0x15
Mar  7 08:30:01 Blechkasten EAX: 00000000 EBX: 00000002 ECX: ec2352b4 EDX: c01ae184
Mar  7 08:30:01 Blechkasten ESI: c04dd9e4 EDI: c045a02a EBP: f4f8fbdc ESP: f4f8fb60
Mar  7 08:30:01 Blechkasten cron[30633]: (root) CMD (test -x /usr/sbin/run-crons && /usr/sbin/run-crons )
Mar  7 08:30:01 Blechkasten DS: 007b ES: 007b FS: 0000 GS: 0000 SS: 0068
Mar  7 08:30:01 Blechkasten Process nfsd (pid: 3233, ti=f4f8e000 task=f4f02ff0 task.ti=f4f8e000)
Mar 7 08:30:01 Blechkasten Stack: c01ae18f c019836d c01a8842 ffffffdc c01a81eb 0000000c 8e0d1a53 f4f8fc58 Mar 7 08:30:01 Blechkasten ec2352b4 f4f8fb9c 00000282 0000fa80 d0dddd00 00000074 e3d49000 c036957f Mar 7 08:30:01 Blechkasten e3d49000 f4921242 00000074 00000000 00000000 00000000 f4921242 00000042 Mar 7 08:30:01 Blechkasten Call Trace:
Mar  7 08:30:01 Blechkasten [<c01ae18f>] max_name_len_cde+0xb/0xf
Mar  7 08:30:01 Blechkasten [<c019836d>] reiser4_max_filename_len+0x1e/0x1f
Mar  7 08:30:01 Blechkasten [<c01a8842>] is_name_acceptable_common+0x8/0x12
Mar  7 08:30:01 Blechkasten [<c01a81eb>] reiser4_lookup_name+0x2e/0xf4
Mar  7 08:30:01 Blechkasten [<c036957f>] skb_copy_and_csum_bits+0x15f/0x29a
Mar  7 08:30:01 Blechkasten [<c01a89ea>] get_parent_common+0x50/0xbe
Mar  7 08:30:01 Blechkasten [<c03e38de>] __mutex_lock_slowpath+0x1b7/0x1bf
Mar  7 08:30:01 Blechkasten [<c036b115>] memcpy_toiovec+0x27/0x4a
Mar  7 08:30:01 Blechkasten [<c019704f>] reiser4_get_dentry_parent+0x1b/0x1d
                                        ^^^^^^^^^^^^^^^^^^^^^^^^^
oh.. the reiser4_context is missed here.
The attached patch will help.

Thanks,
Edward.
The fixup for reiser4-new-export_ops.patch:
Added missed reiser4_{init, exit}_context()
---
 linux-2.6.23-mm1/fs/reiser4/export_ops.c |   19 ++++++++++++++-----
 1 files changed, 14 insertions(+), 5 deletions(-)

--- linux-2.6.23-mm1/fs/reiser4/export_ops.c.orig
+++ linux-2.6.23-mm1/fs/reiser4/export_ops.c
@@ -257,19 +257,28 @@
 {
 	struct inode *dir;
 	dir_plugin *dplug;
+	struct dentry *result;
+	reiser4_context *ctx;
 
 	assert("nikita-3527", child != NULL);
-	/* see comment in reiser4_get_dentry() about following assertion */
-	assert("nikita-3528", is_in_reiser4_context());
 
 	dir = child->d_inode;
 	assert("nikita-3529", dir != NULL);
+
+	ctx = reiser4_init_context(dir->i_sb);
+	if (IS_ERR(ctx))
+		return (void *)ctx;
+
 	dplug = inode_dir_plugin(dir);
 	assert("nikita-3531", ergo(dplug != NULL, dplug->get_parent != NULL));
-	if (dplug != NULL)
-		return dplug->get_parent(dir);
-	else
+
+	if (unlikely(dplug == NULL)) {
+		reiser4_exit_context(ctx);
 		return ERR_PTR(RETERR(-ENOTDIR));
+	}
+	result = dplug->get_parent(dir);
+	reiser4_exit_context(ctx);
+	return result;
 }
 
 /**

[Index of Archives]     [Linux File System Development]     [Linux BTRFS]     [Linux NFS]     [Linux Filesystems]     [Ext4 Filesystem]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite Forum]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Device Mapper]     [Linux Resources]

  Powered by Linux