mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-05 02:19:51 +00:00
[PATCH] genrtc: fix read on 64-bit platforms
Fix genrtc's read() routine for 64-bit platforms. Current gen_rtc_read() stores 64bit integer and returns 8 even if an user tried to read a 32bit integer. Signed-off-by: Atsushi Nemoto <anemo@mba.ocn.ne.jp> Cc: Alessandro Zummo <a.zummo@towertech.it> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
3418ff7611
commit
f3537ea7b9
1 changed files with 4 additions and 4 deletions
|
@ -200,13 +200,13 @@ static ssize_t gen_rtc_read(struct file *file, char __user *buf,
|
|||
/* first test allows optimizer to nuke this case for 32-bit machines */
|
||||
if (sizeof (int) != sizeof (long) && count == sizeof (unsigned int)) {
|
||||
unsigned int uidata = data;
|
||||
retval = put_user(uidata, (unsigned long __user *)buf);
|
||||
retval = put_user(uidata, (unsigned int __user *)buf) ?:
|
||||
sizeof(unsigned int);
|
||||
}
|
||||
else {
|
||||
retval = put_user(data, (unsigned long __user *)buf);
|
||||
retval = put_user(data, (unsigned long __user *)buf) ?:
|
||||
sizeof(unsigned long);
|
||||
}
|
||||
if (!retval)
|
||||
retval = sizeof(unsigned long);
|
||||
out:
|
||||
current->state = TASK_RUNNING;
|
||||
remove_wait_queue(&gen_rtc_wait, &wait);
|
||||
|
|
Loading…
Reference in a new issue