From: Al Viro Date: Fri, 24 Oct 2014 02:58:56 +0000 (-0400) Subject: overlayfs: make ovl_cache_entry->name an array instead of pointer X-Git-Tag: v3.18-rc2~2^2~2 X-Git-Url: http://git.samba.org/samba.git/?p=sfrench%2Fcifs-2.6.git;a=commitdiff_plain;h=68bf8611076a8e4bee8bc8d03ff28bd1e9a9c631 overlayfs: make ovl_cache_entry->name an array instead of pointer Signed-off-by: Al Viro --- diff --git a/fs/overlayfs/readdir.c b/fs/overlayfs/readdir.c index b7d9fb098840..9c9872be2c72 100644 --- a/fs/overlayfs/readdir.c +++ b/fs/overlayfs/readdir.c @@ -18,13 +18,13 @@ #include "overlayfs.h" struct ovl_cache_entry { - const char *name; unsigned int len; unsigned int type; u64 ino; bool is_whiteout; struct list_head l_node; struct rb_node node; + char name[]; }; struct ovl_dir_cache { @@ -82,13 +82,12 @@ static struct ovl_cache_entry *ovl_cache_entry_new(const char *name, int len, u64 ino, unsigned int d_type) { struct ovl_cache_entry *p; + size_t size = offsetof(struct ovl_cache_entry, name[len + 1]); - p = kmalloc(sizeof(*p) + len + 1, GFP_KERNEL); + p = kmalloc(size, GFP_KERNEL); if (p) { - char *name_copy = (char *) (p + 1); - memcpy(name_copy, name, len); - name_copy[len] = '\0'; - p->name = name_copy; + memcpy(p->name, name, len); + p->name[len] = '\0'; p->len = len; p->type = d_type; p->ino = ino;