All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] afs: Read of file returns EBADMSG
@ 2012-03-13 20:50 Anton Blanchard
  0 siblings, 0 replies; only message in thread
From: Anton Blanchard @ 2012-03-13 20:50 UTC (permalink / raw)
  To: David Howells; +Cc: linux-afs, linux-kernel, akpm


A read of a large file on an afs mount failed:

# cat junk.file > /dev/null
cat: junk.file: Bad message

Looking at the trace, call->offset wrapped since it is only an
unsigned short. In afs_extract_data:


        _enter("{%u},{%zu},%d,,%zu", call->offset, len, last, count);
...

        if (call->offset < count) {
                if (last) {
                        _leave(" = -EBADMSG [%d < %zu]", call->offset, count);
                        return -EBADMSG;
                }


Which matches the trace:

[cat   ] ==> afs_extract_data({65132},{524},1,,65536)
[cat   ] <== afs_extract_data() = -EBADMSG [0 < 65536]

call->offset went from 65132 to 0. Fix this by making call->offset an
unsigned int.

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

Index: linux-build/fs/afs/internal.h
===================================================================
--- linux-build.orig/fs/afs/internal.h	2012-03-14 07:47:22.169945898 +1100
+++ linux-build/fs/afs/internal.h	2012-03-14 07:47:32.398126509 +1100
@@ -109,7 +109,7 @@ struct afs_call {
 	unsigned		reply_size;	/* current size of reply */
 	unsigned		first_offset;	/* offset into mapping[first] */
 	unsigned		last_to;	/* amount of mapping[last] */
-	unsigned short		offset;		/* offset into received data store */
+	unsigned		offset;		/* offset into received data store */
 	unsigned char		unmarshall;	/* unmarshalling phase */
 	bool			incoming;	/* T if incoming call */
 	bool			send_pages;	/* T if data from mapping should be sent */

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2012-03-13 20:50 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-03-13 20:50 [PATCH] afs: Read of file returns EBADMSG Anton Blanchard

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.