sysctl: refactor sysctl string writing logic
authorKees Cook <keescook@chromium.org>
Fri, 6 Jun 2014 21:37:18 +0000 (14:37 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Fri, 6 Jun 2014 23:08:13 +0000 (16:08 -0700)
commit2ca9bb456ada8bcbdc8f77f8fc78207653bbaa92
tree05f8bd09ad6e9b24b735d7cf90c3167bade83050
parentf88083005ab319abba5d0b2e4e997558245493c8
sysctl: refactor sysctl string writing logic

Consolidate buffer length checking with new-line/end-of-line checking.
Additionally, instead of reading user memory twice, just do the
assignment during the loop.

This change doesn't affect the potential races here.  It was already
possible to read a sysctl that was in the middle of a write.  In both
cases, the string will always be NULL terminated.  The pre-existing race
remains a problem to be solved.

Signed-off-by: Kees Cook <keescook@chromium.org>
Cc: Randy Dunlap <rdunlap@infradead.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
kernel/sysctl.c