On Tue, 27 Mar 2007 23:11:41 +0200 "Rafael J. Wysocki" <[EMAIL PROTECTED]> wrote:
> > diff -u -r1.70 suspend.c
> > --- suspend.c 16 Mar 2007 16:02:22 -0000 1.70
> > +++ suspend.c 27 Mar 2007 20:36:52 -0000
> > @@ -208,7 +208,7 @@
> > swap.offset = offset;
> > error = ioctl(dev, SNAPSHOT_SET_SWAP_AREA, &swap);
> > if (error && !offset)
> > - error = ioctl(dev, SNAPSHOT_SET_SWAP_FILE, blkdev);
> > + error = ioctl(dev, SNAPSHOT_SET_SWAP_FILE, (unsigned long)
> > blkdev);
>
> Heh, I wonder. :-)
Apparently it worked... IMHO this means the code in user.c should be
different. snapshot_ioctl expects an unsigned long, which isn't what
the user sends. Would it be useful to use copy_from_user()? (Disclaimer
I haven't written a single line of kernel code yet, this is just from
reading user.c)
static int snapshot_ioctl(struct inode *inode, struct file *filp,
unsigned int cmd, unsigned long arg)
{
.
.
.
case SNAPSHOT_SET_SWAP_FILE:
if (!data->bitmap) {
/*
* User space encodes device types as two-byte values,
* so we need to recode them
*/
if (old_decode_dev(arg)) {
data->swap = swap_type_of(old_decode_dev(arg),
0, NULL);
if (data->swap < 0)
error = -ENODEV;
} else {
data->swap = -1;
error = -EINVAL;
}
} else {
error = -EPERM;
}
break;
grts Tim
signature.asc
Description: PGP signature
------------------------------------------------------------------------- Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys-and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________ Suspend-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/suspend-devel
