Messages in this thread |  | | Subject | Re: get_user <-> scsi-idle | Date | Sat, 25 Jan 1997 21:17:50 +0200 (EET) | From | Matti Aarnio <> |
| |
> hello all, > i'm trying to hack scsi-idle to work with 2.1.22. between 2.0.x and 2.1.x, > get_user changed at least from having one argument to having two arguments. > > the code segment, that works with 2.0.xx, is > > + if (get_user((long *) arg)) > + scsi_cmd[4] = 1; > + else > + scsi_cmd[4] = 0; > + > > could someone recomend a rewrite for 2.1.x? also, a brief description of > what is going on here would be appreciated. specifically, what is the > difference in the functioning of the old and new get_user? the code is > simply too deep for me to read.
"what is going on" with get_user() is described in kernel source file: Documentation/exception.txt --- generally speaking it is *DEEP* to read by anybody :-) (It is also rather unlike the general language specific exception handling in several programming languages -- these are HARDWARE exceptions that are handled here in quite ingenious manner. )
The rewrite is:
int val, err;
if ((err = get_user(val, (void*)arg))) return err; if (val) scsi_cmd[4] = 1; else scsi_cmd[4] = 0;
(and throw away the verify_area() calls -- but make sure that you don't do get_user() after starting something which is difficult to revert latter.)
> regards, > ben.
/Matti Aarnio <matti.aarnio@tele.fi>
|  |