mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Linus Torvalds <torvalds@osdl.org>
To: Jamie Lokier <jamie@shareable.org>
Cc: chris@scary.beasts.org, akpm@osdl.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] Add 64-bit get_user and __get_user for i386
Date: Mon, 19 Apr 2004 07:56:10 -0700 (PDT)	[thread overview]
Message-ID: <Pine.LNX.4.58.0404190747110.2808@ppc970.osdl.org> (raw)
In-Reply-To: <20040419094408.GA13007@mail.shareable.org>



On Mon, 19 Apr 2004, Jamie Lokier wrote:
> 
> Subject: [PATCH] Add 64-bit get_user and __get_user for i386
> Patch: uaccess64-2.6.5
> 
> Add 64-bit get_user and __get_user for i386.
> Don't ask me how, but this shrinks the kernel too.

There must be some bug somewhere if the kernel shrinks from this. Although 
possibly the bug is in gcc ;)

Anyway, please don't do it like this (ie making one case be just a
memcpy). If we do this, let's do it right - ie 'd much rather see
something like

	#define get_user(x, ptr)					\
	({ __typeof__(*(ptr)) __val_gu;					\
	   int __ret_gu;						\
	   switch (sizeof(__val_gu)) {					\
	   case 1: __get_user_x(1,__ret_gu,__val_gu,ptr); break;	\
	   case 2: __get_user_x(2,__ret_gu,__val_gu,ptr); break;	\
	   case 4: __get_user_x(4,__ret_gu,__val_gu,ptr); break;	\
	   case 8: __get_user_8(__ret_gu,__val_gu,ptr); break;		\
	   default: __get_user_bad(); break;				\
	   }								\
	   (x) = __val_gu;						\
	   __ret_gu;							\
	})

and then you just make "__get_user_8()" look something like

	#define __get_user_8(ret,x,ptr)				\
		__asm__ __volatile__("call __get_user_8"	\
			:"=A" (ret), "=c" (x)			\
			:"1" (ptr))

Which is _different_ from the other "get_user" cases: it passes the 
address in %ecx, and it returns the error in %ecx too - the return value 
comes in %edx:%eax. Make the __get_user_8 in getuser.S match those 
different rules.

What do you think?

			Linus

  parent reply	other threads:[~2004-04-19 14:56 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-04-18  0:28 Nasty 2.6 sendfile() bug / regression; affects vsftpd chris
2004-04-18  3:12 ` Linus Torvalds
2004-04-18 13:49   ` chris
2004-04-19  0:46   ` Jamie Lokier
2004-04-19  5:28     ` Linus Torvalds
2004-04-19  9:44       ` [PATCH] Add 64-bit get_user and __get_user for i386 Jamie Lokier
2004-04-19 10:14         ` Jamie Lokier
2004-04-19 10:17           ` [PATCH] Use get_user for 64-bit read in sendfile64 Jamie Lokier
2004-04-19 10:36             ` Jamie Lokier
2004-04-19 14:56         ` Linus Torvalds [this message]
     [not found]           ` <20040420020922.GA18348@mail.shareable.org>
     [not found]             ` <Pine.LNX.4.58.0404191945490.29941@ppc970.osdl.org>
2004-04-20 17:41               ` [PATCH] Add 64-bit get_user and __get_user for i386 Jamie Lokier
2004-04-21  1:15                 ` Linus Torvalds
2004-04-20 23:21             ` Jim Wilson

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=Pine.LNX.4.58.0404190747110.2808@ppc970.osdl.org \
    --to=torvalds@osdl.org \
    --cc=akpm@osdl.org \
    --cc=chris@scary.beasts.org \
    --cc=jamie@shareable.org \
    --cc=linux-kernel@vger.kernel.org \
    /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®