···230230 if (size <= 1 || size >= PAGE_SIZE)231231 return -EINVAL;232232233233- kbuf = kmalloc(size + 1, GFP_KERNEL);234234- if (!kbuf)235235- return -ENOMEM;236236-237237- ret = -EFAULT;238238- if (copy_from_user(kbuf, buf, size) != 0)239239- goto done;240240- kbuf[size] = 0;233233+ kbuf = memdup_user_nul(buf, size);234234+ if (IS_ERR(kbuf))235235+ return PTR_ERR(kbuf);241236242237 /* trim to first NL */243238 name = memchr(kbuf, '\n', size);···310315 if (size <= 1 || size >= PAGE_SIZE)311316 return -EINVAL;312317313313- ret = -ENOMEM;314314- kbuf = kmalloc(size + 1, GFP_KERNEL);315315- if (!kbuf)316316- goto nomem;317317-318318- ret = -EFAULT;319319- if (copy_from_user(kbuf, buf, size) != 0)320320- goto infault;321321- kbuf[size] = 0;318318+ kbuf = memdup_user_nul(buf, size);319319+ if (IS_ERR(kbuf))320320+ return PTR_ERR(kbuf);322321323322 /* trim to first NL */324323 s = memchr(kbuf, '\n', size);···326337 if (ret >= 0)327338 ret = size; /* consume everything, always */328339329329-infault:330340 kfree(kbuf);331331-nomem:332341 _leave(" = %d", ret);333342 return ret;334343}
+3-9
fs/cachefiles/daemon.c
···226226 return -EOPNOTSUPP;227227228228 /* drag the command string into the kernel so we can parse it */229229- data = kmalloc(datalen + 1, GFP_KERNEL);230230- if (!data)231231- return -ENOMEM;232232-233233- ret = -EFAULT;234234- if (copy_from_user(data, _data, datalen) != 0)235235- goto error;236236-237237- data[datalen] = '\0';229229+ data = memdup_user_nul(_data, datalen);230230+ if (IS_ERR(data))231231+ return PTR_ERR(data);238232239233 ret = -EINVAL;240234 if (memchr(data, '\0', datalen))
+3-8
fs/dlm/user.c
···515515 if (count > sizeof(struct dlm_write_request) + DLM_RESNAME_MAXLEN)516516 return -EINVAL;517517518518- kbuf = kzalloc(count + 1, GFP_NOFS);519519- if (!kbuf)520520- return -ENOMEM;521521-522522- if (copy_from_user(kbuf, buf, count)) {523523- error = -EFAULT;524524- goto out_free;525525- }518518+ kbuf = memdup_user_nul(buf, count);519519+ if (!IS_ERR(kbuf))520520+ return PTR_ERR(kbuf);526521527522 if (check_version(kbuf)) {528523 error = -EBADE;