CC: [email protected]
TO: Alexandre Belloni <[email protected]>

tree:   https://github.com/alexandrebelloni/linux rtc-misc
head:   e133d60472e6fd2c66009703416386df7688d342
commit: 36c52b4430b4cb116160a2fd5c9b0cdf9de32f6f [3/9] WIP PARAMS
:::::: branch date: 8 hours ago
:::::: commit date: 3 weeks ago
config: x86_64-randconfig-c001-20210804 (attached as .config)
compiler: clang version 13.0.0 (https://github.com/llvm/llvm-project 
4f71f59bf3d9914188a11d0c41bedbb339d36ff5)
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 x86_64 cross compiling tool for clang build
        # apt-get install binutils-x86-64-linux-gnu
        # 
https://github.com/alexandrebelloni/linux/commit/36c52b4430b4cb116160a2fd5c9b0cdf9de32f6f
        git remote add alexandrebelloni 
https://github.com/alexandrebelloni/linux
        git fetch --no-tags alexandrebelloni rtc-misc
        git checkout 36c52b4430b4cb116160a2fd5c9b0cdf9de32f6f
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=x86_64 
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 >>)
                   ^       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   fs/binfmt_elf.c:1293:3: note: Value stored to 'error' is never read
                   error = vm_mmap(NULL, 0, PAGE_SIZE, PROT_READ | PROT_EXEC,
                   ^       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   Suppressed 6 warnings (6 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 (10 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.
   5 warnings generated.
   Suppressed 5 warnings (5 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.
   5 warnings generated.
   Suppressed 5 warnings (5 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.
   6 warnings generated.
   Suppressed 6 warnings (6 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.
   6 warnings generated.
   Suppressed 6 warnings (6 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.
   6 warnings generated.
   Suppressed 6 warnings (6 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.
   5 warnings generated.
   Suppressed 5 warnings (5 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.
   5 warnings generated.
   Suppressed 5 warnings (5 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.
   5 warnings generated.
   Suppressed 5 warnings (5 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.
   5 warnings generated.
   Suppressed 5 warnings (5 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.
   6 warnings generated.
   Suppressed 6 warnings (6 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.
   5 warnings generated.
   Suppressed 5 warnings (5 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.
   5 warnings generated.
   Suppressed 5 warnings (5 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.
   5 warnings generated.
   Suppressed 5 warnings (5 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.
   14 warnings generated.
   Suppressed 14 warnings (14 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.
   14 warnings generated.
   Suppressed 14 warnings (14 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.
   14 warnings generated.
   Suppressed 14 warnings (14 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.
   14 warnings generated.
   Suppressed 14 warnings (14 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.
   14 warnings generated.
   Suppressed 14 warnings (14 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.
   14 warnings generated.
   Suppressed 14 warnings (14 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.
   14 warnings generated.
   Suppressed 14 warnings (14 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.
   15 warnings generated.
   fs/nfs/direct.c:703:19: warning: Value stored to 'req' during its 
initialization is never read [clang-analyzer-deadcode.DeadStores]
           struct nfs_page *req = nfs_list_entry(hdr->pages.next);
                            ^~~   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   fs/nfs/direct.c:703:19: note: Value stored to 'req' during its 
initialization is never read
           struct nfs_page *req = nfs_list_entry(hdr->pages.next);
                            ^~~   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   Suppressed 14 warnings (14 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.
   14 warnings generated.
   Suppressed 14 warnings (14 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.
   14 warnings generated.
   Suppressed 14 warnings (14 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.
   14 warnings generated.
   Suppressed 14 warnings (14 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.
   6 warnings generated.
   Suppressed 6 warnings (6 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.
   6 warnings generated.
   Suppressed 6 warnings (6 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.
   6 warnings generated.
   Suppressed 6 warnings (6 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.
   6 warnings generated.
   Suppressed 6 warnings (6 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.
   8 warnings generated.
>> drivers/rtc/dev.c:420:4: warning: Value stored to 'err' is never read 
>> [clang-analyzer-deadcode.DeadStores]
                           err = -EFAULT;
                           ^     ~~~~~~~
   drivers/rtc/dev.c:420:4: note: Value stored to 'err' is never read
                           err = -EFAULT;
                           ^     ~~~~~~~
   Suppressed 7 warnings (7 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.
   7 warnings generated.
   Suppressed 7 warnings (7 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.
   7 warnings generated.
   Suppressed 7 warnings (7 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.
   7 warnings generated.
   Suppressed 7 warnings (7 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.
   8 warnings generated.
   Suppressed 8 warnings (8 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.
   9 warnings generated.
   drivers/rtc/rtc-ab-eoz9.c:552:3: warning: Value stored to 'ret' is never 
read [clang-analyzer-deadcode.DeadStores]
                   ret = device_init_wakeup(dev, true);
                   ^     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/rtc/rtc-ab-eoz9.c:552:3: note: Value stored to 'ret' is never read
                   ret = device_init_wakeup(dev, true);
                   ^     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   Suppressed 8 warnings (8 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.
   9 warnings generated.
   drivers/rtc/rtc-abx80x.c:534:3: warning: Value stored to 'status' is never 
read [clang-analyzer-deadcode.DeadStores]
                   status &= ~ABX8XX_STATUS_BLF;
                   ^         ~~~~~~~~~~~~~~~~~~
   drivers/rtc/rtc-abx80x.c:534:3: note: Value stored to 'status' is never read
                   status &= ~ABX8XX_STATUS_BLF;
                   ^         ~~~~~~~~~~~~~~~~~~
   Suppressed 8 warnings (8 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.
   8 warnings generated.
   Suppressed 8 warnings (8 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.
   7 warnings generated.
   Suppressed 7 warnings (7 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.
   7 warnings generated.
   Suppressed 7 warnings (7 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.
   8 warnings generated.
   drivers/staging/greybus/audio_topology.c:814:3: warning: Value stored to 
'mask' is never read [clang-analyzer-deadcode.DeadStores]
                   mask |= e->mask << e->shift_r;
                   ^       ~~~~~~~~~~~~~~~~~~~~~
   drivers/staging/greybus/audio_topology.c:814:3: note: Value stored to 'mask' 
is never read
                   mask |= e->mask << e->shift_r;
                   ^       ~~~~~~~~~~~~~~~~~~~~~
   Suppressed 7 warnings (6 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.
   5 warnings generated.
   Suppressed 5 warnings (5 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.
   8 warnings generated.
   drivers/acpi/acpi_processor.c:370:2: warning: Call to function 'strcpy' is 
insecure as it does not provide bounding of the memory buffer. Replace 
unbounded copy functions with analogous functions that support length arguments 
such as 'strlcpy'. CWE-119 [clang-analyzer-security.insecureAPI.strcpy]
           strcpy(acpi_device_name(device), ACPI_PROCESSOR_DEVICE_NAME);
           ^~~~~~
   drivers/acpi/acpi_processor.c:370:2: note: Call to function 'strcpy' is 
insecure as it does not provide bounding of the memory buffer. Replace 
unbounded copy functions with analogous functions that support length arguments 
such as 'strlcpy'. CWE-119
           strcpy(acpi_device_name(device), ACPI_PROCESSOR_DEVICE_NAME);
           ^~~~~~
   drivers/acpi/acpi_processor.c:371:2: warning: Call to function 'strcpy' is 
insecure as it does not provide bounding of the memory buffer. Replace 
unbounded copy functions with analogous functions that support length arguments 
such as 'strlcpy'. CWE-119 [clang-analyzer-security.insecureAPI.strcpy]
           strcpy(acpi_device_class(device), ACPI_PROCESSOR_CLASS);
           ^~~~~~
   drivers/acpi/acpi_processor.c:371:2: note: Call to function 'strcpy' is 
insecure as it does not provide bounding of the memory buffer. Replace 
unbounded copy functions with analogous functions that support length arguments 
such as 'strlcpy'. CWE-119
           strcpy(acpi_device_class(device), ACPI_PROCESSOR_CLASS);
           ^~~~~~
   Suppressed 6 warnings (6 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.
   5 warnings generated.
   Suppressed 5 warnings (5 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.
   5 warnings generated.
   Suppressed 5 warnings (5 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.
   5 warnings generated.
   Suppressed 5 warnings (5 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.
   7 warnings generated.
   Suppressed 7 warnings (7 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.
   7 warnings generated.
   Suppressed 7 warnings (7 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.
   7 warnings generated.
   Suppressed 7 warnings (7 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.
   7 warnings generated.
   Suppressed 7 warnings (7 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.
   7 warnings generated.
   Suppressed 7 warnings (7 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.
   5 warnings generated.
   Suppressed 5 warnings (5 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.

vim +/err +420 drivers/rtc/dev.c

e824290e5dcfaf drivers/rtc/rtc-dev.c Alessandro Zummo  2006-03-27  202  
5ad31a57515714 drivers/rtc/rtc-dev.c David Brownell    2008-07-23  203  static 
long rtc_dev_ioctl(struct file *file,
e824290e5dcfaf drivers/rtc/rtc-dev.c Alessandro Zummo  2006-03-27  204          
                  unsigned int cmd, unsigned long arg)
e824290e5dcfaf drivers/rtc/rtc-dev.c Alessandro Zummo  2006-03-27  205  {
e824290e5dcfaf drivers/rtc/rtc-dev.c Alessandro Zummo  2006-03-27  206          
int err = 0;
ab6a2d70d18edc drivers/rtc/rtc-dev.c David Brownell    2007-05-08  207          
struct rtc_device *rtc = file->private_data;
ff8371ac9a5a55 drivers/rtc/rtc-dev.c David Brownell    2006-09-30  208          
const struct rtc_class_ops *ops = rtc->ops;
e824290e5dcfaf drivers/rtc/rtc-dev.c Alessandro Zummo  2006-03-27  209          
struct rtc_time tm;
e824290e5dcfaf drivers/rtc/rtc-dev.c Alessandro Zummo  2006-03-27  210          
struct rtc_wkalrm alarm;
36c52b4430b4cb drivers/rtc/dev.c     Alexandre Belloni 2021-01-16  211          
struct rtc_param param;
e824290e5dcfaf drivers/rtc/rtc-dev.c Alessandro Zummo  2006-03-27  212          
void __user *uarg = (void __user *)arg;
e824290e5dcfaf drivers/rtc/rtc-dev.c Alessandro Zummo  2006-03-27  213  
5ad31a57515714 drivers/rtc/rtc-dev.c David Brownell    2008-07-23  214          
err = mutex_lock_interruptible(&rtc->ops_lock);
5ad31a57515714 drivers/rtc/rtc-dev.c David Brownell    2008-07-23  215          
if (err)
b68bb2632453a9 drivers/rtc/rtc-dev.c David Brownell    2008-07-29  216          
        return err;
5ad31a57515714 drivers/rtc/rtc-dev.c David Brownell    2008-07-23  217  
2601a46474db2d drivers/rtc/rtc-dev.c David Brownell    2006-11-25  218          
/* check that the calling task has appropriate permissions
110d693d589864 drivers/rtc/rtc-dev.c Alessandro Zummo  2006-06-25  219          
 * for certain ioctls. doing this check here is useful
110d693d589864 drivers/rtc/rtc-dev.c Alessandro Zummo  2006-06-25  220          
 * to avoid duplicate code in each driver.
110d693d589864 drivers/rtc/rtc-dev.c Alessandro Zummo  2006-06-25  221          
 */
110d693d589864 drivers/rtc/rtc-dev.c Alessandro Zummo  2006-06-25  222          
switch (cmd) {
110d693d589864 drivers/rtc/rtc-dev.c Alessandro Zummo  2006-06-25  223          
case RTC_EPOCH_SET:
110d693d589864 drivers/rtc/rtc-dev.c Alessandro Zummo  2006-06-25  224          
case RTC_SET_TIME:
36c52b4430b4cb drivers/rtc/dev.c     Alexandre Belloni 2021-01-16  225          
case RTC_PARAM_SET:
110d693d589864 drivers/rtc/rtc-dev.c Alessandro Zummo  2006-06-25  226          
        if (!capable(CAP_SYS_TIME))
5ad31a57515714 drivers/rtc/rtc-dev.c David Brownell    2008-07-23  227          
                err = -EACCES;
110d693d589864 drivers/rtc/rtc-dev.c Alessandro Zummo  2006-06-25  228          
        break;
110d693d589864 drivers/rtc/rtc-dev.c Alessandro Zummo  2006-06-25  229  
110d693d589864 drivers/rtc/rtc-dev.c Alessandro Zummo  2006-06-25  230          
case RTC_IRQP_SET:
110d693d589864 drivers/rtc/rtc-dev.c Alessandro Zummo  2006-06-25  231          
        if (arg > rtc->max_user_freq && !capable(CAP_SYS_RESOURCE))
5ad31a57515714 drivers/rtc/rtc-dev.c David Brownell    2008-07-23  232          
                err = -EACCES;
110d693d589864 drivers/rtc/rtc-dev.c Alessandro Zummo  2006-06-25  233          
        break;
110d693d589864 drivers/rtc/rtc-dev.c Alessandro Zummo  2006-06-25  234  
110d693d589864 drivers/rtc/rtc-dev.c Alessandro Zummo  2006-06-25  235          
case RTC_PIE_ON:
9d013d3b14f4c8 drivers/rtc/rtc-dev.c Bryan Kadzban     2007-10-16  236          
        if (rtc->irq_freq > rtc->max_user_freq &&
9d013d3b14f4c8 drivers/rtc/rtc-dev.c Bryan Kadzban     2007-10-16  237          
            !capable(CAP_SYS_RESOURCE))
5ad31a57515714 drivers/rtc/rtc-dev.c David Brownell    2008-07-23  238          
                err = -EACCES;
110d693d589864 drivers/rtc/rtc-dev.c Alessandro Zummo  2006-06-25  239          
        break;
110d693d589864 drivers/rtc/rtc-dev.c Alessandro Zummo  2006-06-25  240          
}
110d693d589864 drivers/rtc/rtc-dev.c Alessandro Zummo  2006-06-25  241  
5ad31a57515714 drivers/rtc/rtc-dev.c David Brownell    2008-07-23  242          
if (err)
5ad31a57515714 drivers/rtc/rtc-dev.c David Brownell    2008-07-23  243          
        goto done;
5ad31a57515714 drivers/rtc/rtc-dev.c David Brownell    2008-07-23  244  
ac54cd2bd5b4db drivers/rtc/rtc-dev.c John Stultz       2011-02-02  245          
/*
8a0bdfd7a05f5b drivers/rtc/rtc-dev.c David Brownell    2008-02-06  246          
 * Drivers *SHOULD NOT* provide ioctl implementations
8a0bdfd7a05f5b drivers/rtc/rtc-dev.c David Brownell    2008-02-06  247          
 * for these requests.  Instead, provide methods to
8a0bdfd7a05f5b drivers/rtc/rtc-dev.c David Brownell    2008-02-06  248          
 * support the following code, so that the RTC's main
8a0bdfd7a05f5b drivers/rtc/rtc-dev.c David Brownell    2008-02-06  249          
 * features are accessible without using ioctls.
8a0bdfd7a05f5b drivers/rtc/rtc-dev.c David Brownell    2008-02-06  250          
 *
8a0bdfd7a05f5b drivers/rtc/rtc-dev.c David Brownell    2008-02-06  251          
 * RTC and alarm times will be in UTC, by preference,
8a0bdfd7a05f5b drivers/rtc/rtc-dev.c David Brownell    2008-02-06  252          
 * but dual-booting with MS-Windows implies RTCs must
8a0bdfd7a05f5b drivers/rtc/rtc-dev.c David Brownell    2008-02-06  253          
 * use the local wall clock time.
e824290e5dcfaf drivers/rtc/rtc-dev.c Alessandro Zummo  2006-03-27  254          
 */
e824290e5dcfaf drivers/rtc/rtc-dev.c Alessandro Zummo  2006-03-27  255  
e824290e5dcfaf drivers/rtc/rtc-dev.c Alessandro Zummo  2006-03-27  256          
switch (cmd) {
e824290e5dcfaf drivers/rtc/rtc-dev.c Alessandro Zummo  2006-03-27  257          
case RTC_ALM_READ:
5ad31a57515714 drivers/rtc/rtc-dev.c David Brownell    2008-07-23  258          
        mutex_unlock(&rtc->ops_lock);
5ad31a57515714 drivers/rtc/rtc-dev.c David Brownell    2008-07-23  259  
ab6a2d70d18edc drivers/rtc/rtc-dev.c David Brownell    2007-05-08  260          
        err = rtc_read_alarm(rtc, &alarm);
e824290e5dcfaf drivers/rtc/rtc-dev.c Alessandro Zummo  2006-03-27  261          
        if (err < 0)
e824290e5dcfaf drivers/rtc/rtc-dev.c Alessandro Zummo  2006-03-27  262          
                return err;
e824290e5dcfaf drivers/rtc/rtc-dev.c Alessandro Zummo  2006-03-27  263  
e824290e5dcfaf drivers/rtc/rtc-dev.c Alessandro Zummo  2006-03-27  264          
        if (copy_to_user(uarg, &alarm.time, sizeof(tm)))
5ad31a57515714 drivers/rtc/rtc-dev.c David Brownell    2008-07-23  265          
                err = -EFAULT;
5ad31a57515714 drivers/rtc/rtc-dev.c David Brownell    2008-07-23  266          
        return err;
e824290e5dcfaf drivers/rtc/rtc-dev.c Alessandro Zummo  2006-03-27  267  
e824290e5dcfaf drivers/rtc/rtc-dev.c Alessandro Zummo  2006-03-27  268          
case RTC_ALM_SET:
5ad31a57515714 drivers/rtc/rtc-dev.c David Brownell    2008-07-23  269          
        mutex_unlock(&rtc->ops_lock);
5ad31a57515714 drivers/rtc/rtc-dev.c David Brownell    2008-07-23  270  
e824290e5dcfaf drivers/rtc/rtc-dev.c Alessandro Zummo  2006-03-27  271          
        if (copy_from_user(&alarm.time, uarg, sizeof(tm)))
e824290e5dcfaf drivers/rtc/rtc-dev.c Alessandro Zummo  2006-03-27  272          
                return -EFAULT;
e824290e5dcfaf drivers/rtc/rtc-dev.c Alessandro Zummo  2006-03-27  273  
e824290e5dcfaf drivers/rtc/rtc-dev.c Alessandro Zummo  2006-03-27  274          
        alarm.enabled = 0;
e824290e5dcfaf drivers/rtc/rtc-dev.c Alessandro Zummo  2006-03-27  275          
        alarm.pending = 0;
e824290e5dcfaf drivers/rtc/rtc-dev.c Alessandro Zummo  2006-03-27  276          
        alarm.time.tm_wday = -1;
e824290e5dcfaf drivers/rtc/rtc-dev.c Alessandro Zummo  2006-03-27  277          
        alarm.time.tm_yday = -1;
e824290e5dcfaf drivers/rtc/rtc-dev.c Alessandro Zummo  2006-03-27  278          
        alarm.time.tm_isdst = -1;
f8245c26886c91 drivers/rtc/rtc-dev.c David Brownell    2007-05-08  279  
f8245c26886c91 drivers/rtc/rtc-dev.c David Brownell    2007-05-08  280          
        /* RTC_ALM_SET alarms may be up to 24 hours in the future.
f8245c26886c91 drivers/rtc/rtc-dev.c David Brownell    2007-05-08  281          
         * Rather than expecting every RTC to implement "don't care"
f8245c26886c91 drivers/rtc/rtc-dev.c David Brownell    2007-05-08  282          
         * for day/month/year fields, just force the alarm to have
f8245c26886c91 drivers/rtc/rtc-dev.c David Brownell    2007-05-08  283          
         * the right values for those fields.
f8245c26886c91 drivers/rtc/rtc-dev.c David Brownell    2007-05-08  284          
         *
f8245c26886c91 drivers/rtc/rtc-dev.c David Brownell    2007-05-08  285          
         * RTC_WKALM_SET should be used instead.  Not only does it
f8245c26886c91 drivers/rtc/rtc-dev.c David Brownell    2007-05-08  286          
         * eliminate the need for a separate RTC_AIE_ON call, it
f8245c26886c91 drivers/rtc/rtc-dev.c David Brownell    2007-05-08  287          
         * doesn't have the "alarm 23:59:59 in the future" race.
f8245c26886c91 drivers/rtc/rtc-dev.c David Brownell    2007-05-08  288          
         *
f8245c26886c91 drivers/rtc/rtc-dev.c David Brownell    2007-05-08  289          
         * NOTE:  some legacy code may have used invalid fields as
f8245c26886c91 drivers/rtc/rtc-dev.c David Brownell    2007-05-08  290          
         * wildcards, exposing hardware "periodic alarm" capabilities.
f8245c26886c91 drivers/rtc/rtc-dev.c David Brownell    2007-05-08  291          
         * Not supported here.
f8245c26886c91 drivers/rtc/rtc-dev.c David Brownell    2007-05-08  292          
         */
f8245c26886c91 drivers/rtc/rtc-dev.c David Brownell    2007-05-08  293          
        {
4ec2364f491023 drivers/rtc/rtc-dev.c Xunlei Pang       2015-01-22  294          
                time64_t now, then;
f8245c26886c91 drivers/rtc/rtc-dev.c David Brownell    2007-05-08  295  
f8245c26886c91 drivers/rtc/rtc-dev.c David Brownell    2007-05-08  296          
                err = rtc_read_time(rtc, &tm);
f8245c26886c91 drivers/rtc/rtc-dev.c David Brownell    2007-05-08  297          
                if (err < 0)
f8245c26886c91 drivers/rtc/rtc-dev.c David Brownell    2007-05-08  298          
                        return err;
4ec2364f491023 drivers/rtc/rtc-dev.c Xunlei Pang       2015-01-22  299          
                now = rtc_tm_to_time64(&tm);
f8245c26886c91 drivers/rtc/rtc-dev.c David Brownell    2007-05-08  300  
f8245c26886c91 drivers/rtc/rtc-dev.c David Brownell    2007-05-08  301          
                alarm.time.tm_mday = tm.tm_mday;
f8245c26886c91 drivers/rtc/rtc-dev.c David Brownell    2007-05-08  302          
                alarm.time.tm_mon = tm.tm_mon;
f8245c26886c91 drivers/rtc/rtc-dev.c David Brownell    2007-05-08  303          
                alarm.time.tm_year = tm.tm_year;
f8245c26886c91 drivers/rtc/rtc-dev.c David Brownell    2007-05-08  304          
                err  = rtc_valid_tm(&alarm.time);
f8245c26886c91 drivers/rtc/rtc-dev.c David Brownell    2007-05-08  305          
                if (err < 0)
f8245c26886c91 drivers/rtc/rtc-dev.c David Brownell    2007-05-08  306          
                        return err;
4ec2364f491023 drivers/rtc/rtc-dev.c Xunlei Pang       2015-01-22  307          
                then = rtc_tm_to_time64(&alarm.time);
f8245c26886c91 drivers/rtc/rtc-dev.c David Brownell    2007-05-08  308  
f8245c26886c91 drivers/rtc/rtc-dev.c David Brownell    2007-05-08  309          
                /* alarm may need to wrap into tomorrow */
f8245c26886c91 drivers/rtc/rtc-dev.c David Brownell    2007-05-08  310          
                if (then < now) {
4ec2364f491023 drivers/rtc/rtc-dev.c Xunlei Pang       2015-01-22  311          
                        rtc_time64_to_tm(now + 24 * 60 * 60, &tm);
f8245c26886c91 drivers/rtc/rtc-dev.c David Brownell    2007-05-08  312          
                        alarm.time.tm_mday = tm.tm_mday;
f8245c26886c91 drivers/rtc/rtc-dev.c David Brownell    2007-05-08  313          
                        alarm.time.tm_mon = tm.tm_mon;
f8245c26886c91 drivers/rtc/rtc-dev.c David Brownell    2007-05-08  314          
                        alarm.time.tm_year = tm.tm_year;
f8245c26886c91 drivers/rtc/rtc-dev.c David Brownell    2007-05-08  315          
                }
f8245c26886c91 drivers/rtc/rtc-dev.c David Brownell    2007-05-08  316          
        }
f8245c26886c91 drivers/rtc/rtc-dev.c David Brownell    2007-05-08  317  
5ad31a57515714 drivers/rtc/rtc-dev.c David Brownell    2008-07-23  318          
        return rtc_set_alarm(rtc, &alarm);
e824290e5dcfaf drivers/rtc/rtc-dev.c Alessandro Zummo  2006-03-27  319  
e824290e5dcfaf drivers/rtc/rtc-dev.c Alessandro Zummo  2006-03-27  320          
case RTC_RD_TIME:
5ad31a57515714 drivers/rtc/rtc-dev.c David Brownell    2008-07-23  321          
        mutex_unlock(&rtc->ops_lock);
5ad31a57515714 drivers/rtc/rtc-dev.c David Brownell    2008-07-23  322  
ab6a2d70d18edc drivers/rtc/rtc-dev.c David Brownell    2007-05-08  323          
        err = rtc_read_time(rtc, &tm);
e824290e5dcfaf drivers/rtc/rtc-dev.c Alessandro Zummo  2006-03-27  324          
        if (err < 0)
e824290e5dcfaf drivers/rtc/rtc-dev.c Alessandro Zummo  2006-03-27  325          
                return err;
e824290e5dcfaf drivers/rtc/rtc-dev.c Alessandro Zummo  2006-03-27  326  
e824290e5dcfaf drivers/rtc/rtc-dev.c Alessandro Zummo  2006-03-27  327          
        if (copy_to_user(uarg, &tm, sizeof(tm)))
5ad31a57515714 drivers/rtc/rtc-dev.c David Brownell    2008-07-23  328          
                err = -EFAULT;
5ad31a57515714 drivers/rtc/rtc-dev.c David Brownell    2008-07-23  329          
        return err;
e824290e5dcfaf drivers/rtc/rtc-dev.c Alessandro Zummo  2006-03-27  330  
e824290e5dcfaf drivers/rtc/rtc-dev.c Alessandro Zummo  2006-03-27  331          
case RTC_SET_TIME:
5ad31a57515714 drivers/rtc/rtc-dev.c David Brownell    2008-07-23  332          
        mutex_unlock(&rtc->ops_lock);
5ad31a57515714 drivers/rtc/rtc-dev.c David Brownell    2008-07-23  333  
e824290e5dcfaf drivers/rtc/rtc-dev.c Alessandro Zummo  2006-03-27  334          
        if (copy_from_user(&tm, uarg, sizeof(tm)))
e824290e5dcfaf drivers/rtc/rtc-dev.c Alessandro Zummo  2006-03-27  335          
                return -EFAULT;
e824290e5dcfaf drivers/rtc/rtc-dev.c Alessandro Zummo  2006-03-27  336  
5ad31a57515714 drivers/rtc/rtc-dev.c David Brownell    2008-07-23  337          
        return rtc_set_time(rtc, &tm);
2601a46474db2d drivers/rtc/rtc-dev.c David Brownell    2006-11-25  338  
d691eb901e0440 drivers/rtc/rtc-dev.c Alessandro Zummo  2007-10-16  339          
case RTC_PIE_ON:
8719d3c9188b38 drivers/rtc/rtc-dev.c Alexandre Belloni 2018-07-25  340          
        err = rtc_irq_set_state(rtc, 1);
d691eb901e0440 drivers/rtc/rtc-dev.c Alessandro Zummo  2007-10-16  341          
        break;
d691eb901e0440 drivers/rtc/rtc-dev.c Alessandro Zummo  2007-10-16  342  
d691eb901e0440 drivers/rtc/rtc-dev.c Alessandro Zummo  2007-10-16  343          
case RTC_PIE_OFF:
8719d3c9188b38 drivers/rtc/rtc-dev.c Alexandre Belloni 2018-07-25  344          
        err = rtc_irq_set_state(rtc, 0);
2601a46474db2d drivers/rtc/rtc-dev.c David Brownell    2006-11-25  345          
        break;
2601a46474db2d drivers/rtc/rtc-dev.c David Brownell    2006-11-25  346  
099e657625e801 drivers/rtc/rtc-dev.c Alessandro Zummo  2009-01-04  347          
case RTC_AIE_ON:
099e657625e801 drivers/rtc/rtc-dev.c Alessandro Zummo  2009-01-04  348          
        mutex_unlock(&rtc->ops_lock);
099e657625e801 drivers/rtc/rtc-dev.c Alessandro Zummo  2009-01-04  349          
        return rtc_alarm_irq_enable(rtc, 1);
099e657625e801 drivers/rtc/rtc-dev.c Alessandro Zummo  2009-01-04  350  
099e657625e801 drivers/rtc/rtc-dev.c Alessandro Zummo  2009-01-04  351          
case RTC_AIE_OFF:
099e657625e801 drivers/rtc/rtc-dev.c Alessandro Zummo  2009-01-04  352          
        mutex_unlock(&rtc->ops_lock);
099e657625e801 drivers/rtc/rtc-dev.c Alessandro Zummo  2009-01-04  353          
        return rtc_alarm_irq_enable(rtc, 0);
099e657625e801 drivers/rtc/rtc-dev.c Alessandro Zummo  2009-01-04  354  
099e657625e801 drivers/rtc/rtc-dev.c Alessandro Zummo  2009-01-04  355          
case RTC_UIE_ON:
099e657625e801 drivers/rtc/rtc-dev.c Alessandro Zummo  2009-01-04  356          
        mutex_unlock(&rtc->ops_lock);
099e657625e801 drivers/rtc/rtc-dev.c Alessandro Zummo  2009-01-04  357          
        return rtc_update_irq_enable(rtc, 1);
099e657625e801 drivers/rtc/rtc-dev.c Alessandro Zummo  2009-01-04  358  
099e657625e801 drivers/rtc/rtc-dev.c Alessandro Zummo  2009-01-04  359          
case RTC_UIE_OFF:
099e657625e801 drivers/rtc/rtc-dev.c Alessandro Zummo  2009-01-04  360          
        mutex_unlock(&rtc->ops_lock);
099e657625e801 drivers/rtc/rtc-dev.c Alessandro Zummo  2009-01-04  361          
        return rtc_update_irq_enable(rtc, 0);
099e657625e801 drivers/rtc/rtc-dev.c Alessandro Zummo  2009-01-04  362  
2601a46474db2d drivers/rtc/rtc-dev.c David Brownell    2006-11-25  363          
case RTC_IRQP_SET:
8719d3c9188b38 drivers/rtc/rtc-dev.c Alexandre Belloni 2018-07-25  364          
        err = rtc_irq_set_freq(rtc, arg);
d691eb901e0440 drivers/rtc/rtc-dev.c Alessandro Zummo  2007-10-16  365          
        break;
d691eb901e0440 drivers/rtc/rtc-dev.c Alessandro Zummo  2007-10-16  366          
case RTC_IRQP_READ:
d691eb901e0440 drivers/rtc/rtc-dev.c Alessandro Zummo  2007-10-16  367          
        err = put_user(rtc->irq_freq, (unsigned long __user *)uarg);
2601a46474db2d drivers/rtc/rtc-dev.c David Brownell    2006-11-25  368          
        break;
2601a46474db2d drivers/rtc/rtc-dev.c David Brownell    2006-11-25  369  
e824290e5dcfaf drivers/rtc/rtc-dev.c Alessandro Zummo  2006-03-27  370          
case RTC_WKALM_SET:
5ad31a57515714 drivers/rtc/rtc-dev.c David Brownell    2008-07-23  371          
        mutex_unlock(&rtc->ops_lock);
e824290e5dcfaf drivers/rtc/rtc-dev.c Alessandro Zummo  2006-03-27  372          
        if (copy_from_user(&alarm, uarg, sizeof(alarm)))
e824290e5dcfaf drivers/rtc/rtc-dev.c Alessandro Zummo  2006-03-27  373          
                return -EFAULT;
e824290e5dcfaf drivers/rtc/rtc-dev.c Alessandro Zummo  2006-03-27  374  
5ad31a57515714 drivers/rtc/rtc-dev.c David Brownell    2008-07-23  375          
        return rtc_set_alarm(rtc, &alarm);
e824290e5dcfaf drivers/rtc/rtc-dev.c Alessandro Zummo  2006-03-27  376  
e824290e5dcfaf drivers/rtc/rtc-dev.c Alessandro Zummo  2006-03-27  377          
case RTC_WKALM_RD:
5ad31a57515714 drivers/rtc/rtc-dev.c David Brownell    2008-07-23  378          
        mutex_unlock(&rtc->ops_lock);
ab6a2d70d18edc drivers/rtc/rtc-dev.c David Brownell    2007-05-08  379          
        err = rtc_read_alarm(rtc, &alarm);
e824290e5dcfaf drivers/rtc/rtc-dev.c Alessandro Zummo  2006-03-27  380          
        if (err < 0)
e824290e5dcfaf drivers/rtc/rtc-dev.c Alessandro Zummo  2006-03-27  381          
                return err;
e824290e5dcfaf drivers/rtc/rtc-dev.c Alessandro Zummo  2006-03-27  382  
e824290e5dcfaf drivers/rtc/rtc-dev.c Alessandro Zummo  2006-03-27  383          
        if (copy_to_user(uarg, &alarm, sizeof(alarm)))
5ad31a57515714 drivers/rtc/rtc-dev.c David Brownell    2008-07-23  384          
                err = -EFAULT;
5ad31a57515714 drivers/rtc/rtc-dev.c David Brownell    2008-07-23  385          
        return err;
e824290e5dcfaf drivers/rtc/rtc-dev.c Alessandro Zummo  2006-03-27  386  
36c52b4430b4cb drivers/rtc/dev.c     Alexandre Belloni 2021-01-16  387          
case RTC_PARAM_GET:
36c52b4430b4cb drivers/rtc/dev.c     Alexandre Belloni 2021-01-16  388          
        if (copy_from_user(&param, uarg, sizeof(param)))
36c52b4430b4cb drivers/rtc/dev.c     Alexandre Belloni 2021-01-16  389          
                err = -EFAULT;
36c52b4430b4cb drivers/rtc/dev.c     Alexandre Belloni 2021-01-16  390  
36c52b4430b4cb drivers/rtc/dev.c     Alexandre Belloni 2021-01-16  391          
        switch(param.param) {
36c52b4430b4cb drivers/rtc/dev.c     Alexandre Belloni 2021-01-16  392          
                long offset;
36c52b4430b4cb drivers/rtc/dev.c     Alexandre Belloni 2021-01-16  393          
        case RTC_PARAM_FEATURES:
36c52b4430b4cb drivers/rtc/dev.c     Alexandre Belloni 2021-01-16  394          
                if (param.index != 0)
36c52b4430b4cb drivers/rtc/dev.c     Alexandre Belloni 2021-01-16  395          
                        err = -EINVAL;
36c52b4430b4cb drivers/rtc/dev.c     Alexandre Belloni 2021-01-16  396          
                param.uvalue = rtc->features[0];
36c52b4430b4cb drivers/rtc/dev.c     Alexandre Belloni 2021-01-16  397          
                break;
36c52b4430b4cb drivers/rtc/dev.c     Alexandre Belloni 2021-01-16  398  
36c52b4430b4cb drivers/rtc/dev.c     Alexandre Belloni 2021-01-16  399          
        case RTC_PARAM_CORRECTION:
36c52b4430b4cb drivers/rtc/dev.c     Alexandre Belloni 2021-01-16  400          
                mutex_unlock(&rtc->ops_lock);
36c52b4430b4cb drivers/rtc/dev.c     Alexandre Belloni 2021-01-16  401          
                if (param.index != 0)
36c52b4430b4cb drivers/rtc/dev.c     Alexandre Belloni 2021-01-16  402          
                        return -EINVAL;
36c52b4430b4cb drivers/rtc/dev.c     Alexandre Belloni 2021-01-16  403          
                err = rtc_read_offset(rtc, &offset);
36c52b4430b4cb drivers/rtc/dev.c     Alexandre Belloni 2021-01-16  404          
                if (err == 0)
36c52b4430b4cb drivers/rtc/dev.c     Alexandre Belloni 2021-01-16  405          
                        param.svalue = offset;
36c52b4430b4cb drivers/rtc/dev.c     Alexandre Belloni 2021-01-16  406          
                mutex_lock(&rtc->ops_lock);
36c52b4430b4cb drivers/rtc/dev.c     Alexandre Belloni 2021-01-16  407          
                break;
36c52b4430b4cb drivers/rtc/dev.c     Alexandre Belloni 2021-01-16  408  
36c52b4430b4cb drivers/rtc/dev.c     Alexandre Belloni 2021-01-16  409          
        default:
36c52b4430b4cb drivers/rtc/dev.c     Alexandre Belloni 2021-01-16  410          
                err = -EINVAL;
36c52b4430b4cb drivers/rtc/dev.c     Alexandre Belloni 2021-01-16  411          
        }
36c52b4430b4cb drivers/rtc/dev.c     Alexandre Belloni 2021-01-16  412  
36c52b4430b4cb drivers/rtc/dev.c     Alexandre Belloni 2021-01-16  413          
        if (copy_to_user(uarg, &param, sizeof(param)))
36c52b4430b4cb drivers/rtc/dev.c     Alexandre Belloni 2021-01-16  414          
                err = -EFAULT;
36c52b4430b4cb drivers/rtc/dev.c     Alexandre Belloni 2021-01-16  415  
36c52b4430b4cb drivers/rtc/dev.c     Alexandre Belloni 2021-01-16  416          
        break;
36c52b4430b4cb drivers/rtc/dev.c     Alexandre Belloni 2021-01-16  417  
36c52b4430b4cb drivers/rtc/dev.c     Alexandre Belloni 2021-01-16  418          
case RTC_PARAM_SET:
36c52b4430b4cb drivers/rtc/dev.c     Alexandre Belloni 2021-01-16  419          
        if (copy_from_user(&param, uarg, sizeof(param)))
36c52b4430b4cb drivers/rtc/dev.c     Alexandre Belloni 2021-01-16 @420          
                err = -EFAULT;
36c52b4430b4cb drivers/rtc/dev.c     Alexandre Belloni 2021-01-16  421  
36c52b4430b4cb drivers/rtc/dev.c     Alexandre Belloni 2021-01-16  422          
        switch(param.param) {
36c52b4430b4cb drivers/rtc/dev.c     Alexandre Belloni 2021-01-16  423          
        case RTC_PARAM_CORRECTION:
36c52b4430b4cb drivers/rtc/dev.c     Alexandre Belloni 2021-01-16  424          
                mutex_unlock(&rtc->ops_lock);
36c52b4430b4cb drivers/rtc/dev.c     Alexandre Belloni 2021-01-16  425          
                if (param.index != 0)
36c52b4430b4cb drivers/rtc/dev.c     Alexandre Belloni 2021-01-16  426          
                        return -EINVAL;
36c52b4430b4cb drivers/rtc/dev.c     Alexandre Belloni 2021-01-16  427          
                return rtc_set_offset(rtc, param.svalue);
36c52b4430b4cb drivers/rtc/dev.c     Alexandre Belloni 2021-01-16  428  
36c52b4430b4cb drivers/rtc/dev.c     Alexandre Belloni 2021-01-16  429          
        case RTC_PARAM_FEATURES:
36c52b4430b4cb drivers/rtc/dev.c     Alexandre Belloni 2021-01-16  430          
        default:
36c52b4430b4cb drivers/rtc/dev.c     Alexandre Belloni 2021-01-16  431          
                err = -EINVAL;
36c52b4430b4cb drivers/rtc/dev.c     Alexandre Belloni 2021-01-16  432          
        }
36c52b4430b4cb drivers/rtc/dev.c     Alexandre Belloni 2021-01-16  433  
36c52b4430b4cb drivers/rtc/dev.c     Alexandre Belloni 2021-01-16  434          
        break;
36c52b4430b4cb drivers/rtc/dev.c     Alexandre Belloni 2021-01-16  435  
e824290e5dcfaf drivers/rtc/rtc-dev.c Alessandro Zummo  2006-03-27  436          
default:
ac54cd2bd5b4db drivers/rtc/rtc-dev.c John Stultz       2011-02-02  437          
        /* Finally try the driver's ioctl interface */
ac54cd2bd5b4db drivers/rtc/rtc-dev.c John Stultz       2011-02-02  438          
        if (ops->ioctl) {
ac54cd2bd5b4db drivers/rtc/rtc-dev.c John Stultz       2011-02-02  439          
                err = ops->ioctl(rtc->dev.parent, cmd, arg);
ac54cd2bd5b4db drivers/rtc/rtc-dev.c John Stultz       2011-02-02  440          
                if (err == -ENOIOCTLCMD)
b3969e5831adac drivers/rtc/rtc-dev.c Alessandro Zummo  2006-05-20  441          
                        err = -ENOTTY;
606cc43c720bde drivers/rtc/dev.c     Alexandre Belloni 2019-03-20  442          
        } else {
e17fd4ba2a81f1 drivers/rtc/rtc-dev.c John Stultz       2011-05-31  443          
                err = -ENOTTY;
606cc43c720bde drivers/rtc/dev.c     Alexandre Belloni 2019-03-20  444          
        }
e824290e5dcfaf drivers/rtc/rtc-dev.c Alessandro Zummo  2006-03-27  445          
        break;
e824290e5dcfaf drivers/rtc/rtc-dev.c Alessandro Zummo  2006-03-27  446          
}
e824290e5dcfaf drivers/rtc/rtc-dev.c Alessandro Zummo  2006-03-27  447  
5ad31a57515714 drivers/rtc/rtc-dev.c David Brownell    2008-07-23  448  done:
5ad31a57515714 drivers/rtc/rtc-dev.c David Brownell    2008-07-23  449          
mutex_unlock(&rtc->ops_lock);
e824290e5dcfaf drivers/rtc/rtc-dev.c Alessandro Zummo  2006-03-27  450          
return err;
e824290e5dcfaf drivers/rtc/rtc-dev.c Alessandro Zummo  2006-03-27  451  }
e824290e5dcfaf drivers/rtc/rtc-dev.c Alessandro Zummo  2006-03-27  452  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/[email protected]

Attachment: .config.gz
Description: application/gzip

_______________________________________________
kbuild mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to