Re: [PATCH v8 14/15] platform/x86: wmi: create userspace interface for drivers

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Mario,

[auto build test WARNING on platform-drivers-x86/for-next]
[also build test WARNING on next-20171016]
[cannot apply to v4.14-rc5]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]

url:    https://github.com/0day-ci/linux/commits/Mario-Limonciello/Introduce-support-for-Dell-SMBIOS-over-WMI/20171017-103109
base:   git://git.infradead.org/users/dvhart/linux-platform-drivers-x86.git for-next
config: i386-randconfig-x002-201742 (attached as .config)
compiler: gcc-6 (Debian 6.2.0-3) 6.2.0 20160901
reproduce:
        # save the attached .config to linux build tree
        make ARCH=i386 

All warnings (new ones prefixed by >>):

   In file included from include/linux/ioport.h:12:0,
                    from include/linux/acpi.h:25,
                    from drivers/platform/x86/wmi.c:36:
   drivers/platform/x86/wmi.c: In function 'match_ioctl':
   drivers/platform/x86/wmi.c:861:14: error: 'struct wmi_driver' has no member named 'compat_ioctl'; did you mean 'unlocked_ioctl'?
      if (wdriver->compat_ioctl)
                 ^
   include/linux/compiler.h:156:30: note: in definition of macro '__trace_if'
     if (__builtin_constant_p(!!(cond)) ? !!(cond) :   \
                                 ^~~~
>> drivers/platform/x86/wmi.c:861:3: note: in expansion of macro 'if'
      if (wdriver->compat_ioctl)
      ^~
   drivers/platform/x86/wmi.c:861:14: error: 'struct wmi_driver' has no member named 'compat_ioctl'; did you mean 'unlocked_ioctl'?
      if (wdriver->compat_ioctl)
                 ^
   include/linux/compiler.h:156:42: note: in definition of macro '__trace_if'
     if (__builtin_constant_p(!!(cond)) ? !!(cond) :   \
                                             ^~~~
>> drivers/platform/x86/wmi.c:861:3: note: in expansion of macro 'if'
      if (wdriver->compat_ioctl)
      ^~
   drivers/platform/x86/wmi.c:861:14: error: 'struct wmi_driver' has no member named 'compat_ioctl'; did you mean 'unlocked_ioctl'?
      if (wdriver->compat_ioctl)
                 ^
   include/linux/compiler.h:167:16: note: in definition of macro '__trace_if'
      ______r = !!(cond);     \
                   ^~~~
>> drivers/platform/x86/wmi.c:861:3: note: in expansion of macro 'if'
      if (wdriver->compat_ioctl)
      ^~
   drivers/platform/x86/wmi.c:862:17: error: 'struct wmi_driver' has no member named 'compat_ioctl'; did you mean 'unlocked_ioctl'?
       ret = wdriver->compat_ioctl(&wblock->dev, cmd, arg);
                    ^~
   At top level:
   drivers/platform/x86/wmi.c:877:13: warning: 'wmi_compat_ioctl' defined but not used [-Wunused-function]
    static long wmi_compat_ioctl(struct file *filp, unsigned int cmd,
                ^~~~~~~~~~~~~~~~

vim +/if +861 drivers/platform/x86/wmi.c

   802	
   803	static long match_ioctl(struct file *filp, unsigned int cmd, unsigned long arg,
   804				int compat)
   805	{
   806		struct wmi_ioctl_buffer __user *input =
   807			(struct wmi_ioctl_buffer __user *) arg;
   808		struct wmi_driver *wdriver = NULL;
   809		struct wmi_block *wblock = NULL;
   810		struct wmi_block *next = NULL;
   811		const char *driver_name;
   812		u64 size;
   813		int ret;
   814	
   815		if (_IOC_TYPE(cmd) != WMI_IOC)
   816			return -ENOTTY;
   817	
   818		driver_name = filp->f_path.dentry->d_iname;
   819	
   820		list_for_each_entry_safe(wblock, next, &wmi_block_list, list) {
   821			wdriver = container_of(wblock->dev.dev.driver,
   822						struct wmi_driver, driver);
   823			if (!wdriver)
   824				continue;
   825			if (strcmp(driver_name, wdriver->driver.name) == 0)
   826				break;
   827		}
   828	
   829		if (!wdriver)
   830			return -ENODEV;
   831	
   832		/* make sure we're not calling a higher instance than exists*/
   833		if (_IOC_NR(cmd) >= wblock->gblock.instance_count)
   834			return -EINVAL;
   835	
   836		/* check that required buffer size was declared by driver */
   837		if (!wblock->req_buf_size) {
   838			dev_err(&wblock->dev.dev, "Required buffer size not set\n");
   839			return -EINVAL;
   840		}
   841		if (get_user(size, &input->length)) {
   842			dev_dbg(&wblock->dev.dev, "Read length from user failed\n");
   843			return -EFAULT;
   844		}
   845		/* if it's too small, abort */
   846		if (size < wblock->req_buf_size) {
   847			dev_err(&wblock->dev.dev,
   848				"Buffer %lld too small, need at least %lld\n",
   849				size, wblock->req_buf_size);
   850			return -EINVAL;
   851		}
   852		/* if it's too big, warn, driver will only use what is needed */
   853		if (size > wblock->req_buf_size)
   854			dev_warn(&wblock->dev.dev,
   855				"Buffer %lld is bigger than required %lld\n",
   856				size, wblock->req_buf_size);
   857	
   858		if (!try_module_get(wdriver->driver.owner))
   859			return -EBUSY;
   860		if (compat) {
 > 861			if (wdriver->compat_ioctl)
   862				ret = wdriver->compat_ioctl(&wblock->dev, cmd, arg);
   863			else
   864				ret = -ENODEV;
   865		} else
   866			ret = wdriver->unlocked_ioctl(&wblock->dev, cmd, arg);
   867		module_put(wdriver->driver.owner);
   868	
   869		return ret;
   870	}
   871	static long wmi_unlocked_ioctl(struct file *filp, unsigned int cmd,
   872				       unsigned long arg)
   873	{
   874		return match_ioctl(filp, cmd, arg, 0);
   875	}
   876	

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

Attachment: .config.gz
Description: application/gzip


[Index of Archives]     [Linux Kernel Development]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux