diff options
author | Trond Myklebust <Trond.Myklebust@netapp.com> | 2009-08-12 17:12:30 +0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-08-12 19:21:39 +0400 |
commit | 1ae88b2e446261c038f2c0c3150ffae142b227a2 (patch) | |
tree | b3c9c11e4391c59086308e2674661688db5b12f5 /include/linux/crc32.h | |
parent | 7cb7beb31aa3d941833b6a6e553687422c31e4b6 (diff) | |
download | linux-1ae88b2e446261c038f2c0c3150ffae142b227a2.tar.xz |
NFS: Fix an O_DIRECT Oops...
We can't call nfs_readdata_release()/nfs_writedata_release() without
first initialising and referencing args.context. Doing so inside
nfs_direct_read_schedule_segment()/nfs_direct_write_schedule_segment()
causes an Oops.
We should rather be calling nfs_readdata_free()/nfs_writedata_free() in
those cases.
Looking at the O_DIRECT code, the "struct nfs_direct_req" is already
referencing the nfs_open_context for us. Since the readdata and writedata
structures carry a reference to that, we can simplify things by getting rid
of the extra nfs_open_context references, so that we can replace all
instances of nfs_readdata_release()/nfs_writedata_release().
Reported-by: Catalin Marinas <catalin.marinas@arm.com>
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Tested-by: Catalin Marinas <catalin.marinas@arm.com>
Cc: stable@kernel.org
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'include/linux/crc32.h')
0 files changed, 0 insertions, 0 deletions