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(¶m, 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, ¶m, 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(¶m, 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]
.config.gz
Description: application/gzip
_______________________________________________ kbuild mailing list -- [email protected] To unsubscribe send an email to [email protected]
