mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Stephen Rothwell <sfr@canb.auug.org.au>
To: ak@muc.de
Cc: torvalds@transmeta.com, linux-kernel@vger.kernel.org
Subject: [PATCH][COMPAT] {get,put}_compat_timspec 4/8 x86_64
Date: Wed, 8 Jan 2003 22:53:51 +1100	[thread overview]
Message-ID: <20030108225351.69782b43.sfr@canb.auug.org.au> (raw)
In-Reply-To: <20030108223744.0c4856b7.sfr@canb.auug.org.au>

Hi Andi,

You asked for it ... x86_64 part.

-- 
Cheers,
Stephen Rothwell                    sfr@canb.auug.org.au
http://www.canb.auug.org.au/~sfr/

diff -ruN 2.5.54-200301081106-32bit.2/arch/x86_64/ia32/ipc32.c 2.5.54-200301081106-32bit.3/arch/x86_64/ia32/ipc32.c
--- 2.5.54-200301081106-32bit.2/arch/x86_64/ia32/ipc32.c	2003-01-08 11:40:39.000000000 +1100
+++ 2.5.54-200301081106-32bit.3/arch/x86_64/ia32/ipc32.c	2003-01-08 16:43:42.000000000 +1100
@@ -626,9 +626,7 @@
 		return -E2BIG;
 	if (!access_ok(VERIFY_READ, sb, nsops * sizeof(struct sembuf)))
 		return -EFAULT; 
-	if (ts32 && 
-	    (get_user(ts.tv_sec, &ts32->tv_sec)  || 
-	     __get_user(ts.tv_nsec, &ts32->tv_nsec)))
+	if (ts32 && get_compat_timespec(&ts, ts32))
 		return -EFAULT;
 
 	set_fs(KERNEL_DS);  
diff -ruN 2.5.54-200301081106-32bit.2/arch/x86_64/ia32/sys_ia32.c 2.5.54-200301081106-32bit.3/arch/x86_64/ia32/sys_ia32.c
--- 2.5.54-200301081106-32bit.2/arch/x86_64/ia32/sys_ia32.c	2003-01-08 11:40:39.000000000 +1100
+++ 2.5.54-200301081106-32bit.3/arch/x86_64/ia32/sys_ia32.c	2003-01-08 17:19:37.000000000 +1100
@@ -1271,9 +1271,7 @@
 	set_fs (KERNEL_DS);
 	ret = sys_sched_rr_get_interval(pid, &t);
 	set_fs (old_fs);
-	if (verify_area(VERIFY_WRITE, interval, sizeof(struct compat_timespec)) ||
-	    __put_user (t.tv_sec, &interval->tv_sec) ||
-	    __put_user (t.tv_nsec, &interval->tv_nsec))
+	if (put_compat_timespec(&t, interval))
 		return -EFAULT;
 	return ret;
 }
@@ -1440,14 +1438,11 @@
 	case 2: s.sig[1] = s32.sig[2] | (((long)s32.sig[3]) << 32);
 	case 1: s.sig[0] = s32.sig[0] | (((long)s32.sig[1]) << 32);
 	}
-	if (uts) {
-		if (verify_area(VERIFY_READ, uts, sizeof(struct compat_timespec)) ||
-		    __get_user (t.tv_sec, &uts->tv_sec) ||
-		    __get_user (t.tv_nsec, &uts->tv_nsec))
-			return -EFAULT;
-	}
+	if (uts && get_compat_timespec(&t, uts))
+		return -EFAULT;
 	set_fs (KERNEL_DS);
-	ret = sys_rt_sigtimedwait(&s, &info, &t, sigsetsize);
+	ret = sys_rt_sigtimedwait(&s, uinfo ? &info : NULL, uts ? &t : NULL,
+			sigsetsize);
 	set_fs (old_fs);
 	if (ret >= 0 && uinfo) {
 		if (copy_to_user (uinfo, siginfo64to32(&info32, &info),
@@ -2300,20 +2295,13 @@
 	mm_segment_t oldfs = get_fs(); 
 	int err;
 
-	if (utime32) {
-		if (verify_area(VERIFY_READ, utime32, sizeof(*utime32)))
-			return -EFAULT;
-
-		if (__get_user(t.tv_sec, &utime32->tv_sec) ||
-		    __get_user(t.tv_nsec, &utime32->tv_nsec))
-			return -EFAULT;
-		
-	}
+	if (utime32 && get_compat_timespec(&t, utime32))
+		return -EFAULT;
 
 	/* the set_fs is safe because futex doesn't use the seg limit 
 	   for valid page checking of uaddr. */ 
 	set_fs(KERNEL_DS); 
-	err = sys_futex(uaddr, op, val, &t);
+	err = sys_futex(uaddr, op, val, utime32 ? &t : NULL);
 	set_fs(oldfs); 
 	return err; 
 }
@@ -2392,22 +2380,18 @@
 { 	
 	long ret;
 	mm_segment_t oldfs; 
-	struct timespec t32;
+	struct timespec t;
 	/* Harden against bogus ptrace */
 	if (nr >= 0xffffffff || 
 	    !access_ok(VERIFY_WRITE, events, nr * sizeof(struct io_event)))
 		return -EFAULT;
-	if (timeout && 
-	    (get_user(t32.tv_sec, &timeout->tv_sec)  || 
-	     __get_user(t32.tv_nsec, &timeout->tv_nsec)))
+	if (timeout && get_compat_timespec(&t, timeout))
 		return -EFAULT; 
 	oldfs = get_fs();
 	set_fs(KERNEL_DS); 
-	ret = sys_io_getevents(ctx_id,min_nr,nr,events,timeout ? &t32 : NULL); 
+	ret = sys_io_getevents(ctx_id,min_nr,nr,events,timeout ? &t : NULL); 
 	set_fs(oldfs); 
-	if (timeout && 
-	    (__put_user(t32.tv_sec, &timeout->tv_sec) || 
-	     __put_user(t32.tv_nsec, &timeout->tv_nsec)))
+	if (timeout && put_compat_timespec(&t, timeout))
 		return -EFAULT; 		
 	return ret;
 } 

  parent reply	other threads:[~2003-01-08 11:45 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-01-08 11:37 [PATCH][COMPAT] {get,put}_compat_timspec 1/8 generic Stephen Rothwell
2003-01-08 11:41 ` [PATCH][COMPAT] {get,put}_compat_timspec 2/8 ppc64 Stephen Rothwell
2003-01-08 11:44 ` [PATCH][COMPAT] {get,put}_compat_timspec 3/8 sparc64 Stephen Rothwell
2003-01-08 11:53 ` Stephen Rothwell [this message]
2003-01-08 12:01 ` [PATCH][COMPAT] {get,put}_compat_timspec 5/8 ia64 Stephen Rothwell
2003-01-08 12:04 ` [PATCH][COMPAT] {get,put}_compat_timspec 6/8 s390x Stephen Rothwell
2003-01-08 12:10 ` [PATCH][COMPAT] {get,put}_compat_timspec 7/8 mips64 Stephen Rothwell
2003-01-08 12:12 ` [PATCH][COMPAT] {get,put}_compat_timspec 8/8 parisc Stephen Rothwell

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20030108225351.69782b43.sfr@canb.auug.org.au \
    --to=sfr@canb.auug.org.au \
    --cc=ak@muc.de \
    --cc=linux-kernel@vger.kernel.org \
    --cc=torvalds@transmeta.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®