diff options
author | Jeff Layton <jlayton@redhat.com> | 2014-02-07 11:04:04 -0500 |
---|---|---|
committer | Steve French <smfrench@gmail.com> | 2014-02-07 20:38:29 -0600 |
commit | 26c8f0d601f5d4c0d9f4bc8c5151539aae5dc26a (patch) | |
tree | 54636097b13ebeee398f6b4fe4d98835065ba3b0 | |
parent | 83e3bc23ef9ce7c03b7b4e5d3d790246ea59db3e (diff) | |
download | op-kernel-dev-26c8f0d601f5d4c0d9f4bc8c5151539aae5dc26a.zip op-kernel-dev-26c8f0d601f5d4c0d9f4bc8c5151539aae5dc26a.tar.gz |
cifs: use a flexarray in cifs_writedata
The cifs_writedata code uses a single element trailing array, which
just adds unneeded complexity. Use a flexarray instead.
Signed-off-by: Jeff Layton <jlayton@redhat.com>
Reviewed-by: Pavel Shilovsky <piastry@etersoft.ru>
Signed-off-by: Steve French <smfrench@gmail.com>
-rw-r--r-- | fs/cifs/cifsglob.h | 2 | ||||
-rw-r--r-- | fs/cifs/cifssmb.c | 8 |
2 files changed, 2 insertions, 8 deletions
diff --git a/fs/cifs/cifsglob.h b/fs/cifs/cifsglob.h index 615e35a..d6a031e 100644 --- a/fs/cifs/cifsglob.h +++ b/fs/cifs/cifsglob.h @@ -1068,7 +1068,7 @@ struct cifs_writedata { unsigned int pagesz; unsigned int tailsz; unsigned int nr_pages; - struct page *pages[1]; + struct page *pages[]; }; /* diff --git a/fs/cifs/cifssmb.c b/fs/cifs/cifssmb.c index 4d881c3..0cd742c 100644 --- a/fs/cifs/cifssmb.c +++ b/fs/cifs/cifssmb.c @@ -1962,15 +1962,9 @@ cifs_writedata_alloc(unsigned int nr_pages, work_func_t complete) { struct cifs_writedata *wdata; - /* this would overflow */ - if (nr_pages == 0) { - cifs_dbg(VFS, "%s: called with nr_pages == 0!\n", __func__); - return NULL; - } - /* writedata + number of page pointers */ wdata = kzalloc(sizeof(*wdata) + - sizeof(struct page *) * (nr_pages - 1), GFP_NOFS); + sizeof(struct page *) * nr_pages, GFP_NOFS); if (wdata != NULL) { kref_init(&wdata->refcount); INIT_LIST_HEAD(&wdata->list); |