From 7c32f3a2a3407541c961cff8a066583991297a35 Mon Sep 17 00:00:00 2001 From: Andrew Morton Date: Tue, 8 Apr 2003 21:32:09 -0700 Subject: [PATCH] [PATCH] fix file leak in fadvise() It can miss an fput() if passed the fd of a file which has no ->mapping. --- mm/fadvise.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/mm/fadvise.c b/mm/fadvise.c index cb0f8a158f93a..612d8ab7ac315 100644 --- a/mm/fadvise.c +++ b/mm/fadvise.c @@ -33,8 +33,10 @@ long sys_fadvise64(int fd, loff_t offset, size_t len, int advice) inode = file->f_dentry->d_inode; mapping = inode->i_mapping; - if (!mapping) - return -EINVAL; + if (!mapping) { + ret = -EINVAL; + goto out; + } bdi = mapping->backing_dev_info; @@ -69,6 +71,7 @@ long sys_fadvise64(int fd, loff_t offset, size_t len, int advice) default: ret = -EINVAL; } +out: fput(file); return ret; } -- 2.53.0