SLES10 Fixes (part 8)

- Add compat_ioctl() handler, by default 64-bit SLES systems build 32-bit
  ELF binaries.  For the 32-bit binaries to pass ioctl information to a
  64-bit kernel a compatibility handler needs to be registered.  In our
  case no additional conversions are needed to convert 32-bit ioctl()
  commands to 64-bit commands so we can just call the default handler.
This commit is contained in:
Brian Behlendorf 2009-05-20 16:33:08 -07:00
parent 124ca8a5a9
commit 9593ef76d9

View File

@ -460,6 +460,15 @@ splat_ioctl(struct inode *inode, struct file *file,
return rc; return rc;
} }
#ifdef CONFIG_COMPAT
/* Compatibility handler for ioctls from 32-bit ELF binaries */
static long
splat_compat_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
{
return splat_ioctl(NULL, file, cmd, arg);
}
#endif /* CONFIG_COMPAT */
/* I'm not sure why you would want to write in to this buffer from /* I'm not sure why you would want to write in to this buffer from
* user space since its principle use is to pass test status info * user space since its principle use is to pass test status info
* back to the user space, but I don't see any reason to prevent it. * back to the user space, but I don't see any reason to prevent it.
@ -573,13 +582,16 @@ static loff_t splat_seek(struct file *file, loff_t offset, int origin)
} }
static struct file_operations splat_fops = { static struct file_operations splat_fops = {
.owner = THIS_MODULE, .owner = THIS_MODULE,
.open = splat_open, .open = splat_open,
.release = splat_release, .release = splat_release,
.ioctl = splat_ioctl, .ioctl = splat_ioctl,
.read = splat_read, #ifdef CONFIG_COMPAT
.write = splat_write, .compat_ioctl = splat_compat_ioctl,
.llseek = splat_seek, #endif
.read = splat_read,
.write = splat_write,
.llseek = splat_seek,
}; };
static struct cdev splat_cdev = { static struct cdev splat_cdev = {