aboutsummaryrefslogtreecommitdiffstats
path: root/fs/nfs
diff options
context:
space:
mode:
authorBoaz Harrosh <bharrosh@panasas.com>2012-06-07 22:29:40 -0400
committerBoaz Harrosh <bharrosh@panasas.com>2012-07-20 04:50:30 -0400
commit9909d45a8557455ca5f8ee7af0f253debc851f1a (patch)
treee1c60f1bdc4ecedf8d6c50bbede7ff05035d3a56 /fs/nfs
parent537632e0a54a5355cdd0330911d18c3b773f9cf7 (diff)
pnfs-obj: don't leak objio_state if ore_write/read fails
[Bug since 3.2 Kernel] CC: Stable Tree <stable@kernel.org> Signed-off-by: Boaz Harrosh <bharrosh@panasas.com>
Diffstat (limited to 'fs/nfs')
-rw-r--r--fs/nfs/objlayout/objio_osd.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/fs/nfs/objlayout/objio_osd.c b/fs/nfs/objlayout/objio_osd.c
index b47277baebab..86d7595aca8f 100644
--- a/fs/nfs/objlayout/objio_osd.c
+++ b/fs/nfs/objlayout/objio_osd.c
@@ -454,7 +454,10 @@ int objio_read_pagelist(struct nfs_read_data *rdata)
454 objios->ios->done = _read_done; 454 objios->ios->done = _read_done;
455 dprintk("%s: offset=0x%llx length=0x%x\n", __func__, 455 dprintk("%s: offset=0x%llx length=0x%x\n", __func__,
456 rdata->args.offset, rdata->args.count); 456 rdata->args.offset, rdata->args.count);
457 return ore_read(objios->ios); 457 ret = ore_read(objios->ios);
458 if (unlikely(ret))
459 objio_free_result(&objios->oir);
460 return ret;
458} 461}
459 462
460/* 463/*
@@ -539,8 +542,10 @@ int objio_write_pagelist(struct nfs_write_data *wdata, int how)
539 dprintk("%s: offset=0x%llx length=0x%x\n", __func__, 542 dprintk("%s: offset=0x%llx length=0x%x\n", __func__,
540 wdata->args.offset, wdata->args.count); 543 wdata->args.offset, wdata->args.count);
541 ret = ore_write(objios->ios); 544 ret = ore_write(objios->ios);
542 if (unlikely(ret)) 545 if (unlikely(ret)) {
546 objio_free_result(&objios->oir);
543 return ret; 547 return ret;
548 }
544 549
545 if (objios->sync) 550 if (objios->sync)
546 _write_done(objios->ios, objios); 551 _write_done(objios->ios, objios);