[tglx-devel:rebase/kcsan 4/4] fs/gfs2/glock.c:166:9: sparse: sparse: too long token expansion
by kernel test robot
tree: https://git.kernel.org/pub/scm/linux/kernel/git/tglx/devel.git rebase/kcsan
head: e99540a49aaecbd06249c81f70a781c30117c712
commit: e99540a49aaecbd06249c81f70a781c30117c712 [4/4] Merge branch 'locking/kcsan' into rebase/kcsan
config: sparc-randconfig-s032-20200607 (attached as .config)
compiler: sparc-linux-gcc (GCC) 9.3.0
reproduce:
# apt-get install sparse
# sparse version: v0.6.1-247-gcadbd124-dirty
git checkout e99540a49aaecbd06249c81f70a781c30117c712
# save the attached .config to linux build tree
make W=1 C=1 ARCH=sparc CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__'
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
sparse warnings: (new ones prefixed by >>)
>> fs/gfs2/glock.c:166:9: sparse: sparse: too long token expansion
fs/gfs2/glock.c:637:25: sparse: sparse: too long token expansion
vim +166 fs/gfs2/glock.c
a72d2401f54b7d Bob Peterson 2019-06-13 161
961ae1d83d055a Andreas Gruenbacher 2017-07-07 162 void gfs2_glock_free(struct gfs2_glock *gl)
961ae1d83d055a Andreas Gruenbacher 2017-07-07 163 {
961ae1d83d055a Andreas Gruenbacher 2017-07-07 164 struct gfs2_sbd *sdp = gl->gl_name.ln_sbd;
961ae1d83d055a Andreas Gruenbacher 2017-07-07 165
ea4e61c7f46d33 Bob Peterson 2020-05-23 @166 gfs2_glock_assert_withdraw(gl, atomic_read(&gl->gl_revokes) == 0);
0515480ad424f2 Andreas Gruenbacher 2017-08-01 167 rhashtable_remove_fast(&gl_hash_table, &gl->gl_node, ht_parms);
0515480ad424f2 Andreas Gruenbacher 2017-08-01 168 smp_mb();
0515480ad424f2 Andreas Gruenbacher 2017-08-01 169 wake_up_glock(gl);
961ae1d83d055a Andreas Gruenbacher 2017-07-07 170 call_rcu(&gl->gl_rcu, gfs2_glock_dealloc);
bc015cb84129eb Steven Whitehouse 2011-01-19 171 if (atomic_dec_and_test(&sdp->sd_glock_disposal))
bc015cb84129eb Steven Whitehouse 2011-01-19 172 wake_up(&sdp->sd_glock_wait);
b3b94faa5fe596 David Teigland 2006-01-16 173 }
b3b94faa5fe596 David Teigland 2006-01-16 174
:::::: The code at line 166 was first introduced by commit
:::::: ea4e61c7f46d33fdf17580a925e47cc83570d658 gfs2: introduce new gfs2_glock_assert_withdraw
:::::: TO: Bob Peterson <rpeterso(a)redhat.com>
:::::: CC: Andreas Gruenbacher <agruenba(a)redhat.com>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
2 years, 3 months
[rcu:dev.2020.06.05a 85/92] powerpc-linux-ld: kernel/smp.c:128: undefined reference to `__udivdi3'
by kernel test robot
tree: https://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git dev.2020.06.05a
head: c5432e18c8bfe9283bf5e0bc5e2460ae8f39a7ee
commit: 3f8c62d29ead7c3213a4af7c433ec6fbf8457f37 [85/92] EXP kernel/smp: Provide CSD lock timeout diagnostics
config: powerpc64-randconfig-c024-20200607 (attached as .config)
compiler: powerpc-linux-gcc (GCC) 9.3.0
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
All errors (new ones prefixed by >>, old ones prefixed by <<):
powerpc-linux-ld: kernel/smp.o: in function `csd_lock_wait':
kernel/smp.c:122: undefined reference to `__udivdi3'
>> powerpc-linux-ld: kernel/smp.c:128: undefined reference to `__udivdi3'
powerpc-linux-ld: kernel/smp.c:136: undefined reference to `__umoddi3'
powerpc-linux-ld: kernel/smp.c:136: undefined reference to `__udivdi3'
powerpc-linux-ld: kernel/smp.c:122: undefined reference to `__udivdi3'
>> powerpc-linux-ld: kernel/smp.c:128: undefined reference to `__udivdi3'
powerpc-linux-ld: kernel/smp.c:136: undefined reference to `__umoddi3'
powerpc-linux-ld: kernel/smp.c:136: undefined reference to `__udivdi3'
powerpc-linux-ld: kernel/smp.c:122: undefined reference to `__udivdi3'
>> powerpc-linux-ld: kernel/smp.c:128: undefined reference to `__udivdi3'
powerpc-linux-ld: kernel/smp.c:136: undefined reference to `__umoddi3'
powerpc-linux-ld: kernel/smp.c:136: undefined reference to `__udivdi3'
powerpc-linux-ld: kernel/smp.c:122: undefined reference to `__udivdi3'
>> powerpc-linux-ld: kernel/smp.c:128: undefined reference to `__udivdi3'
powerpc-linux-ld: kernel/smp.c:136: undefined reference to `__umoddi3'
powerpc-linux-ld: kernel/smp.c:136: undefined reference to `__udivdi3'
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
2 years, 3 months
[android-common:android-4.19-stable 1/1] arch/arm64/kernel/vdso/vgettimeofday.c:27:8: warning: no previous prototype for '__kernel_time'
by kernel test robot
tree: https://android.googlesource.com/kernel/common android-4.19-stable
head: 0fad336bfccc11b80a668ce106f28b93734763a6
commit: 0fad336bfccc11b80a668ce106f28b93734763a6 [1/1] ANDROID: arch: arm64: vdso: export the symbols for time()
config: arm64-randconfig-r004-20200607 (attached as .config)
compiler: aarch64-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 0fad336bfccc11b80a668ce106f28b93734763a6
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=arm64
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
All warnings (new ones prefixed by >>, old ones prefixed by <<):
arch/arm64/kernel/vdso/vgettimeofday.c:9:5: warning: no previous prototype for '__kernel_clock_gettime' [-Wmissing-prototypes]
9 | int __kernel_clock_gettime(clockid_t clock,
| ^~~~~~~~~~~~~~~~~~~~~~
arch/arm64/kernel/vdso/vgettimeofday.c:15:5: warning: no previous prototype for '__kernel_gettimeofday' [-Wmissing-prototypes]
15 | int __kernel_gettimeofday(struct __kernel_old_timeval *tv,
| ^~~~~~~~~~~~~~~~~~~~~
arch/arm64/kernel/vdso/vgettimeofday.c:21:5: warning: no previous prototype for '__kernel_clock_getres' [-Wmissing-prototypes]
21 | int __kernel_clock_getres(clockid_t clock_id,
| ^~~~~~~~~~~~~~~~~~~~~
>> arch/arm64/kernel/vdso/vgettimeofday.c:27:8: warning: no previous prototype for '__kernel_time' [-Wmissing-prototypes]
27 | time_t __kernel_time(time_t *time)
| ^~~~~~~~~~~~~
--
arch/arm64/kernel/vdso/vgettimeofday.c:9:5: warning: no previous prototype for '__kernel_clock_gettime' [-Wmissing-prototypes]
9 | int __kernel_clock_gettime(clockid_t clock,
| ^~~~~~~~~~~~~~~~~~~~~~
arch/arm64/kernel/vdso/vgettimeofday.c:15:5: warning: no previous prototype for '__kernel_gettimeofday' [-Wmissing-prototypes]
15 | int __kernel_gettimeofday(struct __kernel_old_timeval *tv,
| ^~~~~~~~~~~~~~~~~~~~~
arch/arm64/kernel/vdso/vgettimeofday.c:21:5: warning: no previous prototype for '__kernel_clock_getres' [-Wmissing-prototypes]
21 | int __kernel_clock_getres(clockid_t clock_id,
| ^~~~~~~~~~~~~~~~~~~~~
>> arch/arm64/kernel/vdso/vgettimeofday.c:27:8: warning: no previous prototype for '__kernel_time' [-Wmissing-prototypes]
27 | time_t __kernel_time(time_t *time)
| ^~~~~~~~~~~~~
vim +/__kernel_time +27 arch/arm64/kernel/vdso/vgettimeofday.c
26
> 27 time_t __kernel_time(time_t *time)
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
2 years, 3 months
[leon-rdma:rdma-next 12/35] drivers/infiniband/core/nldev.c:1283:11: warning: operator has lower precedence than '+'; '+' will be evaluated first
by kernel test robot
tree: https://git.kernel.org/pub/scm/linux/kernel/git/leon/linux-rdma.git rdma-next
head: c8c19ded619952a146265f7c6d0391682cbe781b
commit: 28de894c3f4622137892aa27a18d97a97365070b [12/35] RDMA: Add support to dump resource tracker in RAW format
config: x86_64-allyesconfig (attached as .config)
compiler: clang version 11.0.0 (https://github.com/llvm/llvm-project bc2b70982be8f5250cd0082a7190f8b417bd4dfe)
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
git checkout 28de894c3f4622137892aa27a18d97a97365070b
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=x86_64
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
All warnings (new ones prefixed by >>, old ones prefixed by <<):
>> drivers/infiniband/core/nldev.c:1283:11: warning: operator '?:' has lower precedence than '+'; '+' will be evaluated first [-Wparentheses]
raw ? fe->nldev_cmd_raw : fe->nldev_cmd),
~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/uapi/rdma/rdma_netlink.h:23:56: note: expanded from macro 'RDMA_NL_GET_TYPE'
#define RDMA_NL_GET_TYPE(client, op) ((client << 10) + op)
~~~~~~~~~~~~~~~~~^~
drivers/infiniband/core/nldev.c:1283:11: note: place parentheses around the '+' expression to silence this warning
raw ? fe->nldev_cmd_raw : fe->nldev_cmd),
~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/uapi/rdma/rdma_netlink.h:23:56: note: expanded from macro 'RDMA_NL_GET_TYPE'
#define RDMA_NL_GET_TYPE(client, op) ((client << 10) + op)
~~~~~~~~~~~~~~~~~^~
drivers/infiniband/core/nldev.c:1283:11: note: place parentheses around the '?:' expression to evaluate it first
raw ? fe->nldev_cmd_raw : fe->nldev_cmd),
~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/uapi/rdma/rdma_netlink.h:23:56: note: expanded from macro 'RDMA_NL_GET_TYPE'
#define RDMA_NL_GET_TYPE(client, op) ((client << 10) + op)
^~
drivers/infiniband/core/nldev.c:2184:1: warning: unused function '__chk_RDMA_NL_NLDEV' [-Wunused-function]
MODULE_ALIAS_RDMA_NETLINK(RDMA_NL_NLDEV, 5);
^
include/rdma/rdma_netlink.h:33:21: note: expanded from macro 'MODULE_ALIAS_RDMA_NETLINK'
static inline void __chk_##_index(void) ^
<scratch space>:45:1: note: expanded from here
__chk_RDMA_NL_NLDEV
^
2 warnings generated.
vim +1283 drivers/infiniband/core/nldev.c
1229
1230 static int res_get_common_doit(struct sk_buff *skb, struct nlmsghdr *nlh,
1231 struct netlink_ext_ack *extack,
1232 enum rdma_restrack_type res_type,
1233 res_fill_func_t fill_func, bool raw)
1234 {
1235 const struct nldev_fill_res_entry *fe = &fill_entries[res_type];
1236 struct nlattr *tb[RDMA_NLDEV_ATTR_MAX];
1237 struct rdma_restrack_entry *res;
1238 struct ib_device *device;
1239 u32 index, id, port = 0;
1240 bool has_cap_net_admin;
1241 struct sk_buff *msg;
1242 int ret;
1243
1244 ret = nlmsg_parse_deprecated(nlh, 0, tb, RDMA_NLDEV_ATTR_MAX - 1,
1245 nldev_policy, extack);
1246 if (ret || !tb[RDMA_NLDEV_ATTR_DEV_INDEX] || !fe->id || !tb[fe->id])
1247 return -EINVAL;
1248
1249 index = nla_get_u32(tb[RDMA_NLDEV_ATTR_DEV_INDEX]);
1250 device = ib_device_get_by_index(sock_net(skb->sk), index);
1251 if (!device)
1252 return -EINVAL;
1253
1254 if (tb[RDMA_NLDEV_ATTR_PORT_INDEX]) {
1255 port = nla_get_u32(tb[RDMA_NLDEV_ATTR_PORT_INDEX]);
1256 if (!rdma_is_port_valid(device, port)) {
1257 ret = -EINVAL;
1258 goto err;
1259 }
1260 }
1261
1262 if ((port && fe->flags & NLDEV_PER_DEV) ||
1263 (!port && ~fe->flags & NLDEV_PER_DEV)) {
1264 ret = -EINVAL;
1265 goto err;
1266 }
1267
1268 id = nla_get_u32(tb[fe->id]);
1269 res = rdma_restrack_get_byid(device, res_type, id);
1270 if (IS_ERR(res)) {
1271 ret = PTR_ERR(res);
1272 goto err;
1273 }
1274
1275 msg = nlmsg_new(NLMSG_DEFAULT_SIZE, GFP_KERNEL);
1276 if (!msg) {
1277 ret = -ENOMEM;
1278 goto err_get;
1279 }
1280
1281 nlh = nlmsg_put(msg, NETLINK_CB(skb).portid, nlh->nlmsg_seq,
1282 RDMA_NL_GET_TYPE(RDMA_NL_NLDEV,
> 1283 raw ? fe->nldev_cmd_raw : fe->nldev_cmd),
1284 0, 0);
1285
1286 if (fill_nldev_handle(msg, device)) {
1287 ret = -EMSGSIZE;
1288 goto err_free;
1289 }
1290
1291 has_cap_net_admin = netlink_capable(skb, CAP_NET_ADMIN);
1292
1293 ret = fill_func(msg, has_cap_net_admin, res, port, raw);
1294 if (ret)
1295 goto err_free;
1296
1297 rdma_restrack_put(res);
1298 nlmsg_end(msg, nlh);
1299 ib_device_put(device);
1300 return rdma_nl_unicast(sock_net(skb->sk), msg, NETLINK_CB(skb).portid);
1301
1302 err_free:
1303 nlmsg_free(msg);
1304 err_get:
1305 rdma_restrack_put(res);
1306 err:
1307 ib_device_put(device);
1308 return ret;
1309 }
1310
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
2 years, 3 months
Re: [PATCH v1 2/2] usb: phy: Add USB3 PHY support for Intel LGM SoC
by kernel test robot
Hi "Ramuthevar,Vadivel,
Thank you for the patch! Perhaps something to improve:
[auto build test WARNING on balbi-usb/testing/next]
[also build test WARNING on usb/usb-testing linus/master v5.7 next-20200608]
[cannot apply to linux/master]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see https://stackoverflow.com/a/37406982]
url: https://github.com/0day-ci/linux/commits/Ramuthevar-Vadivel-MuruganX/usb-...
base: https://git.kernel.org/pub/scm/linux/kernel/git/balbi/usb.git testing/next
config: x86_64-allyesconfig (attached as .config)
compiler: clang version 11.0.0 (https://github.com/llvm/llvm-project bc2b70982be8f5250cd0082a7190f8b417bd4dfe)
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
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=x86_64
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
All warnings (new ones prefixed by >>, old ones prefixed by <<):
>> drivers/usb/phy/phy-lgm-usb.c:79:13: warning: incompatible integer to pointer conversion passing 'int' to parameter of type 'const void *' [-Wint-conversion]
if (IS_ERR(ret)) {
^~~
include/linux/err.h:34:60: note: passing argument to parameter 'ptr' here
static inline bool __must_check IS_ERR(__force const void *ptr)
^
drivers/usb/phy/phy-lgm-usb.c:81:18: warning: incompatible integer to pointer conversion passing 'int' to parameter of type 'const void *' [-Wint-conversion]
return PTR_ERR(ret);
^~~
include/linux/err.h:29:61: note: passing argument to parameter 'ptr' here
static inline long __must_check PTR_ERR(__force const void *ptr)
^
drivers/usb/phy/phy-lgm-usb.c:136:30: warning: unused variable 'property' [-Wunused-variable]
union extcon_property_value property;
^
3 warnings generated.
vim +79 drivers/usb/phy/phy-lgm-usb.c
64
65 static int phy_init(struct usb_phy *phy)
66 {
67 struct tca_apb *ta = container_of(phy, struct tca_apb, phy);
68 void __iomem *ctrl1 = phy->io_priv + CTRL1_OFFSET;
69 int val, ret, i;
70
71 if (ta->phy_initialized)
72 return 0;
73
74 for (i = 0; i < ARRAY_SIZE(PHY_RESETS); i++)
75 reset_control_deassert(ta->resets[i]);
76
77 ret = readl_poll_timeout(ctrl1, val, val & SRAM_INIT_DONE,
78 10, 10 * 1000);
> 79 if (IS_ERR(ret)) {
80 dev_err(ta->phy.dev, "SRAM init failed, 0x%x\n", val);
81 return PTR_ERR(ret);
82 }
83
84 writel(readl(ctrl1) | SRAM_EXT_LD_DONE, ctrl1);
85
86 ta->phy_initialized = true;
87 if (!ta->phy.edev)
88 return phy->set_vbus(phy, true);
89
90 schedule_work(&ta->wk);
91
92 return 0;
93 }
94
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
2 years, 3 months
[linux-next:master 4070/14131] kernel/rcu/tasks.h:824:17: sparse: sparse: dubious: x & !y
by kbuild test robot
tree: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
head: e7b08814b16b80a0bf76eeca16317f8c2ed23b8c
commit: 7e3b70e0703b48e120c3f5e65498790341120fad [4070/14131] rcu-tasks: Handle the running-offline idle-task special case
:::::: branch date: 3 days ago
:::::: commit date: 5 weeks ago
config: i386-randconfig-s002-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 7e3b70e0703b48e120c3f5e65498790341120fad
# 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 <lkp(a)intel.com>
sparse warnings: (new ones prefixed by >>)
kernel/rcu/tasks.h:418:6: sparse: sparse: symbol 'rcu_tasks_postscan' was not declared. Should it be static?
kernel/rcu/tasks.h:715:20: sparse: sparse: symbol 'rcu_trace_lock_map' was not declared. Should it be static?
kernel/rcu/tasks.h:722:10: sparse: sparse: symbol 'trc_n_readers_need_end' was not declared. Should it be static?
kernel/rcu/tasks.h:723:1: sparse: sparse: symbol 'trc_wait' was not declared. Should it be static?
kernel/rcu/tasks.h:743:6: sparse: sparse: symbol 'rcu_read_unlock_trace_special' was not declared. Should it be static?
>> kernel/rcu/tasks.h:824:17: sparse: sparse: dubious: x & !y
kernel/rcu/tasks.h:1108:6: sparse: sparse: symbol 'synchronize_rcu_tasks_trace' was not declared. Should it be static?
kernel/rcu/tasks.h:1121:6: sparse: sparse: symbol 'rcu_barrier_tasks_trace' was not declared. Should it be static?
kernel/rcu/tasks.h:1153:6: sparse: sparse: symbol 'show_rcu_tasks_gp_kthreads' was not declared. Should it be static?
# https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commi...
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 7e3b70e0703b48e120c3f5e65498790341120fad
vim +824 kernel/rcu/tasks.h
d5f177d35c2442 Paul E. McKenney 2020-03-09 815
d5f177d35c2442 Paul E. McKenney 2020-03-09 816 /* Callback function for scheduler to check locked-down task. */
d5f177d35c2442 Paul E. McKenney 2020-03-09 817 static bool trc_inspect_reader(struct task_struct *t, void *arg)
d5f177d35c2442 Paul E. McKenney 2020-03-09 818 {
7d0c9c50c5a109 Paul E. McKenney 2020-03-19 819 int cpu = task_cpu(t);
7d0c9c50c5a109 Paul E. McKenney 2020-03-19 820 bool in_qs = false;
7e3b70e0703b48 Paul E. McKenney 2020-03-22 821 bool ofl = cpu_is_offline(cpu);
7d0c9c50c5a109 Paul E. McKenney 2020-03-19 822
7d0c9c50c5a109 Paul E. McKenney 2020-03-19 823 if (task_curr(t)) {
7e3b70e0703b48 Paul E. McKenney 2020-03-22 @824 WARN_ON_ONCE(ofl & !is_idle_task(t));
7e3b70e0703b48 Paul E. McKenney 2020-03-22 825
7d0c9c50c5a109 Paul E. McKenney 2020-03-19 826 // If no chance of heavyweight readers, do it the hard way.
7e3b70e0703b48 Paul E. McKenney 2020-03-22 827 if (!ofl && !IS_ENABLED(CONFIG_TASKS_TRACE_RCU_READ_MB))
7d0c9c50c5a109 Paul E. McKenney 2020-03-19 828 return false;
7d0c9c50c5a109 Paul E. McKenney 2020-03-19 829
7d0c9c50c5a109 Paul E. McKenney 2020-03-19 830 // If heavyweight readers are enabled on the remote task,
7d0c9c50c5a109 Paul E. McKenney 2020-03-19 831 // we can inspect its state despite its currently running.
7d0c9c50c5a109 Paul E. McKenney 2020-03-19 832 // However, we cannot safely change its state.
7e3b70e0703b48 Paul E. McKenney 2020-03-22 833 if (!ofl && // Check for "running" idle tasks on offline CPUs.
7e3b70e0703b48 Paul E. McKenney 2020-03-22 834 !rcu_dynticks_zero_in_eqs(cpu, &t->trc_reader_nesting))
7d0c9c50c5a109 Paul E. McKenney 2020-03-19 835 return false; // No quiescent state, do it the hard way.
7d0c9c50c5a109 Paul E. McKenney 2020-03-19 836 in_qs = true;
7d0c9c50c5a109 Paul E. McKenney 2020-03-19 837 } else {
7d0c9c50c5a109 Paul E. McKenney 2020-03-19 838 in_qs = likely(!t->trc_reader_nesting);
7d0c9c50c5a109 Paul E. McKenney 2020-03-19 839 }
d5f177d35c2442 Paul E. McKenney 2020-03-09 840
d5f177d35c2442 Paul E. McKenney 2020-03-09 841 // Mark as checked. Because this is called from the grace-period
d5f177d35c2442 Paul E. McKenney 2020-03-09 842 // kthread, also remove the task from the holdout list.
d5f177d35c2442 Paul E. McKenney 2020-03-09 843 t->trc_reader_checked = true;
d5f177d35c2442 Paul E. McKenney 2020-03-09 844 trc_del_holdout(t);
d5f177d35c2442 Paul E. McKenney 2020-03-09 845
7d0c9c50c5a109 Paul E. McKenney 2020-03-19 846 if (in_qs)
7d0c9c50c5a109 Paul E. McKenney 2020-03-19 847 return true; // Already in quiescent state, done!!!
7d0c9c50c5a109 Paul E. McKenney 2020-03-19 848
7d0c9c50c5a109 Paul E. McKenney 2020-03-19 849 // The task is in a read-side critical section, so set up its
7d0c9c50c5a109 Paul E. McKenney 2020-03-19 850 // state so that it will awaken the grace-period kthread upon exit
7d0c9c50c5a109 Paul E. McKenney 2020-03-19 851 // from that critical section.
d5f177d35c2442 Paul E. McKenney 2020-03-09 852 atomic_inc(&trc_n_readers_need_end); // One more to wait on.
276c410448dbca Paul E. McKenney 2020-03-17 853 WARN_ON_ONCE(t->trc_reader_special.b.need_qs);
276c410448dbca Paul E. McKenney 2020-03-17 854 WRITE_ONCE(t->trc_reader_special.b.need_qs, true);
d5f177d35c2442 Paul E. McKenney 2020-03-09 855 return true;
d5f177d35c2442 Paul E. McKenney 2020-03-09 856 }
d5f177d35c2442 Paul E. McKenney 2020-03-09 857
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
2 years, 3 months
[tglx-devel:rebase/entry 84/141] arch/x86/include/asm/idtentry.h:64:18: error: too few arguments to function 'idtentry_enter_cond_rcu'
by kernel test robot
tree: https://git.kernel.org/pub/scm/linux/kernel/git/tglx/devel.git rebase/entry
head: db67df5751abc4196115ff95a55138ec0672d789
commit: 92f9bd314d1e41d69203ad33198d391b083d8bab [84/141] x86/idtentry: Switch to conditional RCU handling
config: i386-tinyconfig (attached as .config)
compiler: gcc-9 (Debian 9.3.0-13) 9.3.0
reproduce (this is a W=1 build):
git checkout 92f9bd314d1e41d69203ad33198d391b083d8bab
# save the attached .config to linux build tree
make W=1 ARCH=i386
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
Note: the tglx-devel/rebase/entry HEAD db67df5751abc4196115ff95a55138ec0672d789 builds fine.
It only hurts bisectibility.
All error/warnings (new ones prefixed by >>, old ones prefixed by <<):
arch/x86/kernel/traps.c:87:5: warning: no previous prototype for 'is_valid_bugaddr' [-Wmissing-prototypes]
87 | int is_valid_bugaddr(unsigned long addr)
| ^~~~~~~~~~~~~~~~
In file included from arch/x86/include/asm/traps.h:9,
from arch/x86/kernel/traps.c:48:
arch/x86/kernel/traps.c: In function 'exc_divide_error':
>> arch/x86/include/asm/idtentry.h:64:18: error: too few arguments to function 'idtentry_enter_cond_rcu'
64 | bool rcu_exit = idtentry_enter_cond_rcu(regs); | ^~~~~~~~~~~~~~~~~~~~~~~
>> arch/x86/kernel/traps.c:223:1: note: in expansion of macro 'DEFINE_IDTENTRY'
223 | DEFINE_IDTENTRY(exc_divide_error)
| ^~~~~~~~~~~~~~~
arch/x86/include/asm/idtentry.h:13:6: note: declared here
13 | bool idtentry_enter_cond_rcu(struct pt_regs *regs, bool cond_rcu);
| ^~~~~~~~~~~~~~~~~~~~~~~
arch/x86/kernel/traps.c: In function 'exc_overflow':
>> arch/x86/include/asm/idtentry.h:64:18: error: too few arguments to function 'idtentry_enter_cond_rcu'
64 | bool rcu_exit = idtentry_enter_cond_rcu(regs); | ^~~~~~~~~~~~~~~~~~~~~~~
arch/x86/kernel/traps.c:229:1: note: in expansion of macro 'DEFINE_IDTENTRY'
229 | DEFINE_IDTENTRY(exc_overflow)
| ^~~~~~~~~~~~~~~
arch/x86/include/asm/idtentry.h:13:6: note: declared here
13 | bool idtentry_enter_cond_rcu(struct pt_regs *regs, bool cond_rcu);
| ^~~~~~~~~~~~~~~~~~~~~~~
arch/x86/kernel/traps.c: In function 'exc_invalid_op':
>> arch/x86/include/asm/idtentry.h:64:18: error: too few arguments to function 'idtentry_enter_cond_rcu'
64 | bool rcu_exit = idtentry_enter_cond_rcu(regs); | ^~~~~~~~~~~~~~~~~~~~~~~
arch/x86/kernel/traps.c:244:1: note: in expansion of macro 'DEFINE_IDTENTRY'
244 | DEFINE_IDTENTRY(exc_invalid_op)
| ^~~~~~~~~~~~~~~
arch/x86/include/asm/idtentry.h:13:6: note: declared here
13 | bool idtentry_enter_cond_rcu(struct pt_regs *regs, bool cond_rcu);
| ^~~~~~~~~~~~~~~~~~~~~~~
arch/x86/kernel/traps.c: In function 'exc_coproc_segment_overrun':
>> arch/x86/include/asm/idtentry.h:64:18: error: too few arguments to function 'idtentry_enter_cond_rcu'
64 | bool rcu_exit = idtentry_enter_cond_rcu(regs); | ^~~~~~~~~~~~~~~~~~~~~~~
arch/x86/kernel/traps.c:249:1: note: in expansion of macro 'DEFINE_IDTENTRY'
249 | DEFINE_IDTENTRY(exc_coproc_segment_overrun)
| ^~~~~~~~~~~~~~~
arch/x86/include/asm/idtentry.h:13:6: note: declared here
13 | bool idtentry_enter_cond_rcu(struct pt_regs *regs, bool cond_rcu);
| ^~~~~~~~~~~~~~~~~~~~~~~
arch/x86/kernel/traps.c: In function 'exc_invalid_tss':
arch/x86/include/asm/idtentry.h:111:18: error: too few arguments to function 'idtentry_enter_cond_rcu'
111 | bool rcu_exit = idtentry_enter_cond_rcu(regs); | ^~~~~~~~~~~~~~~~~~~~~~~
>> arch/x86/kernel/traps.c:255:1: note: in expansion of macro 'DEFINE_IDTENTRY_ERRORCODE'
255 | DEFINE_IDTENTRY_ERRORCODE(exc_invalid_tss)
| ^~~~~~~~~~~~~~~~~~~~~~~~~
arch/x86/include/asm/idtentry.h:13:6: note: declared here
13 | bool idtentry_enter_cond_rcu(struct pt_regs *regs, bool cond_rcu);
| ^~~~~~~~~~~~~~~~~~~~~~~
arch/x86/kernel/traps.c: In function 'exc_segment_not_present':
arch/x86/include/asm/idtentry.h:111:18: error: too few arguments to function 'idtentry_enter_cond_rcu'
111 | bool rcu_exit = idtentry_enter_cond_rcu(regs); | ^~~~~~~~~~~~~~~~~~~~~~~
arch/x86/kernel/traps.c:261:1: note: in expansion of macro 'DEFINE_IDTENTRY_ERRORCODE'
261 | DEFINE_IDTENTRY_ERRORCODE(exc_segment_not_present)
| ^~~~~~~~~~~~~~~~~~~~~~~~~
arch/x86/include/asm/idtentry.h:13:6: note: declared here
13 | bool idtentry_enter_cond_rcu(struct pt_regs *regs, bool cond_rcu);
| ^~~~~~~~~~~~~~~~~~~~~~~
arch/x86/kernel/traps.c: In function 'exc_stack_segment':
arch/x86/include/asm/idtentry.h:111:18: error: too few arguments to function 'idtentry_enter_cond_rcu'
111 | bool rcu_exit = idtentry_enter_cond_rcu(regs); | ^~~~~~~~~~~~~~~~~~~~~~~
arch/x86/kernel/traps.c:267:1: note: in expansion of macro 'DEFINE_IDTENTRY_ERRORCODE'
267 | DEFINE_IDTENTRY_ERRORCODE(exc_stack_segment)
| ^~~~~~~~~~~~~~~~~~~~~~~~~
arch/x86/include/asm/idtentry.h:13:6: note: declared here
13 | bool idtentry_enter_cond_rcu(struct pt_regs *regs, bool cond_rcu);
| ^~~~~~~~~~~~~~~~~~~~~~~
arch/x86/kernel/traps.c: In function 'exc_alignment_check':
arch/x86/include/asm/idtentry.h:111:18: error: too few arguments to function 'idtentry_enter_cond_rcu'
111 | bool rcu_exit = idtentry_enter_cond_rcu(regs); | ^~~~~~~~~~~~~~~~~~~~~~~
arch/x86/kernel/traps.c:273:1: note: in expansion of macro 'DEFINE_IDTENTRY_ERRORCODE'
273 | DEFINE_IDTENTRY_ERRORCODE(exc_alignment_check)
| ^~~~~~~~~~~~~~~~~~~~~~~~~
arch/x86/include/asm/idtentry.h:13:6: note: declared here
13 | bool idtentry_enter_cond_rcu(struct pt_regs *regs, bool cond_rcu);
| ^~~~~~~~~~~~~~~~~~~~~~~
arch/x86/kernel/traps.c: In function 'exc_bounds':
>> arch/x86/include/asm/idtentry.h:64:18: error: too few arguments to function 'idtentry_enter_cond_rcu'
64 | bool rcu_exit = idtentry_enter_cond_rcu(regs); | ^~~~~~~~~~~~~~~~~~~~~~~
arch/x86/kernel/traps.c:447:1: note: in expansion of macro 'DEFINE_IDTENTRY'
447 | DEFINE_IDTENTRY(exc_bounds)
| ^~~~~~~~~~~~~~~
arch/x86/include/asm/idtentry.h:13:6: note: declared here
13 | bool idtentry_enter_cond_rcu(struct pt_regs *regs, bool cond_rcu);
| ^~~~~~~~~~~~~~~~~~~~~~~
arch/x86/kernel/traps.c: In function 'exc_general_protection':
arch/x86/include/asm/idtentry.h:111:18: error: too few arguments to function 'idtentry_enter_cond_rcu'
111 | bool rcu_exit = idtentry_enter_cond_rcu(regs); | ^~~~~~~~~~~~~~~~~~~~~~~
arch/x86/kernel/traps.c:506:1: note: in expansion of macro 'DEFINE_IDTENTRY_ERRORCODE'
506 | DEFINE_IDTENTRY_ERRORCODE(exc_general_protection)
| ^~~~~~~~~~~~~~~~~~~~~~~~~
arch/x86/include/asm/idtentry.h:13:6: note: declared here
13 | bool idtentry_enter_cond_rcu(struct pt_regs *regs, bool cond_rcu);
| ^~~~~~~~~~~~~~~~~~~~~~~
arch/x86/kernel/traps.c: In function 'exc_debug':
>> arch/x86/include/asm/idtentry.h:64:18: error: too few arguments to function 'idtentry_enter_cond_rcu'
64 | bool rcu_exit = idtentry_enter_cond_rcu(regs); | ^~~~~~~~~~~~~~~~~~~~~~~
>> arch/x86/include/asm/idtentry.h:235:31: note: in expansion of macro 'DEFINE_IDTENTRY'
235 | # define DEFINE_IDTENTRY_IST DEFINE_IDTENTRY
| ^~~~~~~~~~~~~~~
>> arch/x86/include/asm/idtentry.h:275:32: note: in expansion of macro 'DEFINE_IDTENTRY_IST'
275 | #define DEFINE_IDTENTRY_DEBUG DEFINE_IDTENTRY_IST
| ^~~~~~~~~~~~~~~~~~~
>> arch/x86/kernel/traps.c:914:1: note: in expansion of macro 'DEFINE_IDTENTRY_DEBUG'
914 | DEFINE_IDTENTRY_DEBUG(exc_debug)
| ^~~~~~~~~~~~~~~~~~~~~
arch/x86/include/asm/idtentry.h:13:6: note: declared here
13 | bool idtentry_enter_cond_rcu(struct pt_regs *regs, bool cond_rcu);
| ^~~~~~~~~~~~~~~~~~~~~~~
arch/x86/kernel/traps.c: In function 'exc_coprocessor_error':
>> arch/x86/include/asm/idtentry.h:64:18: error: too few arguments to function 'idtentry_enter_cond_rcu'
64 | bool rcu_exit = idtentry_enter_cond_rcu(regs); | ^~~~~~~~~~~~~~~~~~~~~~~
arch/x86/kernel/traps.c:976:1: note: in expansion of macro 'DEFINE_IDTENTRY'
976 | DEFINE_IDTENTRY(exc_coprocessor_error)
| ^~~~~~~~~~~~~~~
arch/x86/include/asm/idtentry.h:13:6: note: declared here
13 | bool idtentry_enter_cond_rcu(struct pt_regs *regs, bool cond_rcu);
| ^~~~~~~~~~~~~~~~~~~~~~~
arch/x86/kernel/traps.c: In function 'exc_simd_coprocessor_error':
>> arch/x86/include/asm/idtentry.h:64:18: error: too few arguments to function 'idtentry_enter_cond_rcu'
64 | bool rcu_exit = idtentry_enter_cond_rcu(regs); | ^~~~~~~~~~~~~~~~~~~~~~~
arch/x86/kernel/traps.c:981:1: note: in expansion of macro 'DEFINE_IDTENTRY'
981 | DEFINE_IDTENTRY(exc_simd_coprocessor_error)
| ^~~~~~~~~~~~~~~
arch/x86/include/asm/idtentry.h:13:6: note: declared here
13 | bool idtentry_enter_cond_rcu(struct pt_regs *regs, bool cond_rcu);
| ^~~~~~~~~~~~~~~~~~~~~~~
arch/x86/kernel/traps.c: In function 'exc_spurious_interrupt_bug':
>> arch/x86/include/asm/idtentry.h:64:18: error: too few arguments to function 'idtentry_enter_cond_rcu'
64 | bool rcu_exit = idtentry_enter_cond_rcu(regs); | ^~~~~~~~~~~~~~~~~~~~~~~
arch/x86/kernel/traps.c:993:1: note: in expansion of macro 'DEFINE_IDTENTRY'
993 | DEFINE_IDTENTRY(exc_spurious_interrupt_bug)
| ^~~~~~~~~~~~~~~
arch/x86/include/asm/idtentry.h:13:6: note: declared here
13 | bool idtentry_enter_cond_rcu(struct pt_regs *regs, bool cond_rcu);
| ^~~~~~~~~~~~~~~~~~~~~~~
arch/x86/kernel/traps.c: In function 'exc_device_not_available':
>> arch/x86/include/asm/idtentry.h:64:18: error: too few arguments to function 'idtentry_enter_cond_rcu'
64 | bool rcu_exit = idtentry_enter_cond_rcu(regs); | ^~~~~~~~~~~~~~~~~~~~~~~
arch/x86/kernel/traps.c:1016:1: note: in expansion of macro 'DEFINE_IDTENTRY'
1016 | DEFINE_IDTENTRY(exc_device_not_available)
| ^~~~~~~~~~~~~~~
arch/x86/include/asm/idtentry.h:13:6: note: declared here
13 | bool idtentry_enter_cond_rcu(struct pt_regs *regs, bool cond_rcu);
| ^~~~~~~~~~~~~~~~~~~~~~~
arch/x86/kernel/traps.c: In function 'iret_error':
>> arch/x86/include/asm/idtentry.h:64:18: error: too few arguments to function 'idtentry_enter_cond_rcu'
64 | bool rcu_exit = idtentry_enter_cond_rcu(regs); | ^~~~~~~~~~~~~~~~~~~~~~~
arch/x86/include/asm/idtentry.h:76:28: note: in expansion of macro 'DEFINE_IDTENTRY'
76 | #define DEFINE_IDTENTRY_SW DEFINE_IDTENTRY
| ^~~~~~~~~~~~~~~
>> arch/x86/kernel/traps.c:1049:1: note: in expansion of macro 'DEFINE_IDTENTRY_SW'
1049 | DEFINE_IDTENTRY_SW(iret_error)
| ^~~~~~~~~~~~~~~~~~
arch/x86/include/asm/idtentry.h:13:6: note: declared here
13 | bool idtentry_enter_cond_rcu(struct pt_regs *regs, bool cond_rcu);
| ^~~~~~~~~~~~~~~~~~~~~~~
--
In file included from arch/x86/include/asm/traps.h:9,
from arch/x86/kernel/nmi.c:29:
arch/x86/kernel/nmi.c: In function 'exc_nmi':
>> arch/x86/include/asm/idtentry.h:64:18: error: too few arguments to function 'idtentry_enter_cond_rcu'
64 | bool rcu_exit = idtentry_enter_cond_rcu(regs); | ^~~~~~~~~~~~~~~~~~~~~~~
>> arch/x86/include/asm/idtentry.h:235:31: note: in expansion of macro 'DEFINE_IDTENTRY'
235 | # define DEFINE_IDTENTRY_IST DEFINE_IDTENTRY
| ^~~~~~~~~~~~~~~
arch/x86/include/asm/idtentry.h:272:30: note: in expansion of macro 'DEFINE_IDTENTRY_IST'
272 | #define DEFINE_IDTENTRY_NMI DEFINE_IDTENTRY_IST
| ^~~~~~~~~~~~~~~~~~~
>> arch/x86/kernel/nmi.c:509:1: note: in expansion of macro 'DEFINE_IDTENTRY_NMI'
509 | DEFINE_IDTENTRY_NMI(exc_nmi)
| ^~~~~~~~~~~~~~~~~~~
arch/x86/include/asm/idtentry.h:13:6: note: declared here
13 | bool idtentry_enter_cond_rcu(struct pt_regs *regs, bool cond_rcu);
| ^~~~~~~~~~~~~~~~~~~~~~~
vim +/idtentry_enter_cond_rcu +64 arch/x86/include/asm/idtentry.h
25
26 /**
27 * DECLARE_IDTENTRY - Declare functions for simple IDT entry points
28 * No error code pushed by hardware
29 * @vector: Vector number (ignored for C)
30 * @func: Function name of the entry point
31 *
32 * Declares three functions:
33 * - The ASM entry point: asm_##func
34 * - The XEN PV trap entry point: xen_##func (maybe unused)
35 * - The C handler called from the ASM entry point
36 *
37 * Note: This is the C variant of DECLARE_IDTENTRY(). As the name says it
38 * declares the entry points for usage in C code. There is an ASM variant
39 * as well which is used to emit the entry stubs in entry_32/64.S.
40 */
41 #define DECLARE_IDTENTRY(vector, func) \
42 asmlinkage void asm_##func(void); \
43 asmlinkage void xen_asm_##func(void); \
44 __visible void func(struct pt_regs *regs)
45
46 /**
47 * DEFINE_IDTENTRY - Emit code for simple IDT entry points
48 * @func: Function name of the entry point
49 *
50 * @func is called from ASM entry code with interrupts disabled.
51 *
52 * The macro is written so it acts as function definition. Append the
53 * body with a pair of curly brackets.
54 *
55 * idtentry_enter() contains common code which has to be invoked before
56 * arbitrary code in the body. idtentry_exit() contains common code
57 * which has to run before returning to the low level assembly code.
58 */
59 #define DEFINE_IDTENTRY(func) \
60 static __always_inline void __##func(struct pt_regs *regs); \
61 \
62 __visible noinstr void func(struct pt_regs *regs) \
63 { \
> 64 bool rcu_exit = idtentry_enter_cond_rcu(regs); \
65 \
66 instrumentation_begin(); \
67 __##func (regs); \
68 instrumentation_end(); \
69 idtentry_exit_cond_rcu(regs, rcu_exit); \
70 } \
71 \
72 static __always_inline void __##func(struct pt_regs *regs)
73
74 /* Special case for 32bit IRET 'trap' */
75 #define DECLARE_IDTENTRY_SW DECLARE_IDTENTRY
76 #define DEFINE_IDTENTRY_SW DEFINE_IDTENTRY
77
78 /**
79 * DECLARE_IDTENTRY_ERRORCODE - Declare functions for simple IDT entry points
80 * Error code pushed by hardware
81 * @vector: Vector number (ignored for C)
82 * @func: Function name of the entry point
83 *
84 * Declares three functions:
85 * - The ASM entry point: asm_##func
86 * - The XEN PV trap entry point: xen_##func (maybe unused)
87 * - The C handler called from the ASM entry point
88 *
89 * Same as DECLARE_IDTENTRY, but has an extra error_code argument for the
90 * C-handler.
91 */
92 #define DECLARE_IDTENTRY_ERRORCODE(vector, func) \
93 asmlinkage void asm_##func(void); \
94 asmlinkage void xen_asm_##func(void); \
95 __visible void func(struct pt_regs *regs, unsigned long error_code)
96
97 /**
98 * DEFINE_IDTENTRY_ERRORCODE - Emit code for simple IDT entry points
99 * Error code pushed by hardware
100 * @func: Function name of the entry point
101 *
102 * Same as DEFINE_IDTENTRY, but has an extra error_code argument
103 */
104 #define DEFINE_IDTENTRY_ERRORCODE(func) \
105 static __always_inline void __##func(struct pt_regs *regs, \
106 unsigned long error_code); \
107 \
108 __visible noinstr void func(struct pt_regs *regs, \
109 unsigned long error_code) \
110 { \
111 bool rcu_exit = idtentry_enter_cond_rcu(regs); \
112 \
113 instrumentation_begin(); \
114 __##func (regs, error_code); \
115 instrumentation_end(); \
116 idtentry_exit_cond_rcu(regs, rcu_exit); \
117 } \
118 \
119 static __always_inline void __##func(struct pt_regs *regs, \
120 unsigned long error_code)
121
122 /**
123 * DECLARE_IDTENTRY_RAW - Declare functions for raw IDT entry points
124 * No error code pushed by hardware
125 * @vector: Vector number (ignored for C)
126 * @func: Function name of the entry point
127 *
128 * Maps to DECLARE_IDTENTRY().
129 */
130 #define DECLARE_IDTENTRY_RAW(vector, func) \
131 DECLARE_IDTENTRY(vector, func)
132
133 /**
134 * DEFINE_IDTENTRY_RAW - Emit code for raw IDT entry points
135 * @func: Function name of the entry point
136 *
137 * @func is called from ASM entry code with interrupts disabled.
138 *
139 * The macro is written so it acts as function definition. Append the
140 * body with a pair of curly brackets.
141 *
142 * Contrary to DEFINE_IDTENTRY() this does not invoke the
143 * idtentry_enter/exit() helpers before and after the body invocation. This
144 * needs to be done in the body itself if applicable. Use if extra work
145 * is required before the enter/exit() helpers are invoked.
146 */
147 #define DEFINE_IDTENTRY_RAW(func) \
148 __visible noinstr void func(struct pt_regs *regs)
149
150 /**
151 * DECLARE_IDTENTRY_RAW_ERRORCODE - Declare functions for raw IDT entry points
152 * Error code pushed by hardware
153 * @vector: Vector number (ignored for C)
154 * @func: Function name of the entry point
155 *
156 * Maps to DECLARE_IDTENTRY_ERRORCODE()
157 */
158 #define DECLARE_IDTENTRY_RAW_ERRORCODE(vector, func) \
159 DECLARE_IDTENTRY_ERRORCODE(vector, func)
160
161 /**
162 * DEFINE_IDTENTRY_RAW_ERRORCODE - Emit code for raw IDT entry points
163 * @func: Function name of the entry point
164 *
165 * @func is called from ASM entry code with interrupts disabled.
166 *
167 * The macro is written so it acts as function definition. Append the
168 * body with a pair of curly brackets.
169 *
170 * Contrary to DEFINE_IDTENTRY_ERRORCODE() this does not invoke the
171 * idtentry_enter/exit() helpers before and after the body invocation. This
172 * needs to be done in the body itself if applicable. Use if extra work
173 * is required before the enter/exit() helpers are invoked.
174 */
175 #define DEFINE_IDTENTRY_RAW_ERRORCODE(func) \
176 __visible noinstr void func(struct pt_regs *regs, unsigned long error_code)
177
178
179 #ifdef CONFIG_X86_64
180 /**
181 * DECLARE_IDTENTRY_IST - Declare functions for IST handling IDT entry points
182 * @vector: Vector number (ignored for C)
183 * @func: Function name of the entry point
184 *
185 * Maps to DECLARE_IDTENTRY_RAW, but declares also the NOIST C handler
186 * which is called from the ASM entry point on user mode entry
187 */
188 #define DECLARE_IDTENTRY_IST(vector, func) \
189 DECLARE_IDTENTRY_RAW(vector, func); \
190 __visible void noist_##func(struct pt_regs *regs)
191
192 /**
193 * DEFINE_IDTENTRY_IST - Emit code for IST entry points
194 * @func: Function name of the entry point
195 *
196 * Maps to DEFINE_IDTENTRY_RAW
197 */
198 #define DEFINE_IDTENTRY_IST(func) \
199 DEFINE_IDTENTRY_RAW(func)
200
201 /**
202 * DEFINE_IDTENTRY_NOIST - Emit code for NOIST entry points which
203 * belong to a IST entry point (MCE, DB)
204 * @func: Function name of the entry point. Must be the same as
205 * the function name of the corresponding IST variant
206 *
207 * Maps to DEFINE_IDTENTRY_RAW().
208 */
209 #define DEFINE_IDTENTRY_NOIST(func) \
210 DEFINE_IDTENTRY_RAW(noist_##func)
211
212 /**
213 * DECLARE_IDTENTRY_DF - Declare functions for double fault
214 * @vector: Vector number (ignored for C)
215 * @func: Function name of the entry point
216 *
217 * Maps to DECLARE_IDTENTRY_RAW_ERRORCODE
218 */
219 #define DECLARE_IDTENTRY_DF(vector, func) \
220 DECLARE_IDTENTRY_RAW_ERRORCODE(vector, func)
221
222 /**
223 * DEFINE_IDTENTRY_DF - Emit code for double fault
224 * @func: Function name of the entry point
225 *
226 * Maps to DEFINE_IDTENTRY_RAW_ERRORCODE
227 */
228 #define DEFINE_IDTENTRY_DF(func) \
229 DEFINE_IDTENTRY_RAW_ERRORCODE(func)
230
231 #else /* CONFIG_X86_64 */
232
233 /* Maps to a regular IDTENTRY on 32bit for now */
234 # define DECLARE_IDTENTRY_IST DECLARE_IDTENTRY
> 235 # define DEFINE_IDTENTRY_IST DEFINE_IDTENTRY
236
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
2 years, 3 months
[kbuild] [linux-review:UPDATE-20200609-013614/Andrew-Sy-
by kernel test robot
Kim/netfilter-ipvs-expire-no-destination-UDP-connections-when-
expire_nodest_conn-1/20200515-093828 1/1]
net/netfilter/ipvs/ip_vs_conn.c:1371:6: sparse: sparse: context imbalance in
'ip_vs_expire_n...
tree: https://github.com/0day-ci/linux/commits/UPDATE-20200609-
013614/Andrew-Sy-Kim/netfilter-ipvs-expire-no-destination-UDP-connections-
when-expire_nodest_conn-1/20200515-093828
head: f0365de6e00edf0b24c916b9e7ced5e468b101ce
commit: f0365de6e00edf0b24c916b9e7ced5e468b101ce [1/1] netfilter/ipvs:
queue delayed work to expire no destination connections if
expire_nodest_conn=1
:::::: branch date: 5 hours ago
:::::: commit date: 5 hours ago
config: i386-randconfig-s002-20200608 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-13) 9.3.0
reproduce:
# apt-get install sparse
# sparse version: v0.6.1-247-gcadbd124-dirty
git checkout f0365de6e00edf0b24c916b9e7ced5e468b101ce
# 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: kernel test robot <lkp(a)intel.com>
sparse warnings: (new ones prefixed by >>)
>> net/netfilter/ipvs/ip_vs_conn.c:1371:6: sparse: sparse: context
>> imbalance in 'ip_vs_expire_nodest_conn_flush' - wrong count at exit
# https://github.com/0day-
ci/linux/commit/f0365de6e00edf0b24c916b9e7ced5e468b101ce
git remote add linux-review https://github.com/0day-ci/linux git remote update
linux-review git checkout f0365de6e00edf0b24c916b9e7ced5e468b101ce
vim +/ip_vs_expire_nodest_conn_flush +1371 net/netfilter/ipvs/ip_vs_conn.c
f0365de6e00edf0 Andrew Sy Kim 2020-06-08 1369
f0365de6e00edf0 Andrew Sy Kim 2020-06-08 1370 #ifdef CONFIG_SYSCTL
f0365de6e00edf0 Andrew Sy Kim 2020-06-08 @1371 void
ip_vs_expire_nodest_conn_flush(struct netns_ipvs *ipvs)
f0365de6e00edf0 Andrew Sy Kim 2020-06-08 1372 {
f0365de6e00edf0 Andrew Sy Kim 2020-06-08 1373 int idx;
f0365de6e00edf0 Andrew Sy Kim 2020-06-08 1374 struct ip_vs_conn *cp,
*cp_c;
f0365de6e00edf0 Andrew Sy Kim 2020-06-08 1375 struct ip_vs_dest *dest;
f0365de6e00edf0 Andrew Sy Kim 2020-06-08 1376
f0365de6e00edf0 Andrew Sy Kim 2020-06-08 1377 rcu_read_lock();
f0365de6e00edf0 Andrew Sy Kim 2020-06-08 1378 for (idx = 0; idx <
ip_vs_conn_tab_size; idx++) {
f0365de6e00edf0 Andrew Sy Kim 2020-06-08 1379
hlist_for_each_entry_rcu(cp, &ip_vs_conn_tab[idx], c_list) {
f0365de6e00edf0 Andrew Sy Kim 2020-06-08 1380 if (cp-
>ipvs != ipvs)
f0365de6e00edf0 Andrew Sy Kim 2020-06-08 1381
continue;
f0365de6e00edf0 Andrew Sy Kim 2020-06-08 1382
f0365de6e00edf0 Andrew Sy Kim 2020-06-08 1383 dest =
cp->dest;
f0365de6e00edf0 Andrew Sy Kim 2020-06-08 1384 if (!dest
|| (dest->flags & IP_VS_DEST_F_AVAILABLE))
f0365de6e00edf0 Andrew Sy Kim 2020-06-08 1385
continue;
f0365de6e00edf0 Andrew Sy Kim 2020-06-08 1386
f0365de6e00edf0 Andrew Sy Kim 2020-06-08 1387 /* As
timers are expired in LIFO order, restart
f0365de6e00edf0 Andrew Sy Kim 2020-06-08 1388 * the
timer of controlling connection first, so
f0365de6e00edf0 Andrew Sy Kim 2020-06-08 1389 * that
it is expired after us.
f0365de6e00edf0 Andrew Sy Kim 2020-06-08 1390 */
f0365de6e00edf0 Andrew Sy Kim 2020-06-08 1391 cp_c =
cp->control;
f0365de6e00edf0 Andrew Sy Kim 2020-06-08 1392 /* cp-
>control is valid only with reference to cp */
f0365de6e00edf0 Andrew Sy Kim 2020-06-08 1393 if (cp_c
&& __ip_vs_conn_get(cp)) {
f0365de6e00edf0 Andrew Sy Kim 2020-06-08 1394
IP_VS_DBG(4, "del controlling connection\n");
f0365de6e00edf0 Andrew Sy Kim 2020-06-08 1395
ip_vs_conn_expire_now(cp_c);
f0365de6e00edf0 Andrew Sy Kim 2020-06-08 1396
__ip_vs_conn_put(cp);
f0365de6e00edf0 Andrew Sy Kim 2020-06-08 1397 }
f0365de6e00edf0 Andrew Sy Kim 2020-06-08 1398
f0365de6e00edf0 Andrew Sy Kim 2020-06-08 1399
IP_VS_DBG(4, "del connection\n");
f0365de6e00edf0 Andrew Sy Kim 2020-06-08 1400
ip_vs_conn_expire_now(cp);
f0365de6e00edf0 Andrew Sy Kim 2020-06-08 1401 }
f0365de6e00edf0 Andrew Sy Kim 2020-06-08 1402
cond_resched_rcu();
f0365de6e00edf0 Andrew Sy Kim 2020-06-08 1403
f0365de6e00edf0 Andrew Sy Kim 2020-06-08 1404 /* netns clean
up started, aborted delayed work */
f0365de6e00edf0 Andrew Sy Kim 2020-06-08 1405 if (!ipvs-
>enable)
f0365de6e00edf0 Andrew Sy Kim 2020-06-08 1406 return;
f0365de6e00edf0 Andrew Sy Kim 2020-06-08 1407 }
f0365de6e00edf0 Andrew Sy Kim 2020-06-08 1408 rcu_read_unlock();
f0365de6e00edf0 Andrew Sy Kim 2020-06-08 1409 }
f0365de6e00edf0 Andrew Sy Kim 2020-06-08 1410 #endif
f0365de6e00edf0 Andrew Sy Kim 2020-06-08 1411
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
2 years, 3 months
[dhowells-fs:fscache-iter 22/62] include/linux/fscache.h:80:30: sparse: sparse: don't know how to apply mode to unsigned int enum fscache_cookie_stage
by kbuild test robot
tree: https://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs.git fscache-iter
head: b4a9eadc021941103fd0c925e7e7b38516ffaf39
commit: 5db57596b0d3e5e78f7202dd50a58cc154f66b7c [22/62] fscache: Replace the object management state machine
:::::: branch date: 6 days ago
:::::: commit date: 6 days ago
config: x86_64-randconfig-s022-20200602 (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 5db57596b0d3e5e78f7202dd50a58cc154f66b7c
# save the attached .config to linux build tree
make W=1 C=1 ARCH=x86_64 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__'
If you fix the issue, kindly add following tag as appropriate
Reported-by: kbuild test robot <lkp(a)intel.com>
sparse warnings: (new ones prefixed by >>)
>> include/linux/fscache.h:80:30: sparse: sparse: don't know how to apply mode to unsigned int enum fscache_cookie_stage
# https://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs.git/com...
git remote add dhowells-fs https://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs.git
git remote update dhowells-fs
git checkout 5db57596b0d3e5e78f7202dd50a58cc154f66b7c
vim +80 include/linux/fscache.h
2d6fff63703739 David Howells 2009-04-03 68
5db57596b0d3e5 David Howells 2020-02-06 69 /*
5db57596b0d3e5 David Howells 2020-02-06 70 * Data object state.
5db57596b0d3e5 David Howells 2020-02-06 71 */
5db57596b0d3e5 David Howells 2020-02-06 72 enum fscache_cookie_stage {
5db57596b0d3e5 David Howells 2020-02-06 73 FSCACHE_COOKIE_STAGE_QUIESCENT, /* The cookie is uncached */
5db57596b0d3e5 David Howells 2020-02-06 74 FSCACHE_COOKIE_STAGE_INITIALISING, /* The in-memory structs are being inited */
5db57596b0d3e5 David Howells 2020-02-06 75 FSCACHE_COOKIE_STAGE_LOOKING_UP, /* The cache object is being looked up */
5db57596b0d3e5 David Howells 2020-02-06 76 FSCACHE_COOKIE_STAGE_NO_DATA_YET, /* The cache has no data, read to network */
5db57596b0d3e5 David Howells 2020-02-06 77 FSCACHE_COOKIE_STAGE_ACTIVE, /* The cache is active, readable and writable */
5db57596b0d3e5 David Howells 2020-02-06 78 FSCACHE_COOKIE_STAGE_INVALIDATING, /* The cache is being invalidated */
5db57596b0d3e5 David Howells 2020-02-06 79 FSCACHE_COOKIE_STAGE_DEAD, /* The cache object is dead */
5db57596b0d3e5 David Howells 2020-02-06 @80 } __attribute__((mode(byte)));
5db57596b0d3e5 David Howells 2020-02-06 81
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
2 years, 3 months