From f96635efbc3bf2185673f07d912aecd220bca1c3 Mon Sep 17 00:00:00 2001 From: Evgeniy Polyakov Date: Sat, 19 Nov 2011 00:38:54 +0400 Subject: [PATCH] Do not modify pio in pohmelfs_send_io_group() --- fs/pohmelfs/trans.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/fs/pohmelfs/trans.c b/fs/pohmelfs/trans.c index a9b54480846..1995aa3601e 100644 --- a/fs/pohmelfs/trans.c +++ b/fs/pohmelfs/trans.c @@ -142,6 +142,7 @@ int pohmelfs_send_io_group(struct pohmelfs_io *pio, int group) struct dnet_attr *attr; struct dnet_io_attr *io; u64 iosize = pio->size; + u64 alloc_io_size = pio->size; int err; /* Dirty hack to prevent setting cmd/attr size to pio->size, @@ -149,7 +150,7 @@ int pohmelfs_send_io_group(struct pohmelfs_io *pio, int group) * and it should not be accounted in the packet we send to remote node */ if (pio->cmd == DNET_CMD_READ) - pio->size = 0; + alloc_io_size = 0; t = pohmelfs_trans_alloc(inode); if (IS_ERR(t)) { @@ -173,10 +174,10 @@ int pohmelfs_send_io_group(struct pohmelfs_io *pio, int group) dnet_setup_id(&cmd->id, group, pio->id->id); cmd->flags = pio->cflags; cmd->trans = t->trans = atomic_long_inc_return(&psb->trans); - cmd->size = pio->size + sizeof(struct dnet_io_attr) + sizeof(struct dnet_attr); + cmd->size = alloc_io_size + sizeof(struct dnet_io_attr) + sizeof(struct dnet_attr); attr->cmd = pio->cmd; - attr->size = pio->size + sizeof(struct dnet_io_attr); + attr->size = alloc_io_size + sizeof(struct dnet_io_attr); attr->flags = pio->aflags; memcpy(io->id, pio->id->id, DNET_ID_SIZE); @@ -189,7 +190,7 @@ int pohmelfs_send_io_group(struct pohmelfs_io *pio, int group) io->num = pio->num; t->header_size = sizeof(struct dnet_cmd) + sizeof(struct dnet_attr) + sizeof(struct dnet_io_attr); - t->data_size = pio->size; + t->data_size = alloc_io_size; dnet_convert_cmd(cmd); dnet_convert_attr(attr); @@ -199,13 +200,13 @@ int pohmelfs_send_io_group(struct pohmelfs_io *pio, int group) if (pio->alloc_flags & POHMELFS_IO_OWN) { t->data = pio->data; } else { - t->data = kmalloc(pio->size, GFP_NOIO); + t->data = kmalloc(alloc_io_size, GFP_NOIO); if (!t->data) { err = -ENOMEM; goto err_out_put_state; } - memcpy(t->data, pio->data, pio->size); + memcpy(t->data, pio->data, alloc_io_size); } } -- 2.11.4.GIT