UPSTREAM: Call sysctl_head_finish on error

This error path returned directly instead of calling sysctl_head_finish().

Fixes: ef9d965bc8b6 ("sysctl: reject gigantic reads/write to sysctl files")
Change-Id: I0ed6a48f20b1eeed5485839334460c49629c7ed1
Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
Matthew Wilcox (Oracle) 2020-07-03 14:10:14 -04:00 • committed by basamaryan
commit e9c817b9d8
No known key found for this signature in database
GPG key ID: 210D5384FB2A5885

View file

@ -599,8 +599,9 @@ static ssize_t proc_sys_call_handler(struct file *filp, void __user *ubuf,
goto out;
/* don't even try if the size is too large */
if (count > KMALLOC_MAX_SIZE)
return -ENOMEM;
error = -ENOMEM;
if (count >= KMALLOC_MAX_SIZE)
goto out;
if (write) {
kbuf = memdup_user_nul(ubuf, count);
@ -609,7 +610,6 @@ static ssize_t proc_sys_call_handler(struct file *filp, void __user *ubuf,
goto out;
}
} else {
error = -ENOMEM;
kbuf = kzalloc(count, GFP_KERNEL);
if (!kbuf)
goto out;