CC: kbuild-...@lists.01.org TO: "Christoph, Hellwig," <h...@lst.de> CC: Al Viro <v...@zeniv.linux.org.uk>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master head: e7b08814b16b80a0bf76eeca16317f8c2ed23b8c commit: 32927393dc1ccd60fb2bdc05b9e8e88753761469 [3942/14131] sysctl: pass kernel pointers to ->proc_handler :::::: branch date: 3 days ago :::::: commit date: 5 weeks ago config: i386-randconfig-s001-20200601 (attached as .config) compiler: gcc-9 (Debian 9.3.0-13) 9.3.0 reproduce: # apt-get install sparse # sparse version: v0.6.1-243-gc100a7ab-dirty git checkout 32927393dc1ccd60fb2bdc05b9e8e88753761469 # save the attached .config to linux build tree make W=1 C=1 ARCH=i386 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' If you fix the issue, kindly add following tag as appropriate Reported-by: kbuild test robot <l...@intel.com> sparse warnings: (new ones prefixed by >>) drivers/cdrom/cdrom.c:3597:42: sparse: sparse: incorrect type in argument 3 (different address spaces) @@ expected void * @@ got void [noderef] <asn:1> *buffer @@ drivers/cdrom/cdrom.c:3597:42: sparse: expected void * >> drivers/cdrom/cdrom.c:3597:42: sparse: got void [noderef] <asn:1> *buffer drivers/cdrom/cdrom.c:3665:35: sparse: sparse: incorrect type in initializer (incompatible argument 3 (different address spaces)) @@ expected int ( [usertype] *proc_handler )( ... ) @@ got int ( * )( ... ) @@ drivers/cdrom/cdrom.c:3665:35: sparse: expected int ( [usertype] *proc_handler )( ... ) >> drivers/cdrom/cdrom.c:3665:35: sparse: got int ( * )( ... ) # https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/?id=32927393dc1ccd60fb2bdc05b9e8e88753761469 git remote add linux-next https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git git remote update linux-next git checkout 32927393dc1ccd60fb2bdc05b9e8e88753761469 vim +3597 drivers/cdrom/cdrom.c 554988d6fe3697 Dave Young 2007-06-19 3519 90a3b89e00658b Joe Perches 2014-06-06 3520 static int cdrom_sysctl_info(struct ctl_table *ctl, int write, ^1da177e4c3f41 Linus Torvalds 2005-04-16 3521 void __user *buffer, size_t *lenp, loff_t *ppos) ^1da177e4c3f41 Linus Torvalds 2005-04-16 3522 { ^1da177e4c3f41 Linus Torvalds 2005-04-16 3523 int pos; ^1da177e4c3f41 Linus Torvalds 2005-04-16 3524 char *info = cdrom_sysctl_settings.info; 554988d6fe3697 Dave Young 2007-06-19 3525 const int max_size = sizeof(cdrom_sysctl_settings.info); ^1da177e4c3f41 Linus Torvalds 2005-04-16 3526 ^1da177e4c3f41 Linus Torvalds 2005-04-16 3527 if (!*lenp || (*ppos && !write)) { ^1da177e4c3f41 Linus Torvalds 2005-04-16 3528 *lenp = 0; ^1da177e4c3f41 Linus Torvalds 2005-04-16 3529 return 0; ^1da177e4c3f41 Linus Torvalds 2005-04-16 3530 } ^1da177e4c3f41 Linus Torvalds 2005-04-16 3531 554988d6fe3697 Dave Young 2007-06-19 3532 mutex_lock(&cdrom_mutex); ^1da177e4c3f41 Linus Torvalds 2005-04-16 3533 554988d6fe3697 Dave Young 2007-06-19 3534 pos = sprintf(info, "CD-ROM information, " VERSION "\n"); ^1da177e4c3f41 Linus Torvalds 2005-04-16 3535 554988d6fe3697 Dave Young 2007-06-19 3536 if (cdrom_print_info("\ndrive name:\t", 0, info, &pos, CTL_NAME)) 554988d6fe3697 Dave Young 2007-06-19 3537 goto done; 554988d6fe3697 Dave Young 2007-06-19 3538 if (cdrom_print_info("\ndrive speed:\t", 0, info, &pos, CTL_SPEED)) 554988d6fe3697 Dave Young 2007-06-19 3539 goto done; 554988d6fe3697 Dave Young 2007-06-19 3540 if (cdrom_print_info("\ndrive # of slots:", 0, info, &pos, CTL_SLOTS)) 554988d6fe3697 Dave Young 2007-06-19 3541 goto done; 554988d6fe3697 Dave Young 2007-06-19 3542 if (cdrom_print_info("\nCan close tray:\t", 554988d6fe3697 Dave Young 2007-06-19 3543 CDC_CLOSE_TRAY, info, &pos, CTL_CAPABILITY)) 554988d6fe3697 Dave Young 2007-06-19 3544 goto done; 554988d6fe3697 Dave Young 2007-06-19 3545 if (cdrom_print_info("\nCan open tray:\t", 554988d6fe3697 Dave Young 2007-06-19 3546 CDC_OPEN_TRAY, info, &pos, CTL_CAPABILITY)) 554988d6fe3697 Dave Young 2007-06-19 3547 goto done; 554988d6fe3697 Dave Young 2007-06-19 3548 if (cdrom_print_info("\nCan lock tray:\t", 554988d6fe3697 Dave Young 2007-06-19 3549 CDC_LOCK, info, &pos, CTL_CAPABILITY)) 554988d6fe3697 Dave Young 2007-06-19 3550 goto done; 554988d6fe3697 Dave Young 2007-06-19 3551 if (cdrom_print_info("\nCan change speed:", 554988d6fe3697 Dave Young 2007-06-19 3552 CDC_SELECT_SPEED, info, &pos, CTL_CAPABILITY)) 554988d6fe3697 Dave Young 2007-06-19 3553 goto done; 554988d6fe3697 Dave Young 2007-06-19 3554 if (cdrom_print_info("\nCan select disk:", 554988d6fe3697 Dave Young 2007-06-19 3555 CDC_SELECT_DISC, info, &pos, CTL_CAPABILITY)) 554988d6fe3697 Dave Young 2007-06-19 3556 goto done; 554988d6fe3697 Dave Young 2007-06-19 3557 if (cdrom_print_info("\nCan read multisession:", 554988d6fe3697 Dave Young 2007-06-19 3558 CDC_MULTI_SESSION, info, &pos, CTL_CAPABILITY)) 554988d6fe3697 Dave Young 2007-06-19 3559 goto done; 554988d6fe3697 Dave Young 2007-06-19 3560 if (cdrom_print_info("\nCan read MCN:\t", 554988d6fe3697 Dave Young 2007-06-19 3561 CDC_MCN, info, &pos, CTL_CAPABILITY)) 554988d6fe3697 Dave Young 2007-06-19 3562 goto done; 554988d6fe3697 Dave Young 2007-06-19 3563 if (cdrom_print_info("\nReports media changed:", 554988d6fe3697 Dave Young 2007-06-19 3564 CDC_MEDIA_CHANGED, info, &pos, CTL_CAPABILITY)) 554988d6fe3697 Dave Young 2007-06-19 3565 goto done; 554988d6fe3697 Dave Young 2007-06-19 3566 if (cdrom_print_info("\nCan play audio:\t", 554988d6fe3697 Dave Young 2007-06-19 3567 CDC_PLAY_AUDIO, info, &pos, CTL_CAPABILITY)) 554988d6fe3697 Dave Young 2007-06-19 3568 goto done; 554988d6fe3697 Dave Young 2007-06-19 3569 if (cdrom_print_info("\nCan write CD-R:\t", 554988d6fe3697 Dave Young 2007-06-19 3570 CDC_CD_R, info, &pos, CTL_CAPABILITY)) 554988d6fe3697 Dave Young 2007-06-19 3571 goto done; 554988d6fe3697 Dave Young 2007-06-19 3572 if (cdrom_print_info("\nCan write CD-RW:", 554988d6fe3697 Dave Young 2007-06-19 3573 CDC_CD_RW, info, &pos, CTL_CAPABILITY)) 554988d6fe3697 Dave Young 2007-06-19 3574 goto done; 554988d6fe3697 Dave Young 2007-06-19 3575 if (cdrom_print_info("\nCan read DVD:\t", 554988d6fe3697 Dave Young 2007-06-19 3576 CDC_DVD, info, &pos, CTL_CAPABILITY)) 554988d6fe3697 Dave Young 2007-06-19 3577 goto done; 554988d6fe3697 Dave Young 2007-06-19 3578 if (cdrom_print_info("\nCan write DVD-R:", 554988d6fe3697 Dave Young 2007-06-19 3579 CDC_DVD_R, info, &pos, CTL_CAPABILITY)) 554988d6fe3697 Dave Young 2007-06-19 3580 goto done; 554988d6fe3697 Dave Young 2007-06-19 3581 if (cdrom_print_info("\nCan write DVD-RAM:", 554988d6fe3697 Dave Young 2007-06-19 3582 CDC_DVD_RAM, info, &pos, CTL_CAPABILITY)) 554988d6fe3697 Dave Young 2007-06-19 3583 goto done; 554988d6fe3697 Dave Young 2007-06-19 3584 if (cdrom_print_info("\nCan read MRW:\t", 554988d6fe3697 Dave Young 2007-06-19 3585 CDC_MRW, info, &pos, CTL_CAPABILITY)) 554988d6fe3697 Dave Young 2007-06-19 3586 goto done; 554988d6fe3697 Dave Young 2007-06-19 3587 if (cdrom_print_info("\nCan write MRW:\t", 554988d6fe3697 Dave Young 2007-06-19 3588 CDC_MRW_W, info, &pos, CTL_CAPABILITY)) 554988d6fe3697 Dave Young 2007-06-19 3589 goto done; 554988d6fe3697 Dave Young 2007-06-19 3590 if (cdrom_print_info("\nCan write RAM:\t", 554988d6fe3697 Dave Young 2007-06-19 3591 CDC_RAM, info, &pos, CTL_CAPABILITY)) 554988d6fe3697 Dave Young 2007-06-19 3592 goto done; 554988d6fe3697 Dave Young 2007-06-19 3593 if (!scnprintf(info + pos, max_size - pos, "\n\n")) 554988d6fe3697 Dave Young 2007-06-19 3594 goto done; 554988d6fe3697 Dave Young 2007-06-19 3595 doit: 554988d6fe3697 Dave Young 2007-06-19 3596 mutex_unlock(&cdrom_mutex); 8d65af789f3e2c Alexey Dobriyan 2009-09-23 @3597 return proc_dostring(ctl, write, buffer, lenp, ppos); 554988d6fe3697 Dave Young 2007-06-19 3598 done: e597cd09f711b2 Joe Perches 2010-07-01 3599 pr_info("info buffer too small\n"); 554988d6fe3697 Dave Young 2007-06-19 3600 goto doit; ^1da177e4c3f41 Linus Torvalds 2005-04-16 3601 } ^1da177e4c3f41 Linus Torvalds 2005-04-16 3602 ^1da177e4c3f41 Linus Torvalds 2005-04-16 3603 /* Unfortunately, per device settings are not implemented through ^1da177e4c3f41 Linus Torvalds 2005-04-16 3604 procfs/sysctl yet. When they are, this will naturally disappear. For now ^1da177e4c3f41 Linus Torvalds 2005-04-16 3605 just update all drives. Later this will become the template on which ^1da177e4c3f41 Linus Torvalds 2005-04-16 3606 new registered drives will be based. */ ^1da177e4c3f41 Linus Torvalds 2005-04-16 3607 static void cdrom_update_settings(void) ^1da177e4c3f41 Linus Torvalds 2005-04-16 3608 { ^1da177e4c3f41 Linus Torvalds 2005-04-16 3609 struct cdrom_device_info *cdi; ^1da177e4c3f41 Linus Torvalds 2005-04-16 3610 032d8d90ba23e1 Akinobu Mita 2008-03-26 3611 mutex_lock(&cdrom_mutex); 7fd097d42b90af Akinobu Mita 2008-03-26 3612 list_for_each_entry(cdi, &cdrom_list, list) { ^1da177e4c3f41 Linus Torvalds 2005-04-16 3613 if (autoclose && CDROM_CAN(CDC_CLOSE_TRAY)) ^1da177e4c3f41 Linus Torvalds 2005-04-16 3614 cdi->options |= CDO_AUTO_CLOSE; ^1da177e4c3f41 Linus Torvalds 2005-04-16 3615 else if (!autoclose) ^1da177e4c3f41 Linus Torvalds 2005-04-16 3616 cdi->options &= ~CDO_AUTO_CLOSE; ^1da177e4c3f41 Linus Torvalds 2005-04-16 3617 if (autoeject && CDROM_CAN(CDC_OPEN_TRAY)) ^1da177e4c3f41 Linus Torvalds 2005-04-16 3618 cdi->options |= CDO_AUTO_EJECT; ^1da177e4c3f41 Linus Torvalds 2005-04-16 3619 else if (!autoeject) ^1da177e4c3f41 Linus Torvalds 2005-04-16 3620 cdi->options &= ~CDO_AUTO_EJECT; ^1da177e4c3f41 Linus Torvalds 2005-04-16 3621 if (lockdoor && CDROM_CAN(CDC_LOCK)) ^1da177e4c3f41 Linus Torvalds 2005-04-16 3622 cdi->options |= CDO_LOCK; ^1da177e4c3f41 Linus Torvalds 2005-04-16 3623 else if (!lockdoor) ^1da177e4c3f41 Linus Torvalds 2005-04-16 3624 cdi->options &= ~CDO_LOCK; ^1da177e4c3f41 Linus Torvalds 2005-04-16 3625 if (check_media_type) ^1da177e4c3f41 Linus Torvalds 2005-04-16 3626 cdi->options |= CDO_CHECK_TYPE; ^1da177e4c3f41 Linus Torvalds 2005-04-16 3627 else ^1da177e4c3f41 Linus Torvalds 2005-04-16 3628 cdi->options &= ~CDO_CHECK_TYPE; ^1da177e4c3f41 Linus Torvalds 2005-04-16 3629 } 032d8d90ba23e1 Akinobu Mita 2008-03-26 3630 mutex_unlock(&cdrom_mutex); ^1da177e4c3f41 Linus Torvalds 2005-04-16 3631 } ^1da177e4c3f41 Linus Torvalds 2005-04-16 3632 90a3b89e00658b Joe Perches 2014-06-06 3633 static int cdrom_sysctl_handler(struct ctl_table *ctl, int write, 32927393dc1ccd Christoph Hellwig 2020-04-24 3634 void *buffer, size_t *lenp, loff_t *ppos) ^1da177e4c3f41 Linus Torvalds 2005-04-16 3635 { ^1da177e4c3f41 Linus Torvalds 2005-04-16 3636 int ret; ^1da177e4c3f41 Linus Torvalds 2005-04-16 3637 8d65af789f3e2c Alexey Dobriyan 2009-09-23 3638 ret = proc_dointvec(ctl, write, buffer, lenp, ppos); ^1da177e4c3f41 Linus Torvalds 2005-04-16 3639 06489b4eec8322 Eric W. Biederman 2007-10-18 3640 if (write) { ^1da177e4c3f41 Linus Torvalds 2005-04-16 3641 ^1da177e4c3f41 Linus Torvalds 2005-04-16 3642 /* we only care for 1 or 0. */ 06489b4eec8322 Eric W. Biederman 2007-10-18 3643 autoclose = !!cdrom_sysctl_settings.autoclose; 06489b4eec8322 Eric W. Biederman 2007-10-18 3644 autoeject = !!cdrom_sysctl_settings.autoeject; 06489b4eec8322 Eric W. Biederman 2007-10-18 3645 debug = !!cdrom_sysctl_settings.debug; 06489b4eec8322 Eric W. Biederman 2007-10-18 3646 lockdoor = !!cdrom_sysctl_settings.lock; 06489b4eec8322 Eric W. Biederman 2007-10-18 3647 check_media_type = !!cdrom_sysctl_settings.check; ^1da177e4c3f41 Linus Torvalds 2005-04-16 3648 ^1da177e4c3f41 Linus Torvalds 2005-04-16 3649 /* update the option flags according to the changes. we ^1da177e4c3f41 Linus Torvalds 2005-04-16 3650 don't have per device options through sysctl yet, ^1da177e4c3f41 Linus Torvalds 2005-04-16 3651 but we will have and then this will disappear. */ ^1da177e4c3f41 Linus Torvalds 2005-04-16 3652 cdrom_update_settings(); ^1da177e4c3f41 Linus Torvalds 2005-04-16 3653 } ^1da177e4c3f41 Linus Torvalds 2005-04-16 3654 ^1da177e4c3f41 Linus Torvalds 2005-04-16 3655 return ret; ^1da177e4c3f41 Linus Torvalds 2005-04-16 3656 } ^1da177e4c3f41 Linus Torvalds 2005-04-16 3657 ^1da177e4c3f41 Linus Torvalds 2005-04-16 3658 /* Place files in /proc/sys/dev/cdrom */ 90a3b89e00658b Joe Perches 2014-06-06 3659 static struct ctl_table cdrom_table[] = { ^1da177e4c3f41 Linus Torvalds 2005-04-16 3660 { ^1da177e4c3f41 Linus Torvalds 2005-04-16 3661 .procname = "info", ^1da177e4c3f41 Linus Torvalds 2005-04-16 3662 .data = &cdrom_sysctl_settings.info, ^1da177e4c3f41 Linus Torvalds 2005-04-16 3663 .maxlen = CDROM_STR_SIZE, ^1da177e4c3f41 Linus Torvalds 2005-04-16 3664 .mode = 0444, 6d4561110a3e9f Eric W. Biederman 2009-11-16 @3665 .proc_handler = cdrom_sysctl_info, ^1da177e4c3f41 Linus Torvalds 2005-04-16 3666 }, ^1da177e4c3f41 Linus Torvalds 2005-04-16 3667 { ^1da177e4c3f41 Linus Torvalds 2005-04-16 3668 .procname = "autoclose", ^1da177e4c3f41 Linus Torvalds 2005-04-16 3669 .data = &cdrom_sysctl_settings.autoclose, ^1da177e4c3f41 Linus Torvalds 2005-04-16 3670 .maxlen = sizeof(int), ^1da177e4c3f41 Linus Torvalds 2005-04-16 3671 .mode = 0644, 6d4561110a3e9f Eric W. Biederman 2009-11-16 3672 .proc_handler = cdrom_sysctl_handler, ^1da177e4c3f41 Linus Torvalds 2005-04-16 3673 }, ^1da177e4c3f41 Linus Torvalds 2005-04-16 3674 { ^1da177e4c3f41 Linus Torvalds 2005-04-16 3675 .procname = "autoeject", ^1da177e4c3f41 Linus Torvalds 2005-04-16 3676 .data = &cdrom_sysctl_settings.autoeject, ^1da177e4c3f41 Linus Torvalds 2005-04-16 3677 .maxlen = sizeof(int), ^1da177e4c3f41 Linus Torvalds 2005-04-16 3678 .mode = 0644, 6d4561110a3e9f Eric W. Biederman 2009-11-16 3679 .proc_handler = cdrom_sysctl_handler, ^1da177e4c3f41 Linus Torvalds 2005-04-16 3680 }, ^1da177e4c3f41 Linus Torvalds 2005-04-16 3681 { ^1da177e4c3f41 Linus Torvalds 2005-04-16 3682 .procname = "debug", ^1da177e4c3f41 Linus Torvalds 2005-04-16 3683 .data = &cdrom_sysctl_settings.debug, ^1da177e4c3f41 Linus Torvalds 2005-04-16 3684 .maxlen = sizeof(int), ^1da177e4c3f41 Linus Torvalds 2005-04-16 3685 .mode = 0644, 6d4561110a3e9f Eric W. Biederman 2009-11-16 3686 .proc_handler = cdrom_sysctl_handler, ^1da177e4c3f41 Linus Torvalds 2005-04-16 3687 }, ^1da177e4c3f41 Linus Torvalds 2005-04-16 3688 { ^1da177e4c3f41 Linus Torvalds 2005-04-16 3689 .procname = "lock", ^1da177e4c3f41 Linus Torvalds 2005-04-16 3690 .data = &cdrom_sysctl_settings.lock, ^1da177e4c3f41 Linus Torvalds 2005-04-16 3691 .maxlen = sizeof(int), ^1da177e4c3f41 Linus Torvalds 2005-04-16 3692 .mode = 0644, 6d4561110a3e9f Eric W. Biederman 2009-11-16 3693 .proc_handler = cdrom_sysctl_handler, ^1da177e4c3f41 Linus Torvalds 2005-04-16 3694 }, ^1da177e4c3f41 Linus Torvalds 2005-04-16 3695 { ^1da177e4c3f41 Linus Torvalds 2005-04-16 3696 .procname = "check_media", ^1da177e4c3f41 Linus Torvalds 2005-04-16 3697 .data = &cdrom_sysctl_settings.check, ^1da177e4c3f41 Linus Torvalds 2005-04-16 3698 .maxlen = sizeof(int), ^1da177e4c3f41 Linus Torvalds 2005-04-16 3699 .mode = 0644, 6d4561110a3e9f Eric W. Biederman 2009-11-16 3700 .proc_handler = cdrom_sysctl_handler ^1da177e4c3f41 Linus Torvalds 2005-04-16 3701 }, 894d2491153a9f Eric W. Biederman 2009-11-05 3702 { } ^1da177e4c3f41 Linus Torvalds 2005-04-16 3703 }; ^1da177e4c3f41 Linus Torvalds 2005-04-16 3704 :::::: The code at line 3597 was first introduced by commit :::::: 8d65af789f3e2cf4cfbdbf71a0f7a61ebcd41d38 sysctl: remove "struct file *" argument of ->proc_handler :::::: TO: Alexey Dobriyan <adobri...@gmail.com> :::::: CC: Linus Torvalds <torva...@linux-foundation.org> --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-...@lists.01.org
.config.gz
Description: application/gzip
_______________________________________________ kbuild mailing list -- kbuild@lists.01.org To unsubscribe send an email to kbuild-le...@lists.01.org