fs/9p: re-init the wstat in readdir loop

This ensure that on failure when we free the stat buf we don't end up
freeing an already freed pointer in the earlier loop

Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
Signed-off-by: Sripathi Kodi <sripathik@in.ibm.com>
Signed-off-by: Eric Van Hensbergen <ericvh@gmail.com>
This commit is contained in:
Aneesh Kumar K.V 2010-03-06 04:44:16 +00:00 коммит произвёл Eric Van Hensbergen
Родитель 86c8437383
Коммит fae4528b23
1 изменённых файлов: 10 добавлений и 1 удалений

Просмотреть файл

@ -76,6 +76,15 @@ static inline int dt_type(struct p9_wstat *mistat)
return rettype; return rettype;
} }
static void p9stat_init(struct p9_wstat *stbuf)
{
stbuf->name = NULL;
stbuf->uid = NULL;
stbuf->gid = NULL;
stbuf->muid = NULL;
stbuf->extension = NULL;
}
/** /**
* v9fs_dir_readdir - read a directory * v9fs_dir_readdir - read a directory
* @filp: opened file structure * @filp: opened file structure
@ -131,8 +140,8 @@ static int v9fs_dir_readdir(struct file *filp, void *dirent, filldir_t filldir)
rdir->head = 0; rdir->head = 0;
rdir->tail = err; rdir->tail = err;
} }
while (rdir->head < rdir->tail) { while (rdir->head < rdir->tail) {
p9stat_init(&st);
err = p9stat_read(rdir->buf + rdir->head, err = p9stat_read(rdir->buf + rdir->head,
buflen - rdir->head, &st, buflen - rdir->head, &st,
fid->clnt->proto_version); fid->clnt->proto_version);