Skip to content
  • Alexey Dobriyan's avatar
    lib: add kstrto*_from_user() · c196e32a
    Alexey Dobriyan authored
    
    
    There is quite a lot of code which does copy_from_user() + strict_strto*()
    or simple_strto*() combo in slightly different ways.
    
    Before doing conversions all over tree, let's get final API correct.
    
    Enter kstrtoull_from_user() and friends.
    
    Typical code which uses them looks very simple:
    
    	TYPE val;
    	int rv;
    
    	rv = kstrtoTYPE_from_user(buf, count, 0, &val);
    	if (rv < 0)
    		return rv;
    	[use val]
    	return count;
    
    There is a tiny semantic difference from the plain kstrto*() API -- the
    latter allows any amount of leading zeroes, while the former copies data
    into buffer on stack and thus allows leading zeroes as long as it fits
    into buffer.
    
    This shouldn't be a problem for typical usecase "echo 42 > /proc/x".
    
    The point is to make reading one integer from userspace _very_ simple and
    very bug free.
    
    Signed-off-by: default avatarAlexey Dobriyan <adobriyan@gmail.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    c196e32a