* [mcgrof:20200605-blktrace-fixes-v4 8/8] kernel/trace/blktrace.c:601:12: error: invalid storage class for function '__blk_trace_setup'
@ 2020-06-09 10:16 kernel test robot
0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2020-06-09 10:16 UTC (permalink / raw)
To: kbuild-all
[-- Attachment #1: Type: text/plain, Size: 35304 bytes --]
tree: https://git.kernel.org/pub/scm/linux/kernel/git/mcgrof/linux.git 20200605-blktrace-fixes-v4
head: 5198fc554bd362e6b4800af7fddd577e0558ed50
commit: 5198fc554bd362e6b4800af7fddd577e0558ed50 [8/8] blktrace: fix debugfs use after free
config: nds32-randconfig-r005-20200608 (attached as .config)
compiler: nds32le-linux-gcc (GCC) 9.3.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
git checkout 5198fc554bd362e6b4800af7fddd577e0558ed50
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=nds32
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
All error/warnings (new ones prefixed by >>, old ones prefixed by <<):
kernel/trace/blktrace.c: In function 'do_blk_trace_setup':
>> kernel/trace/blktrace.c:601:12: error: invalid storage class for function '__blk_trace_setup'
601 | static int __blk_trace_setup(struct request_queue *q, char *name, dev_t dev,
| ^~~~~~~~~~~~~~~~~
>> kernel/trace/blktrace.c:601:1: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement]
601 | static int __blk_trace_setup(struct request_queue *q, char *name, dev_t dev,
| ^~~~~~
In file included from include/linux/linkage.h:7,
from include/linux/kernel.h:8,
from kernel/trace/blktrace.c:9:
>> kernel/trace/blktrace.c:634:19: error: non-static declaration of 'blk_trace_setup' follows static declaration
634 | EXPORT_SYMBOL_GPL(blk_trace_setup);
| ^~~~~~~~~~~~~~~
include/linux/export.h:98:21: note: in definition of macro '___EXPORT_SYMBOL'
98 | extern typeof(sym) sym; | ^~~
>> include/linux/export.h:155:34: note: in expansion of macro '__EXPORT_SYMBOL'
155 | #define _EXPORT_SYMBOL(sym, sec) __EXPORT_SYMBOL(sym, sec, "")
| ^~~~~~~~~~~~~~~
>> include/linux/export.h:159:33: note: in expansion of macro '_EXPORT_SYMBOL'
159 | #define EXPORT_SYMBOL_GPL(sym) _EXPORT_SYMBOL(sym, "_gpl")
| ^~~~~~~~~~~~~~
>> kernel/trace/blktrace.c:634:1: note: in expansion of macro 'EXPORT_SYMBOL_GPL'
634 | EXPORT_SYMBOL_GPL(blk_trace_setup);
| ^~~~~~~~~~~~~~~~~
kernel/trace/blktrace.c:622:5: note: previous definition of 'blk_trace_setup' was here
622 | int blk_trace_setup(struct request_queue *q, char *name, dev_t dev,
| ^~~~~~~~~~~~~~~
In file included from include/linux/linkage.h:7,
from include/linux/kernel.h:8,
from kernel/trace/blktrace.c:9:
>> include/linux/export.h:67:2: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement]
67 | static const struct kernel_symbol __ksymtab_##sym | ^~~~~~
>> include/linux/export.h:108:2: note: in expansion of macro '__KSYMTAB_ENTRY'
108 | __KSYMTAB_ENTRY(sym, sec)
| ^~~~~~~~~~~~~~~
>> include/linux/export.h:147:39: note: in expansion of macro '___EXPORT_SYMBOL'
147 | #define __EXPORT_SYMBOL(sym, sec, ns) ___EXPORT_SYMBOL(sym, sec, ns)
| ^~~~~~~~~~~~~~~~
>> include/linux/export.h:155:34: note: in expansion of macro '__EXPORT_SYMBOL'
155 | #define _EXPORT_SYMBOL(sym, sec) __EXPORT_SYMBOL(sym, sec, "")
| ^~~~~~~~~~~~~~~
>> include/linux/export.h:159:33: note: in expansion of macro '_EXPORT_SYMBOL'
159 | #define EXPORT_SYMBOL_GPL(sym) _EXPORT_SYMBOL(sym, "_gpl")
| ^~~~~~~~~~~~~~
>> kernel/trace/blktrace.c:634:1: note: in expansion of macro 'EXPORT_SYMBOL_GPL'
634 | EXPORT_SYMBOL_GPL(blk_trace_setup);
| ^~~~~~~~~~~~~~~~~
>> kernel/trace/blktrace.c:670:12: error: invalid storage class for function '__blk_trace_startstop'
670 | static int __blk_trace_startstop(struct request_queue *q, int start)
| ^~~~~~~~~~~~~~~~~~~~~
In file included from include/linux/linkage.h:7,
from include/linux/kernel.h:8,
from kernel/trace/blktrace.c:9:
>> kernel/trace/blktrace.c:722:19: error: non-static declaration of 'blk_trace_startstop' follows static declaration
722 | EXPORT_SYMBOL_GPL(blk_trace_startstop);
| ^~~~~~~~~~~~~~~~~~~
include/linux/export.h:98:21: note: in definition of macro '___EXPORT_SYMBOL'
98 | extern typeof(sym) sym; | ^~~
>> include/linux/export.h:155:34: note: in expansion of macro '__EXPORT_SYMBOL'
155 | #define _EXPORT_SYMBOL(sym, sec) __EXPORT_SYMBOL(sym, sec, "")
| ^~~~~~~~~~~~~~~
>> include/linux/export.h:159:33: note: in expansion of macro '_EXPORT_SYMBOL'
159 | #define EXPORT_SYMBOL_GPL(sym) _EXPORT_SYMBOL(sym, "_gpl")
| ^~~~~~~~~~~~~~
kernel/trace/blktrace.c:722:1: note: in expansion of macro 'EXPORT_SYMBOL_GPL'
722 | EXPORT_SYMBOL_GPL(blk_trace_startstop);
| ^~~~~~~~~~~~~~~~~
kernel/trace/blktrace.c:712:5: note: previous definition of 'blk_trace_startstop' was here
712 | int blk_trace_startstop(struct request_queue *q, int start)
| ^~~~~~~~~~~~~~~~~~~
In file included from include/linux/linkage.h:7,
from include/linux/kernel.h:8,
from kernel/trace/blktrace.c:9:
>> include/linux/export.h:67:2: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement]
67 | static const struct kernel_symbol __ksymtab_##sym | ^~~~~~
>> include/linux/export.h:108:2: note: in expansion of macro '__KSYMTAB_ENTRY'
108 | __KSYMTAB_ENTRY(sym, sec)
| ^~~~~~~~~~~~~~~
>> include/linux/export.h:147:39: note: in expansion of macro '___EXPORT_SYMBOL'
147 | #define __EXPORT_SYMBOL(sym, sec, ns) ___EXPORT_SYMBOL(sym, sec, ns)
| ^~~~~~~~~~~~~~~~
>> include/linux/export.h:155:34: note: in expansion of macro '__EXPORT_SYMBOL'
155 | #define _EXPORT_SYMBOL(sym, sec) __EXPORT_SYMBOL(sym, sec, "")
| ^~~~~~~~~~~~~~~
include/linux/export.h:159:33: note: in expansion of macro '_EXPORT_SYMBOL'
159 | #define EXPORT_SYMBOL_GPL(sym) _EXPORT_SYMBOL(sym, "_gpl")
| ^~~~~~~~~~~~~~
kernel/trace/blktrace.c:722:1: note: in expansion of macro 'EXPORT_SYMBOL_GPL'
722 | EXPORT_SYMBOL_GPL(blk_trace_startstop);
| ^~~~~~~~~~~~~~~~~
kernel/trace/blktrace.c:796:12: error: invalid storage class for function 'blk_trace_bio_get_cgid'
796 | static u64 blk_trace_bio_get_cgid(struct request_queue *q, struct bio *bio)
| ^~~~~~~~~~~~~~~~~~~~~~
kernel/trace/blktrace.c:817:1: error: invalid storage class for function 'blk_trace_request_get_cgid'
817 | blk_trace_request_get_cgid(struct request_queue *q, struct request *rq)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
kernel/trace/blktrace.c:841:13: error: invalid storage class for function 'blk_add_trace_rq'
841 | static void blk_add_trace_rq(struct request *rq, int error,
| ^~~~~~~~~~~~~~~~
kernel/trace/blktrace.c:863:13: error: invalid storage class for function 'blk_add_trace_rq_insert'
863 | static void blk_add_trace_rq_insert(void *ignore,
| ^~~~~~~~~~~~~~~~~~~~~~~
kernel/trace/blktrace.c:870:13: error: invalid storage class for function 'blk_add_trace_rq_issue'
870 | static void blk_add_trace_rq_issue(void *ignore,
| ^~~~~~~~~~~~~~~~~~~~~~
kernel/trace/blktrace.c:877:13: error: invalid storage class for function 'blk_add_trace_rq_requeue'
877 | static void blk_add_trace_rq_requeue(void *ignore,
| ^~~~~~~~~~~~~~~~~~~~~~~~
kernel/trace/blktrace.c:885:13: error: invalid storage class for function 'blk_add_trace_rq_complete'
885 | static void blk_add_trace_rq_complete(void *ignore, struct request *rq,
| ^~~~~~~~~~~~~~~~~~~~~~~~~
kernel/trace/blktrace.c:903:13: error: invalid storage class for function 'blk_add_trace_bio'
903 | static void blk_add_trace_bio(struct request_queue *q, struct bio *bio,
| ^~~~~~~~~~~~~~~~~
kernel/trace/blktrace.c:921:13: error: invalid storage class for function 'blk_add_trace_bio_bounce'
921 | static void blk_add_trace_bio_bounce(void *ignore,
| ^~~~~~~~~~~~~~~~~~~~~~~~
kernel/trace/blktrace.c:927:13: error: invalid storage class for function 'blk_add_trace_bio_complete'
927 | static void blk_add_trace_bio_complete(void *ignore,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
kernel/trace/blktrace.c:934:13: error: invalid storage class for function 'blk_add_trace_bio_backmerge'
934 | static void blk_add_trace_bio_backmerge(void *ignore,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~
kernel/trace/blktrace.c:942:13: error: invalid storage class for function 'blk_add_trace_bio_frontmerge'
942 | static void blk_add_trace_bio_frontmerge(void *ignore,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
kernel/trace/blktrace.c:950:13: error: invalid storage class for function 'blk_add_trace_bio_queue'
950 | static void blk_add_trace_bio_queue(void *ignore,
| ^~~~~~~~~~~~~~~~~~~~~~~
kernel/trace/blktrace.c:956:13: error: invalid storage class for function 'blk_add_trace_getrq'
956 | static void blk_add_trace_getrq(void *ignore,
| ^~~~~~~~~~~~~~~~~~~
kernel/trace/blktrace.c:975:13: error: invalid storage class for function 'blk_add_trace_sleeprq'
975 | static void blk_add_trace_sleeprq(void *ignore,
| ^~~~~~~~~~~~~~~~~~~~~
kernel/trace/blktrace.c:993:13: error: invalid storage class for function 'blk_add_trace_plug'
993 | static void blk_add_trace_plug(void *ignore, struct request_queue *q)
| ^~~~~~~~~~~~~~~~~~
kernel/trace/blktrace.c:1004:13: error: invalid storage class for function 'blk_add_trace_unplug'
1004 | static void blk_add_trace_unplug(void *ignore, struct request_queue *q,
| ^~~~~~~~~~~~~~~~~~~~
kernel/trace/blktrace.c:1025:13: error: invalid storage class for function 'blk_add_trace_split'
1025 | static void blk_add_trace_split(void *ignore,
| ^~~~~~~~~~~~~~~~~~~
kernel/trace/blktrace.c:1057:13: error: invalid storage class for function 'blk_add_trace_bio_remap'
1057 | static void blk_add_trace_bio_remap(void *ignore,
| ^~~~~~~~~~~~~~~~~~~~~~~
kernel/trace/blktrace.c:1094:13: error: invalid storage class for function 'blk_add_trace_rq_remap'
1094 | static void blk_add_trace_rq_remap(void *ignore,
| ^~~~~~~~~~~~~~~~~~~~~~
In file included from include/linux/linkage.h:7,
from include/linux/kernel.h:8,
from kernel/trace/blktrace.c:9:
kernel/trace/blktrace.c:1148:19: error: non-static declaration of 'blk_add_driver_data' follows static declaration
1148 | EXPORT_SYMBOL_GPL(blk_add_driver_data);
| ^~~~~~~~~~~~~~~~~~~
include/linux/export.h:98:21: note: in definition of macro '___EXPORT_SYMBOL'
98 | extern typeof(sym) sym; | ^~~
include/linux/export.h:155:34: note: in expansion of macro '__EXPORT_SYMBOL'
155 | #define _EXPORT_SYMBOL(sym, sec) __EXPORT_SYMBOL(sym, sec, "")
| ^~~~~~~~~~~~~~~
include/linux/export.h:159:33: note: in expansion of macro '_EXPORT_SYMBOL'
159 | #define EXPORT_SYMBOL_GPL(sym) _EXPORT_SYMBOL(sym, "_gpl")
| ^~~~~~~~~~~~~~
kernel/trace/blktrace.c:1148:1: note: in expansion of macro 'EXPORT_SYMBOL_GPL'
1148 | EXPORT_SYMBOL_GPL(blk_add_driver_data);
| ^~~~~~~~~~~~~~~~~
kernel/trace/blktrace.c:1130:6: note: previous definition of 'blk_add_driver_data' was here
1130 | void blk_add_driver_data(struct request_queue *q,
| ^~~~~~~~~~~~~~~~~~~
In file included from include/linux/linkage.h:7,
from include/linux/kernel.h:8,
from kernel/trace/blktrace.c:9:
include/linux/export.h:67:2: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement]
67 | static const struct kernel_symbol __ksymtab_##sym | ^~~~~~
include/linux/export.h:108:2: note: in expansion of macro '__KSYMTAB_ENTRY'
108 | __KSYMTAB_ENTRY(sym, sec)
| ^~~~~~~~~~~~~~~
include/linux/export.h:147:39: note: in expansion of macro '___EXPORT_SYMBOL'
147 | #define __EXPORT_SYMBOL(sym, sec, ns) ___EXPORT_SYMBOL(sym, sec, ns)
vim +/__blk_trace_setup +601 kernel/trace/blktrace.c
171044d449611c block/blktrace.c Arnd Bergmann 2007-10-09 600
1f2cac107c591c kernel/trace/blktrace.c Jens Axboe 2017-11-05 @601 static int __blk_trace_setup(struct request_queue *q, char *name, dev_t dev,
1f2cac107c591c kernel/trace/blktrace.c Jens Axboe 2017-11-05 602 struct block_device *bdev, char __user *arg)
171044d449611c block/blktrace.c Arnd Bergmann 2007-10-09 603 {
171044d449611c block/blktrace.c Arnd Bergmann 2007-10-09 604 struct blk_user_trace_setup buts;
171044d449611c block/blktrace.c Arnd Bergmann 2007-10-09 605 int ret;
171044d449611c block/blktrace.c Arnd Bergmann 2007-10-09 606
171044d449611c block/blktrace.c Arnd Bergmann 2007-10-09 607 ret = copy_from_user(&buts, arg, sizeof(buts));
171044d449611c block/blktrace.c Arnd Bergmann 2007-10-09 608 if (ret)
171044d449611c block/blktrace.c Arnd Bergmann 2007-10-09 609 return -EFAULT;
171044d449611c block/blktrace.c Arnd Bergmann 2007-10-09 610
d0deef5b14af7d kernel/trace/blktrace.c Shawn Du 2009-04-14 611 ret = do_blk_trace_setup(q, name, dev, bdev, &buts);
171044d449611c block/blktrace.c Arnd Bergmann 2007-10-09 612 if (ret)
171044d449611c block/blktrace.c Arnd Bergmann 2007-10-09 613 return ret;
171044d449611c block/blktrace.c Arnd Bergmann 2007-10-09 614
9a8c28c8311e30 kernel/trace/blktrace.c Dmitry Monakhov 2010-02-27 615 if (copy_to_user(arg, &buts, sizeof(buts))) {
2967acbb257a6a kernel/trace/blktrace.c Jens Axboe 2017-11-19 616 __blk_trace_remove(q);
171044d449611c block/blktrace.c Arnd Bergmann 2007-10-09 617 return -EFAULT;
9a8c28c8311e30 kernel/trace/blktrace.c Dmitry Monakhov 2010-02-27 618 }
171044d449611c block/blktrace.c Arnd Bergmann 2007-10-09 619 return 0;
171044d449611c block/blktrace.c Arnd Bergmann 2007-10-09 620 }
1f2cac107c591c kernel/trace/blktrace.c Jens Axboe 2017-11-05 621
1f2cac107c591c kernel/trace/blktrace.c Jens Axboe 2017-11-05 622 int blk_trace_setup(struct request_queue *q, char *name, dev_t dev,
1f2cac107c591c kernel/trace/blktrace.c Jens Axboe 2017-11-05 623 struct block_device *bdev,
1f2cac107c591c kernel/trace/blktrace.c Jens Axboe 2017-11-05 624 char __user *arg)
1f2cac107c591c kernel/trace/blktrace.c Jens Axboe 2017-11-05 625 {
1f2cac107c591c kernel/trace/blktrace.c Jens Axboe 2017-11-05 626 int ret;
1f2cac107c591c kernel/trace/blktrace.c Jens Axboe 2017-11-05 627
1f2cac107c591c kernel/trace/blktrace.c Jens Axboe 2017-11-05 628 mutex_lock(&q->blk_trace_mutex);
1f2cac107c591c kernel/trace/blktrace.c Jens Axboe 2017-11-05 629 ret = __blk_trace_setup(q, name, dev, bdev, arg);
1f2cac107c591c kernel/trace/blktrace.c Jens Axboe 2017-11-05 630 mutex_unlock(&q->blk_trace_mutex);
1f2cac107c591c kernel/trace/blktrace.c Jens Axboe 2017-11-05 631
1f2cac107c591c kernel/trace/blktrace.c Jens Axboe 2017-11-05 632 return ret;
1f2cac107c591c kernel/trace/blktrace.c Jens Axboe 2017-11-05 633 }
6da127ad0918f9 block/blktrace.c Christof Schmitt 2008-01-11 @634 EXPORT_SYMBOL_GPL(blk_trace_setup);
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 635
62c2a7d969f301 kernel/trace/blktrace.c Arnd Bergmann 2010-07-07 636 #if defined(CONFIG_COMPAT) && defined(CONFIG_X86_64)
62c2a7d969f301 kernel/trace/blktrace.c Arnd Bergmann 2010-07-07 637 static int compat_blk_trace_setup(struct request_queue *q, char *name,
62c2a7d969f301 kernel/trace/blktrace.c Arnd Bergmann 2010-07-07 638 dev_t dev, struct block_device *bdev,
62c2a7d969f301 kernel/trace/blktrace.c Arnd Bergmann 2010-07-07 639 char __user *arg)
62c2a7d969f301 kernel/trace/blktrace.c Arnd Bergmann 2010-07-07 640 {
62c2a7d969f301 kernel/trace/blktrace.c Arnd Bergmann 2010-07-07 641 struct blk_user_trace_setup buts;
62c2a7d969f301 kernel/trace/blktrace.c Arnd Bergmann 2010-07-07 642 struct compat_blk_user_trace_setup cbuts;
62c2a7d969f301 kernel/trace/blktrace.c Arnd Bergmann 2010-07-07 643 int ret;
62c2a7d969f301 kernel/trace/blktrace.c Arnd Bergmann 2010-07-07 644
62c2a7d969f301 kernel/trace/blktrace.c Arnd Bergmann 2010-07-07 645 if (copy_from_user(&cbuts, arg, sizeof(cbuts)))
62c2a7d969f301 kernel/trace/blktrace.c Arnd Bergmann 2010-07-07 646 return -EFAULT;
62c2a7d969f301 kernel/trace/blktrace.c Arnd Bergmann 2010-07-07 647
62c2a7d969f301 kernel/trace/blktrace.c Arnd Bergmann 2010-07-07 648 buts = (struct blk_user_trace_setup) {
62c2a7d969f301 kernel/trace/blktrace.c Arnd Bergmann 2010-07-07 649 .act_mask = cbuts.act_mask,
62c2a7d969f301 kernel/trace/blktrace.c Arnd Bergmann 2010-07-07 650 .buf_size = cbuts.buf_size,
62c2a7d969f301 kernel/trace/blktrace.c Arnd Bergmann 2010-07-07 651 .buf_nr = cbuts.buf_nr,
62c2a7d969f301 kernel/trace/blktrace.c Arnd Bergmann 2010-07-07 652 .start_lba = cbuts.start_lba,
62c2a7d969f301 kernel/trace/blktrace.c Arnd Bergmann 2010-07-07 653 .end_lba = cbuts.end_lba,
62c2a7d969f301 kernel/trace/blktrace.c Arnd Bergmann 2010-07-07 654 .pid = cbuts.pid,
62c2a7d969f301 kernel/trace/blktrace.c Arnd Bergmann 2010-07-07 655 };
62c2a7d969f301 kernel/trace/blktrace.c Arnd Bergmann 2010-07-07 656
62c2a7d969f301 kernel/trace/blktrace.c Arnd Bergmann 2010-07-07 657 ret = do_blk_trace_setup(q, name, dev, bdev, &buts);
62c2a7d969f301 kernel/trace/blktrace.c Arnd Bergmann 2010-07-07 658 if (ret)
62c2a7d969f301 kernel/trace/blktrace.c Arnd Bergmann 2010-07-07 659 return ret;
62c2a7d969f301 kernel/trace/blktrace.c Arnd Bergmann 2010-07-07 660
f8c5e94486671f kernel/trace/blktrace.c Chen Gang 2013-11-03 661 if (copy_to_user(arg, &buts.name, ARRAY_SIZE(buts.name))) {
2967acbb257a6a kernel/trace/blktrace.c Jens Axboe 2017-11-19 662 __blk_trace_remove(q);
62c2a7d969f301 kernel/trace/blktrace.c Arnd Bergmann 2010-07-07 663 return -EFAULT;
62c2a7d969f301 kernel/trace/blktrace.c Arnd Bergmann 2010-07-07 664 }
62c2a7d969f301 kernel/trace/blktrace.c Arnd Bergmann 2010-07-07 665
62c2a7d969f301 kernel/trace/blktrace.c Arnd Bergmann 2010-07-07 666 return 0;
62c2a7d969f301 kernel/trace/blktrace.c Arnd Bergmann 2010-07-07 667 }
62c2a7d969f301 kernel/trace/blktrace.c Arnd Bergmann 2010-07-07 668 #endif
62c2a7d969f301 kernel/trace/blktrace.c Arnd Bergmann 2010-07-07 669
1f2cac107c591c kernel/trace/blktrace.c Jens Axboe 2017-11-05 @670 static int __blk_trace_startstop(struct request_queue *q, int start)
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 671 {
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 672 int ret;
c780e86dd48ef6 kernel/trace/blktrace.c Jan Kara 2020-02-06 673 struct blk_trace *bt;
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 674
c780e86dd48ef6 kernel/trace/blktrace.c Jan Kara 2020-02-06 675 bt = rcu_dereference_protected(q->blk_trace,
c780e86dd48ef6 kernel/trace/blktrace.c Jan Kara 2020-02-06 676 lockdep_is_held(&q->blk_trace_mutex));
939b366977d29b block/blktrace.c Arnaldo Carvalho de Melo 2009-02-03 677 if (bt == NULL)
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 678 return -EINVAL;
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 679
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 680 /*
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 681 * For starting a trace, we can transition from a setup or stopped
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 682 * trace. For stopping a trace, the state must be running
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 683 */
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 684 ret = -EINVAL;
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 685 if (start) {
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 686 if (bt->trace_state == Blktrace_setup ||
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 687 bt->trace_state == Blktrace_stopped) {
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 688 blktrace_seq++;
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 689 smp_mb();
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 690 bt->trace_state = Blktrace_running;
a404d5576bbe58 kernel/trace/blktrace.c Jan Kara 2013-09-17 691 spin_lock_irq(&running_trace_lock);
a404d5576bbe58 kernel/trace/blktrace.c Jan Kara 2013-09-17 692 list_add(&bt->running_list, &running_trace_list);
a404d5576bbe58 kernel/trace/blktrace.c Jan Kara 2013-09-17 693 spin_unlock_irq(&running_trace_lock);
be1c63411addba block/blktrace.c Olaf Kirch 2006-12-01 694
be1c63411addba block/blktrace.c Olaf Kirch 2006-12-01 695 trace_note_time(bt);
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 696 ret = 0;
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 697 }
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 698 } else {
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 699 if (bt->trace_state == Blktrace_running) {
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 700 bt->trace_state = Blktrace_stopped;
a404d5576bbe58 kernel/trace/blktrace.c Jan Kara 2013-09-17 701 spin_lock_irq(&running_trace_lock);
a404d5576bbe58 kernel/trace/blktrace.c Jan Kara 2013-09-17 702 list_del_init(&bt->running_list);
a404d5576bbe58 kernel/trace/blktrace.c Jan Kara 2013-09-17 703 spin_unlock_irq(&running_trace_lock);
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 704 relay_flush(bt->rchan);
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 705 ret = 0;
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 706 }
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 707 }
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 708
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 709 return ret;
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 710 }
1f2cac107c591c kernel/trace/blktrace.c Jens Axboe 2017-11-05 711
1f2cac107c591c kernel/trace/blktrace.c Jens Axboe 2017-11-05 712 int blk_trace_startstop(struct request_queue *q, int start)
1f2cac107c591c kernel/trace/blktrace.c Jens Axboe 2017-11-05 713 {
1f2cac107c591c kernel/trace/blktrace.c Jens Axboe 2017-11-05 714 int ret;
1f2cac107c591c kernel/trace/blktrace.c Jens Axboe 2017-11-05 715
1f2cac107c591c kernel/trace/blktrace.c Jens Axboe 2017-11-05 716 mutex_lock(&q->blk_trace_mutex);
1f2cac107c591c kernel/trace/blktrace.c Jens Axboe 2017-11-05 717 ret = __blk_trace_startstop(q, start);
1f2cac107c591c kernel/trace/blktrace.c Jens Axboe 2017-11-05 718 mutex_unlock(&q->blk_trace_mutex);
1f2cac107c591c kernel/trace/blktrace.c Jens Axboe 2017-11-05 719
1f2cac107c591c kernel/trace/blktrace.c Jens Axboe 2017-11-05 720 return ret;
1f2cac107c591c kernel/trace/blktrace.c Jens Axboe 2017-11-05 721 }
6da127ad0918f9 block/blktrace.c Christof Schmitt 2008-01-11 @722 EXPORT_SYMBOL_GPL(blk_trace_startstop);
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 723
5acb3cc2c2e9d3 kernel/trace/blktrace.c Waiman Long 2017-09-20 724 /*
5acb3cc2c2e9d3 kernel/trace/blktrace.c Waiman Long 2017-09-20 725 * When reading or writing the blktrace sysfs files, the references to the
5acb3cc2c2e9d3 kernel/trace/blktrace.c Waiman Long 2017-09-20 726 * opened sysfs or device files should prevent the underlying block device
5acb3cc2c2e9d3 kernel/trace/blktrace.c Waiman Long 2017-09-20 727 * from being removed. So no further delete protection is really needed.
5acb3cc2c2e9d3 kernel/trace/blktrace.c Waiman Long 2017-09-20 728 */
5acb3cc2c2e9d3 kernel/trace/blktrace.c Waiman Long 2017-09-20 729
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 730 /**
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 731 * blk_trace_ioctl: - handle the ioctls associated with tracing
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 732 * @bdev: the block device
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 733 * @cmd: the ioctl cmd
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 734 * @arg: the argument data, if any
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 735 *
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 736 **/
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 737 int blk_trace_ioctl(struct block_device *bdev, unsigned cmd, char __user *arg)
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 738 {
165125e1e480f9 block/blktrace.c Jens Axboe 2007-07-24 739 struct request_queue *q;
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 740 int ret, start = 0;
6da127ad0918f9 block/blktrace.c Christof Schmitt 2008-01-11 741 char b[BDEVNAME_SIZE];
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 742
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 743 q = bdev_get_queue(bdev);
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 744 if (!q)
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 745 return -ENXIO;
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 746
5acb3cc2c2e9d3 kernel/trace/blktrace.c Waiman Long 2017-09-20 747 mutex_lock(&q->blk_trace_mutex);
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 748
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 749 switch (cmd) {
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 750 case BLKTRACESETUP:
f36f21ecca9ee6 block/blktrace.c Jean Delvare 2008-05-12 751 bdevname(bdev, b);
1f2cac107c591c kernel/trace/blktrace.c Jens Axboe 2017-11-05 752 ret = __blk_trace_setup(q, b, bdev->bd_dev, bdev, arg);
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 753 break;
62c2a7d969f301 kernel/trace/blktrace.c Arnd Bergmann 2010-07-07 754 #if defined(CONFIG_COMPAT) && defined(CONFIG_X86_64)
62c2a7d969f301 kernel/trace/blktrace.c Arnd Bergmann 2010-07-07 755 case BLKTRACESETUP32:
62c2a7d969f301 kernel/trace/blktrace.c Arnd Bergmann 2010-07-07 756 bdevname(bdev, b);
62c2a7d969f301 kernel/trace/blktrace.c Arnd Bergmann 2010-07-07 757 ret = compat_blk_trace_setup(q, b, bdev->bd_dev, bdev, arg);
62c2a7d969f301 kernel/trace/blktrace.c Arnd Bergmann 2010-07-07 758 break;
62c2a7d969f301 kernel/trace/blktrace.c Arnd Bergmann 2010-07-07 759 #endif
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 760 case BLKTRACESTART:
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 761 start = 1;
f6d85f04e29859 kernel/trace/blktrace.c Mathieu Malaterre 2019-01-14 762 /* fall through */
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 763 case BLKTRACESTOP:
1f2cac107c591c kernel/trace/blktrace.c Jens Axboe 2017-11-05 764 ret = __blk_trace_startstop(q, start);
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 765 break;
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 766 case BLKTRACETEARDOWN:
1f2cac107c591c kernel/trace/blktrace.c Jens Axboe 2017-11-05 767 ret = __blk_trace_remove(q);
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 768 break;
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 769 default:
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 770 ret = -ENOTTY;
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 771 break;
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 772 }
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 773
5acb3cc2c2e9d3 kernel/trace/blktrace.c Waiman Long 2017-09-20 774 mutex_unlock(&q->blk_trace_mutex);
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 775 return ret;
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 776 }
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 777
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 778 /**
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 779 * blk_trace_shutdown: - stop and cleanup trace structures
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 780 * @q: the request queue associated with the device
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 781 *
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 782 **/
165125e1e480f9 block/blktrace.c Jens Axboe 2007-07-24 783 void blk_trace_shutdown(struct request_queue *q)
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 784 {
1f2cac107c591c kernel/trace/blktrace.c Jens Axboe 2017-11-05 785 mutex_lock(&q->blk_trace_mutex);
c780e86dd48ef6 kernel/trace/blktrace.c Jan Kara 2020-02-06 786 if (rcu_dereference_protected(q->blk_trace,
c780e86dd48ef6 kernel/trace/blktrace.c Jan Kara 2020-02-06 787 lockdep_is_held(&q->blk_trace_mutex))) {
1f2cac107c591c kernel/trace/blktrace.c Jens Axboe 2017-11-05 788 __blk_trace_startstop(q, 0);
1f2cac107c591c kernel/trace/blktrace.c Jens Axboe 2017-11-05 789 __blk_trace_remove(q);
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 790 }
1f2cac107c591c kernel/trace/blktrace.c Jens Axboe 2017-11-05 791
1f2cac107c591c kernel/trace/blktrace.c Jens Axboe 2017-11-05 792 mutex_unlock(&q->blk_trace_mutex);
6c5c934153513d block/blktrace.c Alexey Dobriyan 2006-09-29 793 }
5f3ea37c7716db block/blktrace.c Arnaldo Carvalho de Melo 2008-10-30 794
ca1136c99b66b1 kernel/trace/blktrace.c Shaohua Li 2017-07-12 795 #ifdef CONFIG_BLK_CGROUP
67c0496e87d193 kernel/trace/blktrace.c Tejun Heo 2019-11-04 @796 static u64 blk_trace_bio_get_cgid(struct request_queue *q, struct bio *bio)
ca1136c99b66b1 kernel/trace/blktrace.c Shaohua Li 2017-07-12 797 {
c780e86dd48ef6 kernel/trace/blktrace.c Jan Kara 2020-02-06 798 struct blk_trace *bt;
ca1136c99b66b1 kernel/trace/blktrace.c Shaohua Li 2017-07-12 799
c780e86dd48ef6 kernel/trace/blktrace.c Jan Kara 2020-02-06 800 /* We don't use the 'bt' value here except as an optimization... */
c780e86dd48ef6 kernel/trace/blktrace.c Jan Kara 2020-02-06 801 bt = rcu_dereference_protected(q->blk_trace, 1);
ca1136c99b66b1 kernel/trace/blktrace.c Shaohua Li 2017-07-12 802 if (!bt || !(blk_tracer_flags.val & TRACE_BLK_OPT_CGROUP))
67c0496e87d193 kernel/trace/blktrace.c Tejun Heo 2019-11-04 803 return 0;
ca1136c99b66b1 kernel/trace/blktrace.c Shaohua Li 2017-07-12 804
db6638d7d177a8 kernel/trace/blktrace.c Dennis Zhou 2018-12-05 805 if (!bio->bi_blkg)
67c0496e87d193 kernel/trace/blktrace.c Tejun Heo 2019-11-04 806 return 0;
743210386c0354 kernel/trace/blktrace.c Tejun Heo 2019-11-04 807 return cgroup_id(bio_blkcg(bio)->css.cgroup);
ca1136c99b66b1 kernel/trace/blktrace.c Shaohua Li 2017-07-12 808 }
ca1136c99b66b1 kernel/trace/blktrace.c Shaohua Li 2017-07-12 809 #else
67c0496e87d193 kernel/trace/blktrace.c Tejun Heo 2019-11-04 810 u64 blk_trace_bio_get_cgid(struct request_queue *q, struct bio *bio)
ca1136c99b66b1 kernel/trace/blktrace.c Shaohua Li 2017-07-12 811 {
67c0496e87d193 kernel/trace/blktrace.c Tejun Heo 2019-11-04 812 return 0;
ca1136c99b66b1 kernel/trace/blktrace.c Shaohua Li 2017-07-12 813 }
ca1136c99b66b1 kernel/trace/blktrace.c Shaohua Li 2017-07-12 814 #endif
ca1136c99b66b1 kernel/trace/blktrace.c Shaohua Li 2017-07-12 815
:::::: The code at line 601 was first introduced by commit
:::::: 1f2cac107c591c24b60b115d6050adc213d10fc0 blktrace: fix unlocked access to init/start-stop/teardown
:::::: TO: Jens Axboe <axboe@kernel.dk>
:::::: CC: Jens Axboe <axboe@kernel.dk>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 22900 bytes --]
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2020-06-09 10:16 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-06-09 10:16 [mcgrof:20200605-blktrace-fixes-v4 8/8] kernel/trace/blktrace.c:601:12: error: invalid storage class for function '__blk_trace_setup' kernel test robot
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.