CC: [email protected]
CC: [email protected]
BCC: [email protected]
CC: [email protected]
TO: Arnd Bergmann <[email protected]>
CC: Masahiro Yamada <[email protected]>
CC: Alex Shi <[email protected]>
CC: Nick Desaulniers <[email protected]>
CC: Miguel Ojeda <[email protected]>
CC: Nathan Chancellor <[email protected]>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 
master
head:   559089e0a93d44280ec3ab478830af319c56dbe3
commit: e8c07082a810fbb9db303a2b66b66b8d7e588b53 Kbuild: move to -std=gnu11
date:   6 weeks ago
:::::: branch date: 25 hours ago
:::::: commit date: 6 weeks ago
config: riscv-randconfig-c006-20220420 
(https://download.01.org/0day-ci/archive/20220421/[email protected]/config)
compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project 
bac6cd5bf85669e3376610cfc4c4f9ca015e7b9b)
reproduce (this is a W=1 build):
        wget 
https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O 
~/bin/make.cross
        chmod +x ~/bin/make.cross
        # install riscv cross compiling tool for clang build
        # apt-get install binutils-riscv64-linux-gnu
        # 
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=e8c07082a810fbb9db303a2b66b66b8d7e588b53
        git remote add linus 
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
        git fetch --no-tags linus master
        git checkout e8c07082a810fbb9db303a2b66b66b8d7e588b53
        # save the config file
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=riscv 
clang-analyzer 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <[email protected]>


clang-analyzer warnings: (new ones prefixed by >>)
                   ^~~~~~
   drivers/input/joystick/xpad.c:1035:3: note: Call to function 'memcpy' is 
insecure as it does not provide security checks introduced in the C11 standard. 
Replace with analogous functions that support length arguments or provides 
boundary checks such as 'memcpy_s' in case of C11
                   memcpy(xpad->odata, packet->data, packet->len);
                   ^~~~~~
   drivers/input/joystick/xpad.c:1236:2: warning: Call to function 'memcpy' is 
insecure as it does not provide security checks introduced in the C11 standard. 
Replace with analogous functions that support length arguments or provides 
boundary checks such as 'memcpy_s' in case of C11 
[clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
           memcpy(packet->data, mode_report_ack, packet->len);
           ^~~~~~
   drivers/input/joystick/xpad.c:1236:2: note: Call to function 'memcpy' is 
insecure as it does not provide security checks introduced in the C11 standard. 
Replace with analogous functions that support length arguments or provides 
boundary checks such as 'memcpy_s' in case of C11
           memcpy(packet->data, mode_report_ack, packet->len);
           ^~~~~~
   drivers/input/joystick/xpad.c:1465:2: warning: Call to function 'snprintf' 
is insecure as it does not provide security checks introduced in the C11 
standard. Replace with analogous functions that support length arguments or 
provides boundary checks such as 'snprintf_s' in case of C11 
[clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
           snprintf(led->name, sizeof(led->name), "xpad%d", xpad->pad_nr);
           ^~~~~~~~
   drivers/input/joystick/xpad.c:1465:2: note: Call to function 'snprintf' is 
insecure as it does not provide security checks introduced in the C11 standard. 
Replace with analogous functions that support length arguments or provides 
boundary checks such as 'snprintf_s' in case of C11
           snprintf(led->name, sizeof(led->name), "xpad%d", xpad->pad_nr);
           ^~~~~~~~
   Suppressed 33 warnings (33 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   43 warnings generated.
   Suppressed 43 warnings (43 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   20 warnings generated.
   Suppressed 20 warnings (20 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   20 warnings generated.
   Suppressed 20 warnings (20 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   33 warnings generated.
   Suppressed 33 warnings (33 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   43 warnings generated.
   Suppressed 43 warnings (43 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   43 warnings generated.
   Suppressed 43 warnings (43 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   31 warnings generated.
   Suppressed 31 warnings (31 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   44 warnings generated.
   drivers/input/misc/tps65218-pwrbutton.c:113:2: warning: Call to function 
'snprintf' is insecure as it does not provide security checks introduced in the 
C11 standard. Replace with analogous functions that support length arguments or 
provides boundary checks such as 'snprintf_s' in case of C11 
[clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
           snprintf(pwr->phys, sizeof(pwr->phys), "%s/input0",
           ^~~~~~~~
   drivers/input/misc/tps65218-pwrbutton.c:113:2: note: Call to function 
'snprintf' is insecure as it does not provide security checks introduced in the 
C11 standard. Replace with analogous functions that support length arguments or 
provides boundary checks such as 'snprintf_s' in case of C11
           snprintf(pwr->phys, sizeof(pwr->phys), "%s/input0",
           ^~~~~~~~
   Suppressed 43 warnings (43 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   31 warnings generated.
   Suppressed 31 warnings (31 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   27 warnings generated.
   Suppressed 27 warnings (27 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   28 warnings generated.
   drivers/input/misc/uinput.c:956:4: warning: Call to function 'memset' is 
insecure as it does not provide security checks introduced in the C11 standard. 
Replace with analogous functions that support length arguments or provides 
boundary checks such as 'memset_s' in case of C11 
[clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
                           memset(&ff_up.old, 0, sizeof(struct ff_effect));
                           ^~~~~~
   drivers/input/misc/uinput.c:956:4: note: Call to function 'memset' is 
insecure as it does not provide security checks introduced in the C11 standard. 
Replace with analogous functions that support length arguments or provides 
boundary checks such as 'memset_s' in case of C11
                           memset(&ff_up.old, 0, sizeof(struct ff_effect));
                           ^~~~~~
   Suppressed 27 warnings (27 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   41 warnings generated.
   drivers/input/misc/yealink.c:288:2: warning: Call to function 'memset' is 
insecure as it does not provide security checks introduced in the C11 standard. 
Replace with analogous functions that support length arguments or provides 
boundary checks such as 'memset_s' in case of C11 
[clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
           memset(yld->ctl_data, 0, sizeof(*(yld->ctl_data)));
           ^~~~~~
   drivers/input/misc/yealink.c:288:2: note: Call to function 'memset' is 
insecure as it does not provide security checks introduced in the C11 standard. 
Replace with analogous functions that support length arguments or provides 
boundary checks such as 'memset_s' in case of C11
           memset(yld->ctl_data, 0, sizeof(*(yld->ctl_data)));
           ^~~~~~
   drivers/input/misc/yealink.c:305:3: warning: Call to function 'memcpy' is 
insecure as it does not provide security checks introduced in the C11 standard. 
Replace with analogous functions that support length arguments or provides 
boundary checks such as 'memcpy_s' in case of C11 
[clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
                   memcpy(p->data, &buf[ix], len);
                   ^~~~~~
   drivers/input/misc/yealink.c:305:3: note: Call to function 'memcpy' is 
insecure as it does not provide security checks introduced in the C11 standard. 
Replace with analogous functions that support length arguments or provides 
boundary checks such as 'memcpy_s' in case of C11
                   memcpy(p->data, &buf[ix], len);
                   ^~~~~~
   drivers/input/misc/yealink.c:321:2: warning: Call to function 'memset' is 
insecure as it does not provide security checks introduced in the C11 standard. 
Replace with analogous functions that support length arguments or provides 
boundary checks such as 'memset_s' in case of C11 
[clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
           memset(yld->ctl_data, 0, sizeof(*(yld->ctl_data)));
           ^~~~~~
   drivers/input/misc/yealink.c:321:2: note: Call to function 'memset' is 
insecure as it does not provide security checks introduced in the C11 standard. 
Replace with analogous functions that support length arguments or provides 
boundary checks such as 'memset_s' in case of C11
           memset(yld->ctl_data, 0, sizeof(*(yld->ctl_data)));
           ^~~~~~
   drivers/input/misc/yealink.c:516:2: warning: Call to function 'memset' is 
insecure as it does not provide security checks introduced in the C11 standard. 
Replace with analogous functions that support length arguments or provides 
boundary checks such as 'memset_s' in case of C11 
[clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
           memset(yld->ctl_data, 0, sizeof(*(yld->ctl_data)));
           ^~~~~~
   drivers/input/misc/yealink.c:516:2: note: Call to function 'memset' is 
insecure as it does not provide security checks introduced in the C11 standard. 
Replace with analogous functions that support length arguments or provides 
boundary checks such as 'memset_s' in case of C11
           memset(yld->ctl_data, 0, sizeof(*(yld->ctl_data)));
           ^~~~~~
   drivers/input/misc/yealink.c:558:2: warning: Call to function 'memcpy' is 
insecure as it does not provide security checks introduced in the C11 standard. 
Replace with analogous functions that support length arguments or provides 
boundary checks such as 'memcpy_s' in case of C11 
[clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
           memcpy(buf, &map_seg7, sizeof(map_seg7));
           ^~~~~~
   drivers/input/misc/yealink.c:558:2: note: Call to function 'memcpy' is 
insecure as it does not provide security checks introduced in the C11 standard. 
Replace with analogous functions that support length arguments or provides 
boundary checks such as 'memcpy_s' in case of C11
           memcpy(buf, &map_seg7, sizeof(map_seg7));
           ^~~~~~
   drivers/input/misc/yealink.c:567:2: warning: Call to function 'memcpy' is 
insecure as it does not provide security checks introduced in the C11 standard. 
Replace with analogous functions that support length arguments or provides 
boundary checks such as 'memcpy_s' in case of C11 
[clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
           memcpy(&map_seg7, buf, sizeof(map_seg7));
           ^~~~~~
   drivers/input/misc/yealink.c:567:2: note: Call to function 'memcpy' is 
insecure as it does not provide security checks introduced in the C11 standard. 
Replace with analogous functions that support length arguments or provides 
boundary checks such as 'memcpy_s' in case of C11
           memcpy(&map_seg7, buf, sizeof(map_seg7));
           ^~~~~~
>> drivers/input/misc/yealink.c:691:10: warning: Call to function 'sprintf' is 
>> insecure as it does not provide bounding of the memory buffer or security 
>> checks introduced in the C11 standard. Replace with analogous functions that 
>> support length arguments or provides boundary checks such as 'sprintf_s' in 
>> case of C11 
>> [clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
                   ret += sprintf(&buf[ret], "%s %s\n",
                          ^~~~~~~
   drivers/input/misc/yealink.c:691:10: note: Call to function 'sprintf' is 
insecure as it does not provide bounding of the memory buffer or security 
checks introduced in the C11 standard. Replace with analogous functions that 
support length arguments or provides boundary checks such as 'sprintf_s' in 
case of C11
                   ret += sprintf(&buf[ret], "%s %s\n",
                          ^~~~~~~
   drivers/input/misc/yealink.c:979:2: warning: Value stored to 'ret' is never 
read [clang-analyzer-deadcode.DeadStores]
           ret = sysfs_create_group(&intf->dev.kobj, &yld_attr_group);
           ^     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/input/misc/yealink.c:979:2: note: Value stored to 'ret' is never read
           ret = sysfs_create_group(&intf->dev.kobj, &yld_attr_group);
           ^     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   Suppressed 33 warnings (33 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   34 warnings generated.
   drivers/usb/serial/cypress_m8.c:705:2: warning: Call to function 'memset' is 
insecure as it does not provide security checks introduced in the C11 standard. 
Replace with analogous functions that support length arguments or provides 
boundary checks such as 'memset_s' in case of C11 
[clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
           memset(port->interrupt_out_urb->transfer_buffer, 0,
           ^~~~~~
   drivers/usb/serial/cypress_m8.c:705:2: note: Call to function 'memset' is 
insecure as it does not provide security checks introduced in the C11 standard. 
Replace with analogous functions that support length arguments or provides 
boundary checks such as 'memset_s' in case of C11
           memset(port->interrupt_out_urb->transfer_buffer, 0,
           ^~~~~~
   Suppressed 33 warnings (33 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   33 warnings generated.
   Suppressed 33 warnings (33 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   33 warnings generated.
   Suppressed 33 warnings (33 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   33 warnings generated.
   Suppressed 33 warnings (33 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   31 warnings generated.
   Suppressed 31 warnings (31 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   33 warnings generated.
   drivers/accessibility/speakup/synth.c:225:6: warning: Call to function 
'vsnprintf' is insecure as it does not provide security checks introduced in 
the C11 standard. Replace with analogous functions that support length 
arguments or provides boundary checks such as 'vsnprintf_s' in case of C11 
[clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
           r = vsnprintf(buf, sizeof(buf), fmt, args);
               ^~~~~~~~~
   drivers/accessibility/speakup/synth.c:225:6: note: Call to function 
'vsnprintf' is insecure as it does not provide security checks introduced in 
the C11 standard. Replace with analogous functions that support length 
arguments or provides boundary checks such as 'vsnprintf_s' in case of C11
           r = vsnprintf(buf, sizeof(buf), fmt, args);
               ^~~~~~~~~
   drivers/accessibility/speakup/synth.c:331:2: warning: Call to function 
'memset' is insecure as it does not provide security checks introduced in the 
C11 standard. Replace with analogous functions that support length arguments or 
provides boundary checks such as 'memset_s' in case of C11 
[clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
           memset(&synth_res, 0, sizeof(synth_res));
           ^~~~~~
   drivers/accessibility/speakup/synth.c:331:2: note: Call to function 'memset' 
is insecure as it does not provide security checks introduced in the C11 
standard. Replace with analogous functions that support length arguments or 
provides boundary checks such as 'memset_s' in case of C11
           memset(&synth_res, 0, sizeof(synth_res));
           ^~~~~~
   Suppressed 31 warnings (31 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   31 warnings generated.
   Suppressed 31 warnings (31 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   35 warnings generated.
   drivers/char/xillybus/xillyusb.c:355:2: warning: Call to function 'memcpy' 
is insecure as it does not provide security checks introduced in the C11 
standard. Replace with analogous functions that support length arguments or 
provides boundary checks such as 'memcpy_s' in case of C11 
[clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
           memcpy(dst, src, n);
           ^~~~~~
   drivers/char/xillybus/xillyusb.c:355:2: note: Call to function 'memcpy' is 
insecure as it does not provide security checks introduced in the C11 standard. 
Replace with analogous functions that support length arguments or provides 
boundary checks such as 'memcpy_s' in case of C11
           memcpy(dst, src, n);
           ^~~~~~
   drivers/char/xillybus/xillyusb.c:1153:4: warning: Value stored to 'rc' is 
never read [clang-analyzer-deadcode.DeadStores]
                           rc = wait_event_interruptible_timeout(chan->flushq,
                           ^
   drivers/char/xillybus/xillyusb.c:1153:4: note: Value stored to 'rc' is never 
read
   Suppressed 33 warnings (33 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   43 warnings generated.
   Suppressed 43 warnings (43 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   10 warnings generated.
   Suppressed 10 warnings (9 in non-user code, 1 with check filters).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   33 warnings generated.
   Suppressed 33 warnings (33 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   45 warnings generated.
   Suppressed 45 warnings (45 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   43 warnings generated.
   Suppressed 43 warnings (43 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   43 warnings generated.
   Suppressed 43 warnings (43 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   45 warnings generated.
   Suppressed 45 warnings (45 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   35 warnings generated.
   drivers/usb/serial/usb-serial.c:781:9: warning: Call to function 'sprintf' 
is insecure as it does not provide security checks introduced in the C11 
standard. Replace with analogous functions that support length arguments or 
provides boundary checks such as 'sprintf_s' in case of C11 
[clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
           return sprintf(buf, "%u\n", port->port_number);
                  ^~~~~~~
   drivers/usb/serial/usb-serial.c:781:9: note: Call to function 'sprintf' is 
insecure as it does not provide security checks introduced in the C11 standard. 
Replace with analogous functions that support length arguments or provides 
boundary checks such as 'sprintf_s' in case of C11
           return sprintf(buf, "%u\n", port->port_number);
                  ^~~~~~~
   drivers/usb/serial/usb-serial.c:1524:2: warning: Value stored to 'rc' is 
never read [clang-analyzer-deadcode.DeadStores]
           rc = driver_attach(&udriver->drvwrap.driver);
           ^    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/usb/serial/usb-serial.c:1524:2: note: Value stored to 'rc' is never 
read
           rc = driver_attach(&udriver->drvwrap.driver);
           ^    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   Suppressed 33 warnings (33 in non-user code).

vim +691 drivers/input/misc/yealink.c

aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  552  
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  553  /* 
Interface to the 7-segments translation table aka. char set.
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  554   */
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  555  
static ssize_t show_map(struct device *dev, struct device_attribute *attr,
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  556       
                        char *buf)
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  557  {
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16 @558       
memcpy(buf, &map_seg7, sizeof(map_seg7));
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  559       
return sizeof(map_seg7);
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  560  }
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  561  
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  562  
static ssize_t store_map(struct device *dev, struct device_attribute *attr,
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  563       
                        const char *buf, size_t cnt)
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  564  {
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  565       
if (cnt != sizeof(map_seg7))
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  566       
        return -EINVAL;
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  567       
memcpy(&map_seg7, buf, sizeof(map_seg7));
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  568       
return sizeof(map_seg7);
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  569  }
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  570  
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  571  /* 
Interface to the LCD.
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  572   */
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  573  
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  574  /* 
Reading /sys/../lineX will return the format string with its settings:
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  575   *
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  576   * 
Example:
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  577   * 
cat ./line3
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  578   * 
888888888888
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  579   * 
Linux Rocks!
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  580   */
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  581  
static ssize_t show_line(struct device *dev, char *buf, int a, int b)
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  582  {
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  583       
struct yealink_dev *yld;
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  584       
int i;
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  585  
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  586       
down_read(&sysfs_rwsema);
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  587       
yld = dev_get_drvdata(dev);
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  588       
if (yld == NULL) {
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  589       
        up_read(&sysfs_rwsema);
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  590       
        return -ENODEV;
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  591       
}
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  592  
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  593       
for (i = a; i < b; i++)
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  594       
        *buf++ = lcdMap[i].type;
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  595       
*buf++ = '\n';
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  596       
for (i = a; i < b; i++)
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  597       
        *buf++ = yld->lcdMap[i];
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  598       
*buf++ = '\n';
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  599       
*buf = 0;
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  600  
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  601       
up_read(&sysfs_rwsema);
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  602       
return 3 + ((b - a) << 1);
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  603  }
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  604  
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  605  
static ssize_t show_line1(struct device *dev, struct device_attribute *attr,
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  606       
                char *buf)
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  607  {
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  608       
return show_line(dev, buf, LCD_LINE1_OFFSET, LCD_LINE2_OFFSET);
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  609  }
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  610  
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  611  
static ssize_t show_line2(struct device *dev, struct device_attribute *attr,
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  612       
                char *buf)
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  613  {
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  614       
return show_line(dev, buf, LCD_LINE2_OFFSET, LCD_LINE3_OFFSET);
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  615  }
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  616  
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  617  
static ssize_t show_line3(struct device *dev, struct device_attribute *attr,
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  618       
                char *buf)
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  619  {
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  620       
return show_line(dev, buf, LCD_LINE3_OFFSET, LCD_LINE4_OFFSET);
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  621  }
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  622  
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  623  /* 
Writing to /sys/../lineX will set the coresponding LCD line.
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  624   * - 
Excess characters are ignored.
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  625   * - 
If less characters are written than allowed, the remaining digits are
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  626   *   
unchanged.
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  627   * - 
The '\n' or '\t' char is a placeholder, it does not overwrite the
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  628   *   
original content.
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  629   */
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  630  
static ssize_t store_line(struct device *dev, const char *buf, size_t count,
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  631       
        int el, size_t len)
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  632  {
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  633       
struct yealink_dev *yld;
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  634       
int i;
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  635  
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  636       
down_write(&sysfs_rwsema);
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  637       
yld = dev_get_drvdata(dev);
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  638       
if (yld == NULL) {
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  639       
        up_write(&sysfs_rwsema);
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  640       
        return -ENODEV;
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  641       
}
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  642  
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  643       
if (len > count)
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  644       
        len = count;
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  645       
for (i = 0; i < len; i++)
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  646       
        setChar(yld, el++, buf[i]);
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  647  
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  648       
up_write(&sysfs_rwsema);
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  649       
return count;
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  650  }
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  651  
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  652  
static ssize_t store_line1(struct device *dev, struct device_attribute *attr,
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  653       
                        const char *buf, size_t count)
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  654  {
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  655       
return store_line(dev, buf, count, LCD_LINE1_OFFSET, LCD_LINE1_SIZE);
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  656  }
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  657  
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  658  
static ssize_t store_line2(struct device *dev, struct device_attribute *attr,
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  659       
                        const char *buf, size_t count)
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  660  {
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  661       
return store_line(dev, buf, count, LCD_LINE2_OFFSET, LCD_LINE2_SIZE);
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  662  }
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  663  
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  664  
static ssize_t store_line3(struct device *dev, struct device_attribute *attr,
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  665       
                        const char *buf, size_t count)
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  666  {
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  667       
return store_line(dev, buf, count, LCD_LINE3_OFFSET, LCD_LINE3_SIZE);
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  668  }
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  669  
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  670  /* 
Interface to visible and audible "icons", these include:
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  671   * 
pictures on the LCD, the LED, and the dialtone signal.
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  672   */
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  673  
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  674  /* 
Get a list of "switchable elements" with their current state. */
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  675  
static ssize_t get_icons(struct device *dev, struct device_attribute *attr,
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  676       
                char *buf)
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  677  {
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  678       
struct yealink_dev *yld;
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  679       
int i, ret = 1;
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  680  
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  681       
down_read(&sysfs_rwsema);
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  682       
yld = dev_get_drvdata(dev);
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  683       
if (yld == NULL) {
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  684       
        up_read(&sysfs_rwsema);
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  685       
        return -ENODEV;
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  686       
}
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  687  
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  688       
for (i = 0; i < ARRAY_SIZE(lcdMap); i++) {
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  689       
        if (lcdMap[i].type != '.')
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  690       
                continue;
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16 @691       
        ret += sprintf(&buf[ret], "%s %s\n",
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  692       
                        yld->lcdMap[i] == ' ' ? "  " : "on",
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  693       
                        lcdMap[i].u.p.name);
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  694       
}
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  695       
up_read(&sysfs_rwsema);
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  696       
return ret;
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  697  }
aca951a22a1d93e drivers/usb/input/yealink.c Henk Vergonet 2005-08-16  698  

:::::: The code at line 691 was first introduced by commit
:::::: aca951a22a1d93ebe31b54052b3eb9a8196df2fc [PATCH] 
input-driver-yealink-P1K-usb-phone

:::::: TO: Henk <[email protected]>
:::::: CC: Greg Kroah-Hartman <[email protected]>

-- 
0-DAY CI Kernel Test Service
https://01.org/lkp
_______________________________________________
kbuild mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to