sysfs: avoid kmem_cache_free(NULL)
PATCH 1/1 sysfs: avoid kmem_cache_free(NULL)
kmem_cache_free() with NULL is not allowed. But it may happen if out of memory error is triggered in sysfs_new_dirent(). This patch fixes that error handling.
Cc Greg Kroah-Hartman <[email protected]>
Signed-off-by Akinobu Mita <[email protected]>
--- fs/sysfs/dir.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-)
fs/sysfs/dir.c +7 -6
@@ -361,20 +361,20 @@ static struct dentry_operations sysfs_destruct sysfs_dirent *sysfs_new_dirent (const char *name,umode_t mode,int type) {char *dup_name =NULL ; -struct sysfs_dirent *sd =NULL ; +struct sysfs_dirent *sd;if (type &SYSFS_COPY_NAME ) { name = dup_name =kstrdup (name,GFP_KERNEL );if (!name) - goto err_out; +return NULL ; } sd =kmem_cache_zalloc (sysfs_dir_cachep,GFP_KERNEL );if (!sd) - goto err_out; + goto err_out1;if (sysfs_alloc_ino (&sd->s_ino)) - goto err_out; + goto err_out2;atomic_set (&sd->s_count,1 );atomic_set (&sd->s_active,0 );
@@ -386,9 +386,10 @@ struct sysfs_dirent *sysfs_new_dirent(coreturn sd; - err_out: -kfree (dup_name); + err_out2:kmem_cache_free (sysfs_dir_cachep, sd); + err_out1: +kfree (dup_name);return NULL ; }