LKML Archive on lore.kernel.org
help / color / mirror / Atom feed
* RxRPC: Fix v1 keys
@ 2011-02-15  4:38 Anton Blanchard
  2011-02-15  4:42 ` afs: Fix oops in afs_unlink_writeback Anton Blanchard
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Anton Blanchard @ 2011-02-15  4:38 UTC (permalink / raw)
  To: David Howells; +Cc: linux-afs, linux-kernel


commit 339412841d7 (RxRPC: Allow key payloads to be passed in XDR form)
broke klog for me. I notice the v1 key struct had a kif_version field
added:

-struct rxkad_key {
-       u16     security_index;         /* RxRPC header security index */
-       u16     ticket_len;             /* length of ticket[] */
-       u32     expiry;                 /* time at which expires */
-       u32     kvno;                   /* key version number */
-       u8      session_key[8];         /* DES session key */
-       u8      ticket[0];              /* the encrypted ticket */
-};

+struct rxrpc_key_data_v1 {
+       u32             kif_version;            /* 1 */
+       u16             security_index;
+       u16             ticket_length;
+       u32             expiry;                 /* time_t */
+       u32             kvno;
+       u8              session_key[8];
+       u8              ticket[0];
+};

However the code in rxrpc_instantiate strips it away:

	data += sizeof(kver);
	datalen -= sizeof(kver);

Removing kif_version fixes my problem.

Signed-off-by: Anton Blanchard <anton@samba.org>
---

Index: linux-2.6/include/keys/rxrpc-type.h
===================================================================
--- linux-2.6.orig/include/keys/rxrpc-type.h	2011-02-14 12:12:21.874546332 +1100
+++ linux-2.6/include/keys/rxrpc-type.h	2011-02-14 12:12:26.615010317 +1100
@@ -99,7 +99,6 @@ struct rxrpc_key_token {
  * structure of raw payloads passed to add_key() or instantiate key
  */
 struct rxrpc_key_data_v1 {
-	u32		kif_version;		/* 1 */
 	u16		security_index;
 	u16		ticket_length;
 	u32		expiry;			/* time_t */

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

* afs: Fix oops in afs_unlink_writeback
  2011-02-15  4:38 RxRPC: Fix v1 keys Anton Blanchard
@ 2011-02-15  4:42 ` Anton Blanchard
  2011-02-25 15:49 ` RxRPC: Fix v1 keys David Howells
  2011-02-28 14:19 ` David Howells
  2 siblings, 0 replies; 4+ messages in thread
From: Anton Blanchard @ 2011-02-15  4:42 UTC (permalink / raw)
  To: David Howells; +Cc: linux-afs, linux-kernel

To: David Howells <dhowells@redhat.com>
Cc: linux-afs@lists.infradead.org, linux-kernel@vger.kernel.org 
Subject: afs: Fix oops in afs_unlink_writeback

I'm seeing the following oops when testing afs:

Unable to handle kernel paging request for data at address 0x00000008
...
NIP [c0000000003393b0] .afs_unlink_writeback+0x38/0xc0
LR [c00000000033987c] .afs_put_writeback+0x98/0xec
Call Trace:
[c00000000345f600] [c00000000033987c] .afs_put_writeback+0x98/0xec
[c00000000345f690] [c00000000033ae80] .afs_write_begin+0x6a4/0x75c
[c00000000345f790] [c00000000012b77c] .generic_file_buffered_write+0x148/0x320
[c00000000345f8d0] [c00000000012e1b8] .__generic_file_aio_write+0x37c/0x3e4
[c00000000345f9d0] [c00000000012e2a8] .generic_file_aio_write+0x88/0xfc
[c00000000345fa90] [c0000000003390a8] .afs_file_write+0x10c/0x178
[c00000000345fb40] [c000000000188788] .do_sync_write+0xc4/0x128
[c00000000345fcc0] [c000000000189658] .vfs_write+0xe8/0x1d8
[c00000000345fd70] [c000000000189884] .SyS_write+0x68/0xb0
[c00000000345fe30] [c000000000008564] syscall_exit+0x0/0x40

afs_write_begin hits an error and calls afs_unlink_writeback. In there
we do list_del_init on an uninitialised list.

The patch below initialises ->link when creating the afs_writeback struct.

Signed-off-by: Anton Blanchard <anton@samba.org>
---

Index: linux-2.6/fs/afs/write.c
===================================================================
--- linux-2.6.orig/fs/afs/write.c	2011-02-15 08:57:38.941571526 +1100
+++ linux-2.6/fs/afs/write.c	2011-02-15 13:50:34.793404142 +1100
@@ -144,6 +144,7 @@ int afs_write_begin(struct file *file, s
 	candidate->first = candidate->last = index;
 	candidate->offset_first = from;
 	candidate->to_last = to;
+	INIT_LIST_HEAD(&candidate->link);
 	candidate->usage = 1;
 	candidate->state = AFS_WBACK_PENDING;
 	init_waitqueue_head(&candidate->waitq);

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

* Re: RxRPC: Fix v1 keys
  2011-02-15  4:38 RxRPC: Fix v1 keys Anton Blanchard
  2011-02-15  4:42 ` afs: Fix oops in afs_unlink_writeback Anton Blanchard
@ 2011-02-25 15:49 ` David Howells
  2011-02-28 14:19 ` David Howells
  2 siblings, 0 replies; 4+ messages in thread
From: David Howells @ 2011-02-25 15:49 UTC (permalink / raw)
  To: Anton Blanchard; +Cc: dhowells, linux-afs, linux-kernel

Anton Blanchard <anton@au1.ibm.com> wrote:

> commit 339412841d7 (RxRPC: Allow key payloads to be passed in XDR form)
> broke klog for me. I notice the v1 key struct had a kif_version field
> added:

Hmmm...  I published a new version of klog at the same time, so just removing
kif_version will break that:-/

I'll have to come up with a way of detecting which you're doing.  But first, I
need to attempt to resuscitate my OpenAFS server.

David

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

* Re: RxRPC: Fix v1 keys
  2011-02-15  4:38 RxRPC: Fix v1 keys Anton Blanchard
  2011-02-15  4:42 ` afs: Fix oops in afs_unlink_writeback Anton Blanchard
  2011-02-25 15:49 ` RxRPC: Fix v1 keys David Howells
@ 2011-02-28 14:19 ` David Howells
  2 siblings, 0 replies; 4+ messages in thread
From: David Howells @ 2011-02-28 14:19 UTC (permalink / raw)
  To: Anton Blanchard; +Cc: dhowells, linux-afs, linux-kernel

David Howells <dhowells@redhat.com> wrote:

> Anton Blanchard <anton@au1.ibm.com> wrote:
> 
> > commit 339412841d7 (RxRPC: Allow key payloads to be passed in XDR form)
> > broke klog for me. I notice the v1 key struct had a kif_version field
> > added:
> 
> Hmmm...  I published a new version of klog at the same time, so just removing
> kif_version will break that:-/
> 
> I'll have to come up with a way of detecting which you're doing.  But first,
> I need to attempt to resuscitate my OpenAFS server.

You're right.  Patch signed off and sent on.

David

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

end of thread, other threads:[~2011-02-28 14:19 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-02-15  4:38 RxRPC: Fix v1 keys Anton Blanchard
2011-02-15  4:42 ` afs: Fix oops in afs_unlink_writeback Anton Blanchard
2011-02-25 15:49 ` RxRPC: Fix v1 keys David Howells
2011-02-28 14:19 ` David Howells

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).