Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit488dac0

Browse files
Yicong Yangtorvalds
Yicong Yang
authored andcommitted
libfs: fix error cast of negative value in simple_attr_write()
The attr->set() receive a value of u64, but simple_strtoll() is used fordoing the conversion. It will lead to the error cast if user inputs anegative value.Use kstrtoull() instead of simple_strtoll() to convert a string got fromthe user to an unsigned value. The former will return '-EINVAL' if itgets a negetive value, but the latter can't handle the situationcorrectly. Make 'val' unsigned long long as what kstrtoull() takes,this will eliminate the compile warning on no 64-bit architectures.Fixes:f7b8863 ("fs/libfs.c: fix simple_attr_write() on 32bit machines")Signed-off-by: Yicong Yang <yangyicong@hisilicon.com>Signed-off-by: Andrew Morton <akpm@linux-foundation.org>Cc: Al Viro <viro@zeniv.linux.org.uk>Link:https://lkml.kernel.org/r/1605341356-11872-1-git-send-email-yangyicong@hisilicon.comSigned-off-by: Linus Torvalds <torvalds@linux-foundation.org>
1 parentbfe8cc1 commit488dac0

File tree

1 file changed

+4
-2
lines changed

1 file changed

+4
-2
lines changed

‎fs/libfs.c‎

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -959,7 +959,7 @@ ssize_t simple_attr_write(struct file *file, const char __user *buf,
959959
size_tlen,loff_t*ppos)
960960
{
961961
structsimple_attr*attr;
962-
u64val;
962+
unsigned long longval;
963963
size_tsize;
964964
ssize_tret;
965965

@@ -977,7 +977,9 @@ ssize_t simple_attr_write(struct file *file, const char __user *buf,
977977
gotoout;
978978

979979
attr->set_buf[size]='\0';
980-
val=simple_strtoll(attr->set_buf,NULL,0);
980+
ret=kstrtoull(attr->set_buf,0,&val);
981+
if (ret)
982+
gotoout;
981983
ret=attr->set(attr->data,val);
982984
if (ret==0)
983985
ret=len;/* on success, claim we got the whole input */

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp