Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f3537ea7 authored by Atsushi Nemoto's avatar Atsushi Nemoto Committed by Linus Torvalds
Browse files

[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: default avatarAtsushi Nemoto <anemo@mba.ocn.ne.jp>
Cc: Alessandro Zummo <a.zummo@towertech.it>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 3418ff76
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -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);