:::::: :::::: Manual check reason: "low confidence bisect report" :::::: Manual check reason: "low confidence static check warning: drivers/rtc/dev.c:401:30: warning: use of uninitialized value '<unknown>' [CWE-457] [-Wanalyzer-use-of-uninitialized-value]" ::::::
BCC: [email protected] CC: [email protected] CC: [email protected] TO: Kees Cook <[email protected]> CC: Alexandre Belloni <[email protected]> CC: "Gustavo A. R. Silva" <[email protected]> tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master head: 69dac8e431af26173ca0a1ebc87054e01c585bcc commit: ba52eac083e1598e748811ff58d259f77e4c5c4d rtc: Move variable into switch case statement date: 7 months ago :::::: branch date: 14 hours ago :::::: commit date: 7 months ago config: arm-randconfig-c002-20220810 (https://download.01.org/0day-ci/archive/20220813/[email protected]/config) compiler: arm-linux-gnueabi-gcc (GCC) 12.1.0 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 # https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=ba52eac083e1598e748811ff58d259f77e4c5c4d git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git git fetch --no-tags linus master git checkout ba52eac083e1598e748811ff58d259f77e4c5c4d # save the config file COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross ARCH=arm KBUILD_USERCFLAGS='-fanalyzer -Wno-error' If you fix the issue, kindly add following tag where applicable Reported-by: kernel test robot <[email protected]> gcc-analyzer warnings: (new ones prefixed by >>) drivers/rtc/dev.c: In function 'rtc_dev_ioctl': >> drivers/rtc/dev.c:401:30: warning: use of uninitialized value '<unknown>' >> [CWE-457] [-Wanalyzer-use-of-uninitialized-value] 401 | long offset; | ^~~~~~ 'rtc_dev_ioctl': events 1-3 | | 215 | if (err) | | ^ | | | | | (1) following 'false' branch (when 'err == 0')... |...... | 256 | switch (cmd) { | | ~~~~~~ | | | | | (2) ...to here | | (3) following 'case 1075343379:' branch... | 'rtc_dev_ioctl': event 4 | |include/linux/uaccess.h:192:21: | 192 | n = _copy_from_user(to, from, n); | | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | | | | (4) ...to here | 'rtc_dev_ioctl': events 5-6 | |drivers/rtc/dev.c:388:20: | 388 | if (copy_from_user(¶m, uarg, sizeof(param))) { | | ^ | | | | | (5) following 'false' branch (when 'n == 0')... |...... | 393 | switch(param.param) { | | ~~~~~~~~~~~ | | | | | (6) ...to here | 'rtc_dev_ioctl': event 7 | |cc1: | (7): following 'case 1:' branch... | 'rtc_dev_ioctl': events 8-9 | | 400 | case RTC_PARAM_CORRECTION: { | | ^~~~ | | | | | (8) ...to here | 401 | long offset; | | ~~~~~~ | | | | | (9) use of uninitialized value '<unknown>' here | vim +401 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; 6a8af1b6568ad9 drivers/rtc/dev.c Alexandre Belloni 2021-10-18 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: 6a8af1b6568ad9 drivers/rtc/dev.c Alexandre Belloni 2021-10-18 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 6a8af1b6568ad9 drivers/rtc/dev.c Alexandre Belloni 2021-10-18 387 case RTC_PARAM_GET: 6a8af1b6568ad9 drivers/rtc/dev.c Alexandre Belloni 2021-10-18 388 if (copy_from_user(¶m, uarg, sizeof(param))) { 6a8af1b6568ad9 drivers/rtc/dev.c Alexandre Belloni 2021-10-18 389 mutex_unlock(&rtc->ops_lock); 6a8af1b6568ad9 drivers/rtc/dev.c Alexandre Belloni 2021-10-18 390 return -EFAULT; 6a8af1b6568ad9 drivers/rtc/dev.c Alexandre Belloni 2021-10-18 391 } 6a8af1b6568ad9 drivers/rtc/dev.c Alexandre Belloni 2021-10-18 392 6a8af1b6568ad9 drivers/rtc/dev.c Alexandre Belloni 2021-10-18 393 switch(param.param) { 6a8af1b6568ad9 drivers/rtc/dev.c Alexandre Belloni 2021-10-18 394 case RTC_PARAM_FEATURES: 6a8af1b6568ad9 drivers/rtc/dev.c Alexandre Belloni 2021-10-18 395 if (param.index != 0) 6a8af1b6568ad9 drivers/rtc/dev.c Alexandre Belloni 2021-10-18 396 err = -EINVAL; 6a8af1b6568ad9 drivers/rtc/dev.c Alexandre Belloni 2021-10-18 397 param.uvalue = rtc->features[0]; 6a8af1b6568ad9 drivers/rtc/dev.c Alexandre Belloni 2021-10-18 398 break; 6a8af1b6568ad9 drivers/rtc/dev.c Alexandre Belloni 2021-10-18 399 ba52eac083e159 drivers/rtc/dev.c Kees Cook 2021-12-08 400 case RTC_PARAM_CORRECTION: { ba52eac083e159 drivers/rtc/dev.c Kees Cook 2021-12-08 @401 long offset; a6d8c6e1a5c6fb drivers/rtc/dev.c Alexandre Belloni 2021-10-18 402 mutex_unlock(&rtc->ops_lock); a6d8c6e1a5c6fb drivers/rtc/dev.c Alexandre Belloni 2021-10-18 403 if (param.index != 0) a6d8c6e1a5c6fb drivers/rtc/dev.c Alexandre Belloni 2021-10-18 404 return -EINVAL; a6d8c6e1a5c6fb drivers/rtc/dev.c Alexandre Belloni 2021-10-18 405 err = rtc_read_offset(rtc, &offset); a6d8c6e1a5c6fb drivers/rtc/dev.c Alexandre Belloni 2021-10-18 406 mutex_lock(&rtc->ops_lock); a6d8c6e1a5c6fb drivers/rtc/dev.c Alexandre Belloni 2021-10-18 407 if (err == 0) a6d8c6e1a5c6fb drivers/rtc/dev.c Alexandre Belloni 2021-10-18 408 param.svalue = offset; a6d8c6e1a5c6fb drivers/rtc/dev.c Alexandre Belloni 2021-10-18 409 break; ba52eac083e159 drivers/rtc/dev.c Kees Cook 2021-12-08 410 } 6a8af1b6568ad9 drivers/rtc/dev.c Alexandre Belloni 2021-10-18 411 default: 0d20e9fb1262b1 drivers/rtc/dev.c Alexandre Belloni 2021-10-18 412 if (rtc->ops->param_get) 0d20e9fb1262b1 drivers/rtc/dev.c Alexandre Belloni 2021-10-18 413 err = rtc->ops->param_get(rtc->dev.parent, ¶m); 0d20e9fb1262b1 drivers/rtc/dev.c Alexandre Belloni 2021-10-18 414 else 6a8af1b6568ad9 drivers/rtc/dev.c Alexandre Belloni 2021-10-18 415 err = -EINVAL; 6a8af1b6568ad9 drivers/rtc/dev.c Alexandre Belloni 2021-10-18 416 } 6a8af1b6568ad9 drivers/rtc/dev.c Alexandre Belloni 2021-10-18 417 6a8af1b6568ad9 drivers/rtc/dev.c Alexandre Belloni 2021-10-18 418 if (!err) 6a8af1b6568ad9 drivers/rtc/dev.c Alexandre Belloni 2021-10-18 419 if (copy_to_user(uarg, ¶m, sizeof(param))) 6a8af1b6568ad9 drivers/rtc/dev.c Alexandre Belloni 2021-10-18 420 err = -EFAULT; 6a8af1b6568ad9 drivers/rtc/dev.c Alexandre Belloni 2021-10-18 421 6a8af1b6568ad9 drivers/rtc/dev.c Alexandre Belloni 2021-10-18 422 break; 6a8af1b6568ad9 drivers/rtc/dev.c Alexandre Belloni 2021-10-18 423 6a8af1b6568ad9 drivers/rtc/dev.c Alexandre Belloni 2021-10-18 424 case RTC_PARAM_SET: 6a8af1b6568ad9 drivers/rtc/dev.c Alexandre Belloni 2021-10-18 425 if (copy_from_user(¶m, uarg, sizeof(param))) { 6a8af1b6568ad9 drivers/rtc/dev.c Alexandre Belloni 2021-10-18 426 mutex_unlock(&rtc->ops_lock); 6a8af1b6568ad9 drivers/rtc/dev.c Alexandre Belloni 2021-10-18 427 return -EFAULT; 6a8af1b6568ad9 drivers/rtc/dev.c Alexandre Belloni 2021-10-18 428 } 6a8af1b6568ad9 drivers/rtc/dev.c Alexandre Belloni 2021-10-18 429 6a8af1b6568ad9 drivers/rtc/dev.c Alexandre Belloni 2021-10-18 430 switch(param.param) { 6a8af1b6568ad9 drivers/rtc/dev.c Alexandre Belloni 2021-10-18 431 case RTC_PARAM_FEATURES: a6d8c6e1a5c6fb drivers/rtc/dev.c Alexandre Belloni 2021-10-18 432 err = -EINVAL; a6d8c6e1a5c6fb drivers/rtc/dev.c Alexandre Belloni 2021-10-18 433 break; a6d8c6e1a5c6fb drivers/rtc/dev.c Alexandre Belloni 2021-10-18 434 a6d8c6e1a5c6fb drivers/rtc/dev.c Alexandre Belloni 2021-10-18 435 case RTC_PARAM_CORRECTION: a6d8c6e1a5c6fb drivers/rtc/dev.c Alexandre Belloni 2021-10-18 436 mutex_unlock(&rtc->ops_lock); a6d8c6e1a5c6fb drivers/rtc/dev.c Alexandre Belloni 2021-10-18 437 if (param.index != 0) a6d8c6e1a5c6fb drivers/rtc/dev.c Alexandre Belloni 2021-10-18 438 return -EINVAL; a6d8c6e1a5c6fb drivers/rtc/dev.c Alexandre Belloni 2021-10-18 439 return rtc_set_offset(rtc, param.svalue); a6d8c6e1a5c6fb drivers/rtc/dev.c Alexandre Belloni 2021-10-18 440 6a8af1b6568ad9 drivers/rtc/dev.c Alexandre Belloni 2021-10-18 441 default: 0d20e9fb1262b1 drivers/rtc/dev.c Alexandre Belloni 2021-10-18 442 if (rtc->ops->param_set) 0d20e9fb1262b1 drivers/rtc/dev.c Alexandre Belloni 2021-10-18 443 err = rtc->ops->param_set(rtc->dev.parent, ¶m); 0d20e9fb1262b1 drivers/rtc/dev.c Alexandre Belloni 2021-10-18 444 else 6a8af1b6568ad9 drivers/rtc/dev.c Alexandre Belloni 2021-10-18 445 err = -EINVAL; 6a8af1b6568ad9 drivers/rtc/dev.c Alexandre Belloni 2021-10-18 446 } 6a8af1b6568ad9 drivers/rtc/dev.c Alexandre Belloni 2021-10-18 447 6a8af1b6568ad9 drivers/rtc/dev.c Alexandre Belloni 2021-10-18 448 break; 6a8af1b6568ad9 drivers/rtc/dev.c Alexandre Belloni 2021-10-18 449 e824290e5dcfaf drivers/rtc/rtc-dev.c Alessandro Zummo 2006-03-27 450 default: ac54cd2bd5b4db drivers/rtc/rtc-dev.c John Stultz 2011-02-02 451 /* Finally try the driver's ioctl interface */ ac54cd2bd5b4db drivers/rtc/rtc-dev.c John Stultz 2011-02-02 452 if (ops->ioctl) { ac54cd2bd5b4db drivers/rtc/rtc-dev.c John Stultz 2011-02-02 453 err = ops->ioctl(rtc->dev.parent, cmd, arg); ac54cd2bd5b4db drivers/rtc/rtc-dev.c John Stultz 2011-02-02 454 if (err == -ENOIOCTLCMD) b3969e5831adac drivers/rtc/rtc-dev.c Alessandro Zummo 2006-05-20 455 err = -ENOTTY; 606cc43c720bde drivers/rtc/dev.c Alexandre Belloni 2019-03-20 456 } else { e17fd4ba2a81f1 drivers/rtc/rtc-dev.c John Stultz 2011-05-31 457 err = -ENOTTY; 606cc43c720bde drivers/rtc/dev.c Alexandre Belloni 2019-03-20 458 } e824290e5dcfaf drivers/rtc/rtc-dev.c Alessandro Zummo 2006-03-27 459 break; e824290e5dcfaf drivers/rtc/rtc-dev.c Alessandro Zummo 2006-03-27 460 } e824290e5dcfaf drivers/rtc/rtc-dev.c Alessandro Zummo 2006-03-27 461 5ad31a57515714 drivers/rtc/rtc-dev.c David Brownell 2008-07-23 462 done: 5ad31a57515714 drivers/rtc/rtc-dev.c David Brownell 2008-07-23 463 mutex_unlock(&rtc->ops_lock); e824290e5dcfaf drivers/rtc/rtc-dev.c Alessandro Zummo 2006-03-27 464 return err; e824290e5dcfaf drivers/rtc/rtc-dev.c Alessandro Zummo 2006-03-27 465 } e824290e5dcfaf drivers/rtc/rtc-dev.c Alessandro Zummo 2006-03-27 466 -- 0-DAY CI Kernel Test Service https://01.org/lkp _______________________________________________ kbuild mailing list -- [email protected] To unsubscribe send an email to [email protected]
