Messages in this thread | | | Subject | Re: [PATCH] x86/mce: Add compat_ioctl assignment to make it compatible with 32-bit system | From | He Zhe <> | Date | Sat, 2 May 2020 22:18:19 +0800 |
| |
On 4/28/20 2:19 AM, Luck, Tony wrote: > On Thu, Apr 16, 2020 at 04:40:31PM +0800, He Zhe wrote: >> Can this be considered for the moment? >> >> Thanks, >> Zhe >> >> On 3/4/20 2:39 PM, zhe.he@windriver.com wrote: >>> From: He Zhe <zhe.he@windriver.com> >>> >>> 32-bit user-space program would get errors like the following from ioctl >>> syscall due to missing compat_ioctl. >>> MCE_GET_RECORD_LEN: Inappropriate ioctl for device >>> >>> compat_ptr_ioctl is provided as a generic implementation of .compat_ioctl >>> file operation to ioctl functions that either ignore the argument or pass >>> a pointer to a compatible data type. > I'm not super-familiar with the compat ioctl bits. But this looks plausible. > > All three of the ioctl's for this driver have a "pointer to integer" for the > "return" value. And "int" is a compatible type between i386 and x86_64. > > I don't have a system setup to build a 32-bit binary to test the theory, > but I assume that you have built something that tests all three: > > MCE_GET_RECORD_LEN > MCE_GET_LOG_LEN > MCE_GETCLEAR_FLAGS > > So I guess: > > Acked-by: Tony Luck <tony.luck@intel.com>
Thanks, and yes, I had tested all three.
Zhe
> >>> Signed-off-by: He Zhe <zhe.he@windriver.com> >>> --- >>> arch/x86/kernel/cpu/mce/dev-mcelog.c | 1 + >>> 1 file changed, 1 insertion(+) >>> >>> diff --git a/arch/x86/kernel/cpu/mce/dev-mcelog.c b/arch/x86/kernel/cpu/mce/dev-mcelog.c >>> index 7c8958d..6c9b91b7 100644 >>> --- a/arch/x86/kernel/cpu/mce/dev-mcelog.c >>> +++ b/arch/x86/kernel/cpu/mce/dev-mcelog.c >>> @@ -328,6 +328,7 @@ static const struct file_operations mce_chrdev_ops = { >>> .write = mce_chrdev_write, >>> .poll = mce_chrdev_poll, >>> .unlocked_ioctl = mce_chrdev_ioctl, >>> + .compat_ioctl = compat_ptr_ioctl, >>> .llseek = no_llseek, >>> }; >>>
| |