Re: [PATCH v4 3/9] ASoC: codecs: wcd938x: add basic driver
by kernel test robot
Hi Srinivas,
I love your patch! Perhaps something to improve:
[auto build test WARNING on asoc/for-next]
[also build test WARNING on robh/for-next sound/for-next v5.12-rc7 next-20210414]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]
url: https://github.com/0day-ci/linux/commits/Srinivas-Kandagatla/ASoC-codecs-...
base: https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git for-next
config: nios2-randconfig-m031-20210414 (attached as .config)
compiler: nios2-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>
smatch warnings:
sound/soc/codecs/wcd938x.c:1737 wcd938x_add_slave_components() warn: inconsistent indenting
vim +1737 sound/soc/codecs/wcd938x.c
1715
1716 static int wcd938x_add_slave_components(struct wcd938x_priv *wcd938x,
1717 struct device *dev,
1718 struct component_match **matchptr)
1719 {
1720 struct device_node *np;
1721
1722 np = dev->of_node;
1723
1724 wcd938x->rxnode = of_parse_phandle(np, "qcom,rx-device", 0);
1725 if (!wcd938x->rxnode) {
1726 dev_err(dev, "%s: Rx-device node not defined\n", __func__);
1727 return -ENODEV;
1728 }
1729
1730 of_node_get(wcd938x->rxnode);
1731 component_match_add_release(dev, matchptr, wcd938x_release_of,
1732 wcd938x_compare_of, wcd938x->rxnode);
1733
1734 wcd938x->txnode = of_parse_phandle(np, "qcom,tx-device", 0);
1735 if (!wcd938x->txnode) {
1736 dev_err(dev, "%s: Tx-device node not defined\n", __func__);
> 1737 return -ENODEV;
1738 }
1739 of_node_get(wcd938x->txnode);
1740 component_match_add_release(dev, matchptr, wcd938x_release_of,
1741 wcd938x_compare_of, wcd938x->txnode);
1742 return 0;
1743 }
1744
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
1 year, 5 months
[chrome-os:chromeos-5.10 6618/7370] drivers/gpu/drm/evdi/evdi_gem.c:252:18: error: implicit declaration of function 'vmap'; did you mean 'kmap'?
by kernel test robot
tree: https://chromium.googlesource.com/chromiumos/third_party/kernel chromeos-5.10
head: 855263bf4aea5d744a18fc47c36fce003a497090
commit: 5d42c7b3d93d6ce4f7cfbfc0f0d6ea2c2445406a [6618/7370] CHROMIUM: Import latest evdi driver
config: mips-allyesconfig (attached as .config)
compiler: mips-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 remote add chrome-os https://chromium.googlesource.com/chromiumos/third_party/kernel
git fetch --no-tags chrome-os chromeos-5.10
git checkout 5d42c7b3d93d6ce4f7cfbfc0f0d6ea2c2445406a
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross W=1 ARCH=mips
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
All error/warnings (new ones prefixed by >>):
cc1: warning: include/drm: No such file or directory [-Wmissing-include-dirs]
drivers/gpu/drm/evdi/evdi_gem.c: In function 'evdi_gem_vmap':
drivers/gpu/drm/evdi/evdi_gem.c:241:19: error: too few arguments to function 'dma_buf_vmap'
241 | obj->vmapping = dma_buf_vmap(obj->base.import_attach->dmabuf);
| ^~~~~~~~~~~~
In file included from drivers/gpu/drm/evdi/evdi_gem.c:18:
include/linux/dma-buf.h:507:5: note: declared here
507 | int dma_buf_vmap(struct dma_buf *dmabuf, struct dma_buf_map *map);
| ^~~~~~~~~~~~
>> drivers/gpu/drm/evdi/evdi_gem.c:252:18: error: implicit declaration of function 'vmap'; did you mean 'kmap'? [-Werror=implicit-function-declaration]
252 | obj->vmapping = vmap(obj->pages, page_count, 0, PAGE_KERNEL);
| ^~~~
| kmap
>> drivers/gpu/drm/evdi/evdi_gem.c:252:16: warning: assignment to 'void *' from 'int' makes pointer from integer without a cast [-Wint-conversion]
252 | obj->vmapping = vmap(obj->pages, page_count, 0, PAGE_KERNEL);
| ^
drivers/gpu/drm/evdi/evdi_gem.c: In function 'evdi_gem_vunmap':
>> drivers/gpu/drm/evdi/evdi_gem.c:273:3: error: implicit declaration of function 'vunmap'; did you mean 'kunmap'? [-Werror=implicit-function-declaration]
273 | vunmap(obj->vmapping);
| ^~~~~~
| kunmap
cc1: some warnings being treated as errors
vim +252 drivers/gpu/drm/evdi/evdi_gem.c
3e21cedd503fab Aleksander Miera 2018-03-15 226
3e21cedd503fab Aleksander Miera 2018-03-15 227 int evdi_gem_vmap(struct evdi_gem_object *obj)
3e21cedd503fab Aleksander Miera 2018-03-15 228 {
3e21cedd503fab Aleksander Miera 2018-03-15 229 int page_count = obj->base.size / PAGE_SIZE;
3e21cedd503fab Aleksander Miera 2018-03-15 230 int ret;
3e21cedd503fab Aleksander Miera 2018-03-15 231
3e21cedd503fab Aleksander Miera 2018-03-15 232 if (obj->base.import_attach) {
5d42c7b3d93d6c Sean Paul 2021-04-09 233 #if KERNEL_VERSION(5, 11, 0) <= LINUX_VERSION_CODE
5d42c7b3d93d6c Sean Paul 2021-04-09 234 struct dma_buf_map map;
5d42c7b3d93d6c Sean Paul 2021-04-09 235
5d42c7b3d93d6c Sean Paul 2021-04-09 236 ret = dma_buf_vmap(obj->base.import_attach->dmabuf, &map);
5d42c7b3d93d6c Sean Paul 2021-04-09 237 if (ret)
5d42c7b3d93d6c Sean Paul 2021-04-09 238 return -ENOMEM;
5d42c7b3d93d6c Sean Paul 2021-04-09 239 obj->vmapping = map.vaddr;
5d42c7b3d93d6c Sean Paul 2021-04-09 240 #else
3e21cedd503fab Aleksander Miera 2018-03-15 @241 obj->vmapping = dma_buf_vmap(obj->base.import_attach->dmabuf);
3e21cedd503fab Aleksander Miera 2018-03-15 242 if (!obj->vmapping)
3e21cedd503fab Aleksander Miera 2018-03-15 243 return -ENOMEM;
5d42c7b3d93d6c Sean Paul 2021-04-09 244 #endif
3e21cedd503fab Aleksander Miera 2018-03-15 245 return 0;
3e21cedd503fab Aleksander Miera 2018-03-15 246 }
3e21cedd503fab Aleksander Miera 2018-03-15 247
67442e0531eb83 Guenter Roeck 2020-11-04 248 ret = evdi_gem_get_pages(obj, GFP_KERNEL);
3e21cedd503fab Aleksander Miera 2018-03-15 249 if (ret)
3e21cedd503fab Aleksander Miera 2018-03-15 250 return ret;
3e21cedd503fab Aleksander Miera 2018-03-15 251
3e21cedd503fab Aleksander Miera 2018-03-15 @252 obj->vmapping = vmap(obj->pages, page_count, 0, PAGE_KERNEL);
3e21cedd503fab Aleksander Miera 2018-03-15 253 if (!obj->vmapping)
3e21cedd503fab Aleksander Miera 2018-03-15 254 return -ENOMEM;
3e21cedd503fab Aleksander Miera 2018-03-15 255 return 0;
3e21cedd503fab Aleksander Miera 2018-03-15 256 }
3e21cedd503fab Aleksander Miera 2018-03-15 257
3e21cedd503fab Aleksander Miera 2018-03-15 258 void evdi_gem_vunmap(struct evdi_gem_object *obj)
3e21cedd503fab Aleksander Miera 2018-03-15 259 {
3e21cedd503fab Aleksander Miera 2018-03-15 260 if (obj->base.import_attach) {
5d42c7b3d93d6c Sean Paul 2021-04-09 261 #if KERNEL_VERSION(5, 11, 0) <= LINUX_VERSION_CODE
5d42c7b3d93d6c Sean Paul 2021-04-09 262 struct dma_buf_map map = DMA_BUF_MAP_INIT_VADDR(obj->vmapping);
5d42c7b3d93d6c Sean Paul 2021-04-09 263
5d42c7b3d93d6c Sean Paul 2021-04-09 264 dma_buf_vunmap(obj->base.import_attach->dmabuf, &map);
5d42c7b3d93d6c Sean Paul 2021-04-09 265 #else
3e21cedd503fab Aleksander Miera 2018-03-15 266 dma_buf_vunmap(obj->base.import_attach->dmabuf, obj->vmapping);
5d42c7b3d93d6c Sean Paul 2021-04-09 267 #endif
3e21cedd503fab Aleksander Miera 2018-03-15 268 obj->vmapping = NULL;
3e21cedd503fab Aleksander Miera 2018-03-15 269 return;
3e21cedd503fab Aleksander Miera 2018-03-15 270 }
3e21cedd503fab Aleksander Miera 2018-03-15 271
3e21cedd503fab Aleksander Miera 2018-03-15 272 if (obj->vmapping) {
3e21cedd503fab Aleksander Miera 2018-03-15 @273 vunmap(obj->vmapping);
3e21cedd503fab Aleksander Miera 2018-03-15 274 obj->vmapping = NULL;
3e21cedd503fab Aleksander Miera 2018-03-15 275 }
3e21cedd503fab Aleksander Miera 2018-03-15 276
3e21cedd503fab Aleksander Miera 2018-03-15 277 evdi_gem_put_pages(obj);
3e21cedd503fab Aleksander Miera 2018-03-15 278 }
3e21cedd503fab Aleksander Miera 2018-03-15 279
:::::: The code at line 252 was first introduced by commit
:::::: 3e21cedd503fabd195cf407652bf87fd83e202ac drm/evdi: Add atomic evdi drm module
:::::: TO: Aleksander Miera <aleksander.miera(a)displaylink.com>
:::::: CC: Guenter Roeck <groeck(a)chromium.org>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
1 year, 5 months
Re: [PATCH v2 net-next 9/9] net: korina: Make driver COMPILE_TESTable
by kernel test robot
Hi Thomas,
I love your patch! Yet something to improve:
[auto build test ERROR on net-next/master]
url: https://github.com/0day-ci/linux/commits/Thomas-Bogendoerfer/net-Korina-i...
base: https://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git 5871d0c6b8ea805916c3135d0c53b095315bc674
config: nios2-allyesconfig (attached as .config)
compiler: nios2-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
# https://github.com/0day-ci/linux/commit/a7d955bacb53b068d30f7527c6bafaf4c...
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Thomas-Bogendoerfer/net-Korina-improvements/20210414-233326
git checkout a7d955bacb53b068d30f7527c6bafaf4ca2419e7
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross W=1 ARCH=nios2
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 >>):
drivers/net/ethernet/korina.c: In function 'korina_probe':
>> drivers/net/ethernet/korina.c:1303:14: error: too few arguments to function 'of_get_mac_address'
1303 | mac_addr = of_get_mac_address(pdev->dev.of_node);
| ^~~~~~~~~~~~~~~~~~
In file included from drivers/net/ethernet/korina.c:46:
include/linux/of_net.h:16:12: note: declared here
16 | extern int of_get_mac_address(struct device_node *np, u8 *mac);
| ^~~~~~~~~~~~~~~~~~
vim +/of_get_mac_address +1303 drivers/net/ethernet/korina.c
52b031ff3987a0 drivers/net/korina.c Alexander Beregalov 2009-04-15 1283
ef11291bcd5f96 drivers/net/korina.c Florian Fainelli 2008-03-19 1284 static int korina_probe(struct platform_device *pdev)
ef11291bcd5f96 drivers/net/korina.c Florian Fainelli 2008-03-19 1285 {
a53164fb8ec50c drivers/net/ethernet/korina.c Thomas Bogendoerfer 2021-04-14 1286 const u8 *mac_addr = dev_get_platdata(&pdev->dev);
ef11291bcd5f96 drivers/net/korina.c Florian Fainelli 2008-03-19 1287 struct korina_private *lp;
ef11291bcd5f96 drivers/net/korina.c Florian Fainelli 2008-03-19 1288 struct net_device *dev;
0bc4efb1d82bd4 drivers/net/ethernet/korina.c Thomas Bogendoerfer 2021-04-14 1289 struct clk *clk;
1857bf0ef3562f drivers/net/ethernet/korina.c Thomas Bogendoerfer 2021-04-14 1290 void __iomem *p;
e3152ab901bcec drivers/net/korina.c Francois Romieu 2008-04-20 1291 int rc;
ef11291bcd5f96 drivers/net/korina.c Florian Fainelli 2008-03-19 1292
1857bf0ef3562f drivers/net/ethernet/korina.c Thomas Bogendoerfer 2021-04-14 1293 dev = devm_alloc_etherdev(&pdev->dev, sizeof(struct korina_private));
41de8d4cff21a2 drivers/net/ethernet/korina.c Joe Perches 2012-01-29 1294 if (!dev)
ef11291bcd5f96 drivers/net/korina.c Florian Fainelli 2008-03-19 1295 return -ENOMEM;
41de8d4cff21a2 drivers/net/ethernet/korina.c Joe Perches 2012-01-29 1296
ef11291bcd5f96 drivers/net/korina.c Florian Fainelli 2008-03-19 1297 SET_NETDEV_DEV(dev, &pdev->dev);
ef11291bcd5f96 drivers/net/korina.c Florian Fainelli 2008-03-19 1298 lp = netdev_priv(dev);
ef11291bcd5f96 drivers/net/korina.c Florian Fainelli 2008-03-19 1299
a53164fb8ec50c drivers/net/ethernet/korina.c Thomas Bogendoerfer 2021-04-14 1300 if (mac_addr) {
a53164fb8ec50c drivers/net/ethernet/korina.c Thomas Bogendoerfer 2021-04-14 1301 ether_addr_copy(dev->dev_addr, mac_addr);
a53164fb8ec50c drivers/net/ethernet/korina.c Thomas Bogendoerfer 2021-04-14 1302 } else {
a53164fb8ec50c drivers/net/ethernet/korina.c Thomas Bogendoerfer 2021-04-14 @1303 mac_addr = of_get_mac_address(pdev->dev.of_node);
a53164fb8ec50c drivers/net/ethernet/korina.c Thomas Bogendoerfer 2021-04-14 1304 if (!IS_ERR(mac_addr))
a53164fb8ec50c drivers/net/ethernet/korina.c Thomas Bogendoerfer 2021-04-14 1305 ether_addr_copy(dev->dev_addr, mac_addr);
a53164fb8ec50c drivers/net/ethernet/korina.c Thomas Bogendoerfer 2021-04-14 1306 else
a53164fb8ec50c drivers/net/ethernet/korina.c Thomas Bogendoerfer 2021-04-14 1307 eth_hw_addr_random(dev);
a53164fb8ec50c drivers/net/ethernet/korina.c Thomas Bogendoerfer 2021-04-14 1308 }
ef11291bcd5f96 drivers/net/korina.c Florian Fainelli 2008-03-19 1309
0bc4efb1d82bd4 drivers/net/ethernet/korina.c Thomas Bogendoerfer 2021-04-14 1310 clk = devm_clk_get(&pdev->dev, NULL);
0bc4efb1d82bd4 drivers/net/ethernet/korina.c Thomas Bogendoerfer 2021-04-14 1311 if (!IS_ERR(clk)) {
0bc4efb1d82bd4 drivers/net/ethernet/korina.c Thomas Bogendoerfer 2021-04-14 1312 clk_prepare_enable(clk);
0bc4efb1d82bd4 drivers/net/ethernet/korina.c Thomas Bogendoerfer 2021-04-14 1313 lp->mii_clock_freq = clk_get_rate(clk);
0bc4efb1d82bd4 drivers/net/ethernet/korina.c Thomas Bogendoerfer 2021-04-14 1314 } else {
0bc4efb1d82bd4 drivers/net/ethernet/korina.c Thomas Bogendoerfer 2021-04-14 1315 lp->mii_clock_freq = 200000000; /* max possible input clk */
0bc4efb1d82bd4 drivers/net/ethernet/korina.c Thomas Bogendoerfer 2021-04-14 1316 }
0bc4efb1d82bd4 drivers/net/ethernet/korina.c Thomas Bogendoerfer 2021-04-14 1317
ef11291bcd5f96 drivers/net/korina.c Florian Fainelli 2008-03-19 1318 lp->rx_irq = platform_get_irq_byname(pdev, "korina_rx");
ef11291bcd5f96 drivers/net/korina.c Florian Fainelli 2008-03-19 1319 lp->tx_irq = platform_get_irq_byname(pdev, "korina_tx");
ef11291bcd5f96 drivers/net/korina.c Florian Fainelli 2008-03-19 1320
1857bf0ef3562f drivers/net/ethernet/korina.c Thomas Bogendoerfer 2021-04-14 1321 p = devm_platform_ioremap_resource_byname(pdev, "korina_regs");
1857bf0ef3562f drivers/net/ethernet/korina.c Thomas Bogendoerfer 2021-04-14 1322 if (!p) {
f16aea4d201018 drivers/net/korina.c Phil Sutter 2009-08-12 1323 printk(KERN_ERR DRV_NAME ": cannot remap registers\n");
1857bf0ef3562f drivers/net/ethernet/korina.c Thomas Bogendoerfer 2021-04-14 1324 return -ENOMEM;
ef11291bcd5f96 drivers/net/korina.c Florian Fainelli 2008-03-19 1325 }
1857bf0ef3562f drivers/net/ethernet/korina.c Thomas Bogendoerfer 2021-04-14 1326 lp->eth_regs = p;
ef11291bcd5f96 drivers/net/korina.c Florian Fainelli 2008-03-19 1327
1857bf0ef3562f drivers/net/ethernet/korina.c Thomas Bogendoerfer 2021-04-14 1328 p = devm_platform_ioremap_resource_byname(pdev, "korina_dma_rx");
1857bf0ef3562f drivers/net/ethernet/korina.c Thomas Bogendoerfer 2021-04-14 1329 if (!p) {
f16aea4d201018 drivers/net/korina.c Phil Sutter 2009-08-12 1330 printk(KERN_ERR DRV_NAME ": cannot remap Rx DMA registers\n");
1857bf0ef3562f drivers/net/ethernet/korina.c Thomas Bogendoerfer 2021-04-14 1331 return -ENOMEM;
ef11291bcd5f96 drivers/net/korina.c Florian Fainelli 2008-03-19 1332 }
1857bf0ef3562f drivers/net/ethernet/korina.c Thomas Bogendoerfer 2021-04-14 1333 lp->rx_dma_regs = p;
ef11291bcd5f96 drivers/net/korina.c Florian Fainelli 2008-03-19 1334
1857bf0ef3562f drivers/net/ethernet/korina.c Thomas Bogendoerfer 2021-04-14 1335 p = devm_platform_ioremap_resource_byname(pdev, "korina_dma_tx");
1857bf0ef3562f drivers/net/ethernet/korina.c Thomas Bogendoerfer 2021-04-14 1336 if (!p) {
f16aea4d201018 drivers/net/korina.c Phil Sutter 2009-08-12 1337 printk(KERN_ERR DRV_NAME ": cannot remap Tx DMA registers\n");
1857bf0ef3562f drivers/net/ethernet/korina.c Thomas Bogendoerfer 2021-04-14 1338 return -ENOMEM;
ef11291bcd5f96 drivers/net/korina.c Florian Fainelli 2008-03-19 1339 }
1857bf0ef3562f drivers/net/ethernet/korina.c Thomas Bogendoerfer 2021-04-14 1340 lp->tx_dma_regs = p;
ef11291bcd5f96 drivers/net/korina.c Florian Fainelli 2008-03-19 1341
df997a5caa5ebe drivers/net/ethernet/korina.c Thomas Bogendoerfer 2021-04-14 1342 lp->td_ring = dmam_alloc_coherent(&pdev->dev, TD_RING_SIZE,
df997a5caa5ebe drivers/net/ethernet/korina.c Thomas Bogendoerfer 2021-04-14 1343 &lp->td_dma, GFP_KERNEL);
1857bf0ef3562f drivers/net/ethernet/korina.c Thomas Bogendoerfer 2021-04-14 1344 if (!lp->td_ring)
1857bf0ef3562f drivers/net/ethernet/korina.c Thomas Bogendoerfer 2021-04-14 1345 return -ENOMEM;
ef11291bcd5f96 drivers/net/korina.c Florian Fainelli 2008-03-19 1346
df997a5caa5ebe drivers/net/ethernet/korina.c Thomas Bogendoerfer 2021-04-14 1347 lp->rd_ring = dmam_alloc_coherent(&pdev->dev, RD_RING_SIZE,
df997a5caa5ebe drivers/net/ethernet/korina.c Thomas Bogendoerfer 2021-04-14 1348 &lp->rd_dma, GFP_KERNEL);
df997a5caa5ebe drivers/net/ethernet/korina.c Thomas Bogendoerfer 2021-04-14 1349 if (!lp->rd_ring)
df997a5caa5ebe drivers/net/ethernet/korina.c Thomas Bogendoerfer 2021-04-14 1350 return -ENOMEM;
ef11291bcd5f96 drivers/net/korina.c Florian Fainelli 2008-03-19 1351
ef11291bcd5f96 drivers/net/korina.c Florian Fainelli 2008-03-19 1352 spin_lock_init(&lp->lock);
ef11291bcd5f96 drivers/net/korina.c Florian Fainelli 2008-03-19 1353 /* just use the rx dma irq */
ef11291bcd5f96 drivers/net/korina.c Florian Fainelli 2008-03-19 1354 dev->irq = lp->rx_irq;
ef11291bcd5f96 drivers/net/korina.c Florian Fainelli 2008-03-19 1355 lp->dev = dev;
df997a5caa5ebe drivers/net/ethernet/korina.c Thomas Bogendoerfer 2021-04-14 1356 lp->dmadev = &pdev->dev;
ef11291bcd5f96 drivers/net/korina.c Florian Fainelli 2008-03-19 1357
52b031ff3987a0 drivers/net/korina.c Alexander Beregalov 2009-04-15 1358 dev->netdev_ops = &korina_netdev_ops;
ef11291bcd5f96 drivers/net/korina.c Florian Fainelli 2008-03-19 1359 dev->ethtool_ops = &netdev_ethtool_ops;
ef11291bcd5f96 drivers/net/korina.c Florian Fainelli 2008-03-19 1360 dev->watchdog_timeo = TX_TIMEOUT;
d609d2893c25a3 drivers/net/ethernet/korina.c Roman Yeryomin 2017-09-17 1361 netif_napi_add(dev, &lp->napi, korina_poll, NAPI_POLL_WEIGHT);
ef11291bcd5f96 drivers/net/korina.c Florian Fainelli 2008-03-19 1362
ef11291bcd5f96 drivers/net/korina.c Florian Fainelli 2008-03-19 1363 lp->mii_if.dev = dev;
f645a16ba85561 drivers/net/ethernet/korina.c Thomas Bogendoerfer 2021-04-14 1364 lp->mii_if.mdio_read = korina_mdio_read;
f645a16ba85561 drivers/net/ethernet/korina.c Thomas Bogendoerfer 2021-04-14 1365 lp->mii_if.mdio_write = korina_mdio_write;
f645a16ba85561 drivers/net/ethernet/korina.c Thomas Bogendoerfer 2021-04-14 1366 lp->mii_if.phy_id = 1;
ef11291bcd5f96 drivers/net/korina.c Florian Fainelli 2008-03-19 1367 lp->mii_if.phy_id_mask = 0x1f;
ef11291bcd5f96 drivers/net/korina.c Florian Fainelli 2008-03-19 1368 lp->mii_if.reg_num_mask = 0x1f;
ef11291bcd5f96 drivers/net/korina.c Florian Fainelli 2008-03-19 1369
2d6c00ed2bbd38 drivers/net/ethernet/korina.c Thomas Bogendoerfer 2021-04-14 1370 platform_set_drvdata(pdev, dev);
2d6c00ed2bbd38 drivers/net/ethernet/korina.c Thomas Bogendoerfer 2021-04-14 1371
e3152ab901bcec drivers/net/korina.c Francois Romieu 2008-04-20 1372 rc = register_netdev(dev);
e3152ab901bcec drivers/net/korina.c Francois Romieu 2008-04-20 1373 if (rc < 0) {
ef11291bcd5f96 drivers/net/korina.c Florian Fainelli 2008-03-19 1374 printk(KERN_ERR DRV_NAME
f16aea4d201018 drivers/net/korina.c Phil Sutter 2009-08-12 1375 ": cannot register net device: %d\n", rc);
1857bf0ef3562f drivers/net/ethernet/korina.c Thomas Bogendoerfer 2021-04-14 1376 return rc;
ef11291bcd5f96 drivers/net/korina.c Florian Fainelli 2008-03-19 1377 }
34309b36e4f1ab drivers/net/ethernet/korina.c Kees Cook 2017-10-26 1378 timer_setup(&lp->media_check_timer, korina_poll_media, 0);
f16aea4d201018 drivers/net/korina.c Phil Sutter 2009-08-12 1379
ceb3d239453254 drivers/net/korina.c Phil Sutter 2010-05-29 1380 INIT_WORK(&lp->restart_task, korina_restart_task);
ceb3d239453254 drivers/net/korina.c Phil Sutter 2010-05-29 1381
f16aea4d201018 drivers/net/korina.c Phil Sutter 2009-08-12 1382 printk(KERN_INFO "%s: " DRV_NAME "-" DRV_VERSION " " DRV_RELDATE "\n",
f16aea4d201018 drivers/net/korina.c Phil Sutter 2009-08-12 1383 dev->name);
e3152ab901bcec drivers/net/korina.c Francois Romieu 2008-04-20 1384 return rc;
ef11291bcd5f96 drivers/net/korina.c Florian Fainelli 2008-03-19 1385 }
ef11291bcd5f96 drivers/net/korina.c Florian Fainelli 2008-03-19 1386
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
1 year, 5 months
[xiang-linux:xfs/shrink_ags 2/4] fs/xfs/libxfs/xfs_alloc.c:2478:1: warning: no previous prototype for 'xfs_ag_emptify_agfl'
by kernel test robot
tree: https://git.kernel.org/pub/scm/linux/kernel/git/xiang/linux.git xfs/shrink_ags
head: 8e4c0f86c42774434d1935594d324be8dd834d02
commit: a796c2abb6f7baaf26e82e907d71cfdc30febcce [2/4] xfs: check ag is empty
config: i386-randconfig-r035-20210414 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0
reproduce (this is a W=1 build):
# https://git.kernel.org/pub/scm/linux/kernel/git/xiang/linux.git/commit/?i...
git remote add xiang-linux https://git.kernel.org/pub/scm/linux/kernel/git/xiang/linux.git
git fetch --no-tags xiang-linux xfs/shrink_ags
git checkout a796c2abb6f7baaf26e82e907d71cfdc30febcce
# save the attached .config to linux build tree
make W=1 W=1 ARCH=i386
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 >>):
>> fs/xfs/libxfs/xfs_alloc.c:2478:1: warning: no previous prototype for 'xfs_ag_emptify_agfl' [-Wmissing-prototypes]
2478 | xfs_ag_emptify_agfl(
| ^~~~~~~~~~~~~~~~~~~
vim +/xfs_ag_emptify_agfl +2478 fs/xfs/libxfs/xfs_alloc.c
2476
2477 int
> 2478 xfs_ag_emptify_agfl(
2479 struct xfs_buf *agfbp)
2480 {
2481 struct xfs_mount *mp = agfbp->b_mount;
2482 struct xfs_perag *pag = agfbp->b_pag;
2483 struct xfs_trans *tp;
2484 int error;
2485 struct xfs_owner_info oinfo = XFS_RMAP_OINFO_AG;
2486
2487 error = xfs_trans_alloc(mp, &M_RES(mp)->tr_growdata, 0, 0,
2488 XFS_TRANS_RESERVE, &tp);
2489 if (error)
2490 return error;
2491
2492 /* attach to the transaction and keep it from unlocked */
2493 xfs_trans_bjoin(tp, agfbp);
2494 xfs_trans_bhold(tp, agfbp);
2495
2496 while (pag->pagf_flcount) {
2497 xfs_agblock_t bno;
2498 int error;
2499
2500 error = xfs_alloc_get_freelist(tp, agfbp, &bno, 0);
2501 if (error)
2502 break;
2503
2504 ASSERT(bno != NULLAGBLOCK);
2505 xfs_defer_agfl_block(tp, pag->pag_agno, bno, &oinfo);
2506 }
2507 xfs_trans_set_sync(tp);
2508 xfs_trans_commit(tp);
2509 return error;
2510 }
2511
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
1 year, 5 months
[block:for-5.13/io_uring 119/120] fs/io_uring.c:5296:38: sparse: sparse: incorrect type in return expression (different base types)
by kernel test robot
tree: https://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux-block.git for-5.13/io_uring
head: c5de00366e3e675f9e321983d9bd357c1fbea0e9
commit: 9096af3e9c8734a34703bd9fb5ab14292296f911 [119/120] io_uring: add helper for parsing poll events
config: i386-randconfig-s002-20210414 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0
reproduce:
# apt-get install sparse
# sparse version: v0.6.3-280-g2cd6d34e-dirty
# https://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux-block.git/com...
git remote add block https://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux-block.git
git fetch --no-tags block for-5.13/io_uring
git checkout 9096af3e9c8734a34703bd9fb5ab14292296f911
# save the attached .config to linux build tree
make W=1 C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' W=1 ARCH=i386
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/io_uring.c:2888:24: sparse: sparse: incorrect type in return expression (different address spaces) @@ expected void [noderef] __user * @@ got struct io_buffer *[assigned] kbuf @@
fs/io_uring.c:2888:24: sparse: expected void [noderef] __user *
fs/io_uring.c:2888:24: sparse: got struct io_buffer *[assigned] kbuf
fs/io_uring.c:4189:14: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct file *file @@ got struct file [noderef] __rcu * @@
fs/io_uring.c:4189:14: sparse: expected struct file *file
fs/io_uring.c:4189:14: sparse: got struct file [noderef] __rcu *
fs/io_uring.c:4794:72: sparse: sparse: incorrect type in argument 4 (different base types) @@ expected int mask @@ got restricted __poll_t [usertype] mask @@
fs/io_uring.c:4794:72: sparse: expected int mask
fs/io_uring.c:4794:72: sparse: got restricted __poll_t [usertype] mask
fs/io_uring.c:4798:21: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int [usertype] result @@ got restricted __poll_t [usertype] mask @@
fs/io_uring.c:4798:21: sparse: expected unsigned int [usertype] result
fs/io_uring.c:4798:21: sparse: got restricted __poll_t [usertype] mask
fs/io_uring.c:4823:29: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int [usertype] result @@ got restricted __poll_t @@
fs/io_uring.c:4823:29: sparse: expected unsigned int [usertype] result
fs/io_uring.c:4823:29: sparse: got restricted __poll_t
fs/io_uring.c:4904:49: sparse: sparse: incorrect type in argument 2 (different base types) @@ expected restricted __poll_t [usertype] mask @@ got unsigned int [usertype] result @@
fs/io_uring.c:4904:49: sparse: expected restricted __poll_t [usertype] mask
fs/io_uring.c:4904:49: sparse: got unsigned int [usertype] result
fs/io_uring.c:5053:41: sparse: sparse: incorrect type in argument 4 (different base types) @@ expected int mask @@ got restricted __poll_t [usertype] @@
fs/io_uring.c:5053:41: sparse: expected int mask
fs/io_uring.c:5053:41: sparse: got restricted __poll_t [usertype]
fs/io_uring.c:5141:22: sparse: sparse: invalid assignment: |=
fs/io_uring.c:5141:22: sparse: left side has type restricted __poll_t
fs/io_uring.c:5141:22: sparse: right side has type int
fs/io_uring.c:5143:22: sparse: sparse: invalid assignment: |=
fs/io_uring.c:5143:22: sparse: left side has type restricted __poll_t
fs/io_uring.c:5143:22: sparse: right side has type int
fs/io_uring.c:5148:22: sparse: sparse: invalid assignment: &=
fs/io_uring.c:5148:22: sparse: left side has type restricted __poll_t
fs/io_uring.c:5148:22: sparse: right side has type int
fs/io_uring.c:5150:14: sparse: sparse: invalid assignment: |=
fs/io_uring.c:5150:14: sparse: left side has type restricted __poll_t
fs/io_uring.c:5150:14: sparse: right side has type int
fs/io_uring.c:5164:67: sparse: sparse: incorrect type in argument 4 (different base types) @@ expected int mask @@ got restricted __poll_t [assigned] [usertype] mask @@
fs/io_uring.c:5164:67: sparse: expected int mask
fs/io_uring.c:5164:67: sparse: got restricted __poll_t [assigned] [usertype] mask
fs/io_uring.c:5165:52: sparse: sparse: incorrect type in argument 5 (different base types) @@ expected int events @@ got restricted __poll_t [usertype] events @@
fs/io_uring.c:5165:52: sparse: expected int events
fs/io_uring.c:5165:52: sparse: got restricted __poll_t [usertype] events
fs/io_uring.c:5295:24: sparse: sparse: invalid assignment: |=
fs/io_uring.c:5295:24: sparse: left side has type unsigned int
fs/io_uring.c:5295:24: sparse: right side has type restricted __poll_t
fs/io_uring.c:5296:65: sparse: sparse: restricted __poll_t degrades to integer
fs/io_uring.c:5296:29: sparse: sparse: restricted __poll_t degrades to integer
>> fs/io_uring.c:5296:38: sparse: sparse: incorrect type in return expression (different base types) @@ expected restricted __poll_t @@ got unsigned int @@
fs/io_uring.c:5296:38: sparse: expected restricted __poll_t
fs/io_uring.c:5296:38: sparse: got unsigned int
fs/io_uring.c:5361:16: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int [usertype] events @@ got restricted __poll_t @@
fs/io_uring.c:5361:16: sparse: expected unsigned int [usertype] events
fs/io_uring.c:5361:16: sparse: got restricted __poll_t
fs/io_uring.c:5367:34: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __poll_t [usertype] events @@ got unsigned int [usertype] events @@
fs/io_uring.c:5367:34: sparse: expected restricted __poll_t [usertype] events
fs/io_uring.c:5367:34: sparse: got unsigned int [usertype] events
fs/io_uring.c:5376:30: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __poll_t [usertype] events @@ got unsigned int [usertype] events @@
fs/io_uring.c:5376:30: sparse: expected restricted __poll_t [usertype] events
fs/io_uring.c:5376:30: sparse: got unsigned int [usertype] events
fs/io_uring.c:5444:35: sparse: sparse: invalid assignment: &=
fs/io_uring.c:5444:35: sparse: left side has type restricted __poll_t
fs/io_uring.c:5444:35: sparse: right side has type int
fs/io_uring.c:5445:54: sparse: sparse: restricted __poll_t degrades to integer
fs/io_uring.c:5445:35: sparse: sparse: invalid assignment: |=
fs/io_uring.c:5445:35: sparse: left side has type restricted __poll_t
fs/io_uring.c:5445:35: sparse: right side has type unsigned int
fs/io_uring.c:7202:9: sparse: sparse: context imbalance in 'io_sq_thread_unpark' - wrong count at exit
fs/io_uring.c:7213:9: sparse: sparse: context imbalance in 'io_sq_thread_park' - wrong count at exit
vim +5296 fs/io_uring.c
5284
5285 static __poll_t io_poll_parse_events(const struct io_uring_sqe *sqe,
5286 unsigned int flags)
5287 {
5288 u32 events;
5289
5290 events = READ_ONCE(sqe->poll32_events);
5291 #ifdef __BIG_ENDIAN
5292 events = swahw32(events);
5293 #endif
5294 if (!(flags & IORING_POLL_ADD_MULTI))
5295 events |= EPOLLONESHOT;
> 5296 return demangle_poll(events) | (events & (EPOLLEXCLUSIVE|EPOLLONESHOT));
5297 }
5298
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
1 year, 5 months
[intel-linux-intel-lts:5.4/yocto 6901/15715] drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:6293:6: warning: no previous prototype for function 'stmmac_clean_all_tx_rings'
by kernel test robot
Hi Ong,
FYI, the error/warning still remains.
tree: https://github.com/intel/linux-intel-lts.git 5.4/yocto
head: fd5e7624e7f01f125381d703b9aa840894fad418
commit: c2198809408cf67767651a83f3024c6340602479 [6901/15715] net: stmmac: clean all pending Tx buffers during suspend
config: x86_64-randconfig-a001-20210414 (attached as .config)
compiler: clang version 13.0.0 (https://github.com/llvm/llvm-project 9829f5e6b1bca9b61efc629770d28bb9014dec45)
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# install x86_64 cross compiling tool for clang build
# apt-get install binutils-x86-64-linux-gnu
# https://github.com/intel/linux-intel-lts/commit/c2198809408cf67767651a83f...
git remote add intel-linux-intel-lts https://github.com/intel/linux-intel-lts.git
git fetch --no-tags intel-linux-intel-lts 5.4/yocto
git checkout c2198809408cf67767651a83f3024c6340602479
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 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 >>):
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:802:3: warning: variable 'sec_inc' is used uninitialized whenever 'if' condition is false [-Wsometimes-uninitialized]
stmmac_config_sub_second_increment(priv,
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/net/ethernet/stmicro/stmmac/hwif.h:666:2: note: expanded from macro 'stmmac_config_sub_second_increment'
stmmac_do_void_callback(__priv, ptp, config_sub_second_increment, __args)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/net/ethernet/stmicro/stmmac/hwif.h:14:6: note: expanded from macro 'stmmac_do_void_callback'
if ((__priv)->hw->__module && (__priv)->hw->__module->__cname) { \
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:807:33: note: uninitialized use occurs here
temp = div_u64(1000000000ULL, sec_inc);
^~~~~~~
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:802:3: note: remove the 'if' if its condition is always true
stmmac_config_sub_second_increment(priv,
^
drivers/net/ethernet/stmicro/stmmac/hwif.h:666:2: note: expanded from macro 'stmmac_config_sub_second_increment'
stmmac_do_void_callback(__priv, ptp, config_sub_second_increment, __args)
^
drivers/net/ethernet/stmicro/stmmac/hwif.h:14:2: note: expanded from macro 'stmmac_do_void_callback'
if ((__priv)->hw->__module && (__priv)->hw->__module->__cname) { \
^
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:802:3: warning: variable 'sec_inc' is used uninitialized whenever '&&' condition is false [-Wsometimes-uninitialized]
stmmac_config_sub_second_increment(priv,
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/net/ethernet/stmicro/stmmac/hwif.h:666:2: note: expanded from macro 'stmmac_config_sub_second_increment'
stmmac_do_void_callback(__priv, ptp, config_sub_second_increment, __args)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/net/ethernet/stmicro/stmmac/hwif.h:14:6: note: expanded from macro 'stmmac_do_void_callback'
if ((__priv)->hw->__module && (__priv)->hw->__module->__cname) { \
^~~~~~~~~~~~~~~~~~~~~~
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:807:33: note: uninitialized use occurs here
temp = div_u64(1000000000ULL, sec_inc);
^~~~~~~
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:802:3: note: remove the '&&' if its condition is always true
stmmac_config_sub_second_increment(priv,
^
drivers/net/ethernet/stmicro/stmmac/hwif.h:666:2: note: expanded from macro 'stmmac_config_sub_second_increment'
stmmac_do_void_callback(__priv, ptp, config_sub_second_increment, __args)
^
drivers/net/ethernet/stmicro/stmmac/hwif.h:14:6: note: expanded from macro 'stmmac_do_void_callback'
if ((__priv)->hw->__module && (__priv)->hw->__module->__cname) { \
^
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:767:13: note: initialize the variable 'sec_inc' to silence this warning
u32 sec_inc;
^
= 0
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:1403:6: warning: no previous prototype for function 'stmmac_alloc_rx_buffers' [-Wmissing-prototypes]
bool stmmac_alloc_rx_buffers(struct stmmac_rx_queue *rx_q, u32 count)
^
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:1403:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
bool stmmac_alloc_rx_buffers(struct stmmac_rx_queue *rx_q, u32 count)
^
static
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:5615:5: warning: no previous prototype for function 'stmmac_xdp_xmit' [-Wmissing-prototypes]
int stmmac_xdp_xmit(struct net_device *dev, int n, struct xdp_frame **frames,
^
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:5615:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
int stmmac_xdp_xmit(struct net_device *dev, int n, struct xdp_frame **frames,
^
static
>> drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:6293:6: warning: no previous prototype for function 'stmmac_clean_all_tx_rings' [-Wmissing-prototypes]
void stmmac_clean_all_tx_rings(struct stmmac_priv *priv)
^
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:6293:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
void stmmac_clean_all_tx_rings(struct stmmac_priv *priv)
^
static
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:4232:19: warning: unused function 'stmmac_rx_threshold_count' [-Wunused-function]
static inline int stmmac_rx_threshold_count(struct stmmac_rx_queue *rx_q)
^
6 warnings generated.
vim +/stmmac_clean_all_tx_rings +6293 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
6292
> 6293 void stmmac_clean_all_tx_rings(struct stmmac_priv *priv)
6294 {
6295 u32 tx_count = priv->plat->tx_queues_to_use;
6296 u32 queue;
6297
6298 for (queue = 0; queue < tx_count; queue++) {
6299 struct stmmac_tx_queue *tx_q = get_tx_queue(priv, queue);
6300
6301 stmmac_clean_tx_queue(priv, tx_q);
6302 }
6303 }
6304
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
1 year, 5 months
[gustavoars-linux:testing/warray-bounds 1/10] net/core/flow_dissector.c:835:3: warning: 'memcpy' offset [33, 48] from the object at 'flow_keys' is out of the bounds of referenced subobject 'ipv6_src' with type '__u32[4]' {aka 'unsigned int[4]'} at offset 16
by kernel test robot
tree: https://git.kernel.org/pub/scm/linux/kernel/git/gustavoars/linux.git testing/warray-bounds
head: 4695107c157dd670a5fc1b1d3ccbfdc440caca24
commit: 06f7d86a7f517e6ce30162d18a7eef3ed192282a [1/10] Makefile: Enable -Warray-bounds
config: x86_64-randconfig-r026-20210414 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0
reproduce (this is a W=1 build):
# https://git.kernel.org/pub/scm/linux/kernel/git/gustavoars/linux.git/comm...
git remote add gustavoars-linux https://git.kernel.org/pub/scm/linux/kernel/git/gustavoars/linux.git
git fetch --no-tags gustavoars-linux testing/warray-bounds
git checkout 06f7d86a7f517e6ce30162d18a7eef3ed192282a
# save the attached .config to linux build tree
make W=1 W=1 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 >>):
In function '__skb_flow_bpf_to_target',
inlined from '__skb_flow_dissect' at net/core/flow_dissector.c:1014:4:
>> net/core/flow_dissector.c:835:3: warning: 'memcpy' offset [33, 48] from the object at 'flow_keys' is out of the bounds of referenced subobject 'ipv6_src' with type '__u32[4]' {aka 'unsigned int[4]'} at offset 16 [-Warray-bounds]
835 | memcpy(&key_addrs->v6addrs, &flow_keys->ipv6_src,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
836 | sizeof(key_addrs->v6addrs));
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~
--
net/ethtool/ioctl.c: In function 'store_link_ksettings_for_user.constprop':
>> net/ethtool/ioctl.c:492:2: warning: 'memcpy' offset [49, 84] from the object at 'link_usettings' is out of the bounds of referenced subobject 'base' with type 'struct ethtool_link_settings' at offset 0 [-Warray-bounds]
492 | memcpy(&link_usettings.base, &from->base, sizeof(link_usettings));
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vim +835 net/core/flow_dissector.c
1eed4dfb81b193 Tom Herbert 2017-09-01 793
d58e468b1112dc Petar Penkov 2018-09-14 794 static void __skb_flow_bpf_to_target(const struct bpf_flow_keys *flow_keys,
d58e468b1112dc Petar Penkov 2018-09-14 795 struct flow_dissector *flow_dissector,
d58e468b1112dc Petar Penkov 2018-09-14 796 void *target_container)
d58e468b1112dc Petar Penkov 2018-09-14 797 {
59fb9b62fb6c92 Yoshiki Komachi 2020-01-17 798 struct flow_dissector_key_ports *key_ports = NULL;
d58e468b1112dc Petar Penkov 2018-09-14 799 struct flow_dissector_key_control *key_control;
d58e468b1112dc Petar Penkov 2018-09-14 800 struct flow_dissector_key_basic *key_basic;
d58e468b1112dc Petar Penkov 2018-09-14 801 struct flow_dissector_key_addrs *key_addrs;
71c99e32b92615 Stanislav Fomichev 2019-07-25 802 struct flow_dissector_key_tags *key_tags;
d58e468b1112dc Petar Penkov 2018-09-14 803
d58e468b1112dc Petar Penkov 2018-09-14 804 key_control = skb_flow_dissector_target(flow_dissector,
d58e468b1112dc Petar Penkov 2018-09-14 805 FLOW_DISSECTOR_KEY_CONTROL,
d58e468b1112dc Petar Penkov 2018-09-14 806 target_container);
d58e468b1112dc Petar Penkov 2018-09-14 807 key_control->thoff = flow_keys->thoff;
d58e468b1112dc Petar Penkov 2018-09-14 808 if (flow_keys->is_frag)
d58e468b1112dc Petar Penkov 2018-09-14 809 key_control->flags |= FLOW_DIS_IS_FRAGMENT;
d58e468b1112dc Petar Penkov 2018-09-14 810 if (flow_keys->is_first_frag)
d58e468b1112dc Petar Penkov 2018-09-14 811 key_control->flags |= FLOW_DIS_FIRST_FRAG;
d58e468b1112dc Petar Penkov 2018-09-14 812 if (flow_keys->is_encap)
d58e468b1112dc Petar Penkov 2018-09-14 813 key_control->flags |= FLOW_DIS_ENCAPSULATION;
d58e468b1112dc Petar Penkov 2018-09-14 814
d58e468b1112dc Petar Penkov 2018-09-14 815 key_basic = skb_flow_dissector_target(flow_dissector,
d58e468b1112dc Petar Penkov 2018-09-14 816 FLOW_DISSECTOR_KEY_BASIC,
d58e468b1112dc Petar Penkov 2018-09-14 817 target_container);
d58e468b1112dc Petar Penkov 2018-09-14 818 key_basic->n_proto = flow_keys->n_proto;
d58e468b1112dc Petar Penkov 2018-09-14 819 key_basic->ip_proto = flow_keys->ip_proto;
d58e468b1112dc Petar Penkov 2018-09-14 820
d58e468b1112dc Petar Penkov 2018-09-14 821 if (flow_keys->addr_proto == ETH_P_IP &&
d58e468b1112dc Petar Penkov 2018-09-14 822 dissector_uses_key(flow_dissector, FLOW_DISSECTOR_KEY_IPV4_ADDRS)) {
d58e468b1112dc Petar Penkov 2018-09-14 823 key_addrs = skb_flow_dissector_target(flow_dissector,
d58e468b1112dc Petar Penkov 2018-09-14 824 FLOW_DISSECTOR_KEY_IPV4_ADDRS,
d58e468b1112dc Petar Penkov 2018-09-14 825 target_container);
d58e468b1112dc Petar Penkov 2018-09-14 826 key_addrs->v4addrs.src = flow_keys->ipv4_src;
d58e468b1112dc Petar Penkov 2018-09-14 827 key_addrs->v4addrs.dst = flow_keys->ipv4_dst;
d58e468b1112dc Petar Penkov 2018-09-14 828 key_control->addr_type = FLOW_DISSECTOR_KEY_IPV4_ADDRS;
d58e468b1112dc Petar Penkov 2018-09-14 829 } else if (flow_keys->addr_proto == ETH_P_IPV6 &&
d58e468b1112dc Petar Penkov 2018-09-14 830 dissector_uses_key(flow_dissector,
d58e468b1112dc Petar Penkov 2018-09-14 831 FLOW_DISSECTOR_KEY_IPV6_ADDRS)) {
d58e468b1112dc Petar Penkov 2018-09-14 832 key_addrs = skb_flow_dissector_target(flow_dissector,
d58e468b1112dc Petar Penkov 2018-09-14 833 FLOW_DISSECTOR_KEY_IPV6_ADDRS,
d58e468b1112dc Petar Penkov 2018-09-14 834 target_container);
d58e468b1112dc Petar Penkov 2018-09-14 @835 memcpy(&key_addrs->v6addrs, &flow_keys->ipv6_src,
d58e468b1112dc Petar Penkov 2018-09-14 836 sizeof(key_addrs->v6addrs));
d58e468b1112dc Petar Penkov 2018-09-14 837 key_control->addr_type = FLOW_DISSECTOR_KEY_IPV6_ADDRS;
d58e468b1112dc Petar Penkov 2018-09-14 838 }
d58e468b1112dc Petar Penkov 2018-09-14 839
59fb9b62fb6c92 Yoshiki Komachi 2020-01-17 840 if (dissector_uses_key(flow_dissector, FLOW_DISSECTOR_KEY_PORTS))
d58e468b1112dc Petar Penkov 2018-09-14 841 key_ports = skb_flow_dissector_target(flow_dissector,
d58e468b1112dc Petar Penkov 2018-09-14 842 FLOW_DISSECTOR_KEY_PORTS,
d58e468b1112dc Petar Penkov 2018-09-14 843 target_container);
59fb9b62fb6c92 Yoshiki Komachi 2020-01-17 844 else if (dissector_uses_key(flow_dissector,
59fb9b62fb6c92 Yoshiki Komachi 2020-01-17 845 FLOW_DISSECTOR_KEY_PORTS_RANGE))
59fb9b62fb6c92 Yoshiki Komachi 2020-01-17 846 key_ports = skb_flow_dissector_target(flow_dissector,
59fb9b62fb6c92 Yoshiki Komachi 2020-01-17 847 FLOW_DISSECTOR_KEY_PORTS_RANGE,
59fb9b62fb6c92 Yoshiki Komachi 2020-01-17 848 target_container);
59fb9b62fb6c92 Yoshiki Komachi 2020-01-17 849
59fb9b62fb6c92 Yoshiki Komachi 2020-01-17 850 if (key_ports) {
d58e468b1112dc Petar Penkov 2018-09-14 851 key_ports->src = flow_keys->sport;
d58e468b1112dc Petar Penkov 2018-09-14 852 key_ports->dst = flow_keys->dport;
d58e468b1112dc Petar Penkov 2018-09-14 853 }
71c99e32b92615 Stanislav Fomichev 2019-07-25 854
71c99e32b92615 Stanislav Fomichev 2019-07-25 855 if (dissector_uses_key(flow_dissector,
71c99e32b92615 Stanislav Fomichev 2019-07-25 856 FLOW_DISSECTOR_KEY_FLOW_LABEL)) {
71c99e32b92615 Stanislav Fomichev 2019-07-25 857 key_tags = skb_flow_dissector_target(flow_dissector,
71c99e32b92615 Stanislav Fomichev 2019-07-25 858 FLOW_DISSECTOR_KEY_FLOW_LABEL,
71c99e32b92615 Stanislav Fomichev 2019-07-25 859 target_container);
71c99e32b92615 Stanislav Fomichev 2019-07-25 860 key_tags->flow_label = ntohl(flow_keys->flow_label);
71c99e32b92615 Stanislav Fomichev 2019-07-25 861 }
d58e468b1112dc Petar Penkov 2018-09-14 862 }
d58e468b1112dc Petar Penkov 2018-09-14 863
089b19a9204fc0 Stanislav Fomichev 2019-04-22 864 bool bpf_flow_dissect(struct bpf_prog *prog, struct bpf_flow_dissector *ctx,
086f95682114fd Stanislav Fomichev 2019-07-25 865 __be16 proto, int nhoff, int hlen, unsigned int flags)
089b19a9204fc0 Stanislav Fomichev 2019-04-22 866 {
089b19a9204fc0 Stanislav Fomichev 2019-04-22 867 struct bpf_flow_keys *flow_keys = ctx->flow_keys;
089b19a9204fc0 Stanislav Fomichev 2019-04-22 868 u32 result;
c8aa703822bf81 Stanislav Fomichev 2019-01-28 869
c8aa703822bf81 Stanislav Fomichev 2019-01-28 870 /* Pass parameters to the BPF program */
c8aa703822bf81 Stanislav Fomichev 2019-01-28 871 memset(flow_keys, 0, sizeof(*flow_keys));
089b19a9204fc0 Stanislav Fomichev 2019-04-22 872 flow_keys->n_proto = proto;
089b19a9204fc0 Stanislav Fomichev 2019-04-22 873 flow_keys->nhoff = nhoff;
c8aa703822bf81 Stanislav Fomichev 2019-01-28 874 flow_keys->thoff = flow_keys->nhoff;
c8aa703822bf81 Stanislav Fomichev 2019-01-28 875
086f95682114fd Stanislav Fomichev 2019-07-25 876 BUILD_BUG_ON((int)BPF_FLOW_DISSECTOR_F_PARSE_1ST_FRAG !=
086f95682114fd Stanislav Fomichev 2019-07-25 877 (int)FLOW_DISSECTOR_F_PARSE_1ST_FRAG);
086f95682114fd Stanislav Fomichev 2019-07-25 878 BUILD_BUG_ON((int)BPF_FLOW_DISSECTOR_F_STOP_AT_FLOW_LABEL !=
086f95682114fd Stanislav Fomichev 2019-07-25 879 (int)FLOW_DISSECTOR_F_STOP_AT_FLOW_LABEL);
086f95682114fd Stanislav Fomichev 2019-07-25 880 BUILD_BUG_ON((int)BPF_FLOW_DISSECTOR_F_STOP_AT_ENCAP !=
086f95682114fd Stanislav Fomichev 2019-07-25 881 (int)FLOW_DISSECTOR_F_STOP_AT_ENCAP);
086f95682114fd Stanislav Fomichev 2019-07-25 882 flow_keys->flags = flags;
086f95682114fd Stanislav Fomichev 2019-07-25 883
3d9f773cf2876c David Miller 2020-02-24 884 result = bpf_prog_run_pin_on_cpu(prog, ctx);
c8aa703822bf81 Stanislav Fomichev 2019-01-28 885
089b19a9204fc0 Stanislav Fomichev 2019-04-22 886 flow_keys->nhoff = clamp_t(u16, flow_keys->nhoff, nhoff, hlen);
c8aa703822bf81 Stanislav Fomichev 2019-01-28 887 flow_keys->thoff = clamp_t(u16, flow_keys->thoff,
089b19a9204fc0 Stanislav Fomichev 2019-04-22 888 flow_keys->nhoff, hlen);
c8aa703822bf81 Stanislav Fomichev 2019-01-28 889
c8aa703822bf81 Stanislav Fomichev 2019-01-28 890 return result == BPF_OK;
c8aa703822bf81 Stanislav Fomichev 2019-01-28 891 }
c8aa703822bf81 Stanislav Fomichev 2019-01-28 892
453a940ea725d6 WANG Cong 2014-08-25 893 /**
453a940ea725d6 WANG Cong 2014-08-25 894 * __skb_flow_dissect - extract the flow_keys struct and return it
3cbf4ffba5eeec Stanislav Fomichev 2019-04-22 895 * @net: associated network namespace, derived from @skb if NULL
453a940ea725d6 WANG Cong 2014-08-25 896 * @skb: sk_buff to extract the flow from, can be NULL if the rest are specified
06635a35d13d42 Jiri Pirko 2015-05-12 897 * @flow_dissector: list of keys to dissect
06635a35d13d42 Jiri Pirko 2015-05-12 898 * @target_container: target structure to put dissected values into
453a940ea725d6 WANG Cong 2014-08-25 899 * @data: raw buffer pointer to the packet, if NULL use skb->data
453a940ea725d6 WANG Cong 2014-08-25 900 * @proto: protocol for which to get the flow, if @data is NULL use skb->protocol
453a940ea725d6 WANG Cong 2014-08-25 901 * @nhoff: network header offset, if @data is NULL use skb_network_offset(skb)
453a940ea725d6 WANG Cong 2014-08-25 902 * @hlen: packet header length, if @data is NULL use skb_headlen(skb)
d79b3bafabc27c Bart Van Assche 2019-03-25 903 * @flags: flags that control the dissection process, e.g.
1cc26450a855aa Stanislav Fomichev 2019-05-31 904 * FLOW_DISSECTOR_F_STOP_AT_ENCAP.
453a940ea725d6 WANG Cong 2014-08-25 905 *
06635a35d13d42 Jiri Pirko 2015-05-12 906 * The function will try to retrieve individual keys into target specified
06635a35d13d42 Jiri Pirko 2015-05-12 907 * by flow_dissector from either the skbuff or a raw buffer specified by the
06635a35d13d42 Jiri Pirko 2015-05-12 908 * rest parameters.
06635a35d13d42 Jiri Pirko 2015-05-12 909 *
06635a35d13d42 Jiri Pirko 2015-05-12 910 * Caller must take care of zeroing target container memory.
453a940ea725d6 WANG Cong 2014-08-25 911 */
3cbf4ffba5eeec Stanislav Fomichev 2019-04-22 912 bool __skb_flow_dissect(const struct net *net,
3cbf4ffba5eeec Stanislav Fomichev 2019-04-22 913 const struct sk_buff *skb,
06635a35d13d42 Jiri Pirko 2015-05-12 914 struct flow_dissector *flow_dissector,
f96533cded173b Alexander Lobakin 2021-03-14 915 void *target_container, const void *data,
f96533cded173b Alexander Lobakin 2021-03-14 916 __be16 proto, int nhoff, int hlen, unsigned int flags)
0744dd00c1b1be Eric Dumazet 2011-11-28 917 {
42aecaa9bb2bd5 Tom Herbert 2015-06-04 918 struct flow_dissector_key_control *key_control;
06635a35d13d42 Jiri Pirko 2015-05-12 919 struct flow_dissector_key_basic *key_basic;
06635a35d13d42 Jiri Pirko 2015-05-12 920 struct flow_dissector_key_addrs *key_addrs;
d34af823ff401c Tom Herbert 2015-06-04 921 struct flow_dissector_key_tags *key_tags;
f6a66927692e30 Hadar Hen Zion 2016-08-17 922 struct flow_dissector_key_vlan *key_vlan;
3a1214e8b06317 Tom Herbert 2017-09-01 923 enum flow_dissect_ret fdret;
24c590e3b0f9ee Jianbo Liu 2018-07-06 924 enum flow_dissector_key_id dissector_vlan = FLOW_DISSECTOR_KEY_MAX;
58cff782cc55eb Guillaume Nault 2020-05-26 925 bool mpls_el = false;
58cff782cc55eb Guillaume Nault 2020-05-26 926 int mpls_lse = 0;
1eed4dfb81b193 Tom Herbert 2017-09-01 927 int num_hdrs = 0;
8e690ffdbcc7b5 Geert Uytterhoeven 2015-06-25 928 u8 ip_proto = 0;
34fad54c2537f7 Eric Dumazet 2016-11-09 929 bool ret;
0744dd00c1b1be Eric Dumazet 2011-11-28 930
690e36e726d00d David S. Miller 2014-08-23 931 if (!data) {
690e36e726d00d David S. Miller 2014-08-23 932 data = skb->data;
d5709f7ab77679 Hadar Hen Zion 2016-08-17 933 proto = skb_vlan_tag_present(skb) ?
d5709f7ab77679 Hadar Hen Zion 2016-08-17 934 skb->vlan_proto : skb->protocol;
453a940ea725d6 WANG Cong 2014-08-25 935 nhoff = skb_network_offset(skb);
690e36e726d00d David S. Miller 2014-08-23 936 hlen = skb_headlen(skb);
2d5716456404a1 John Crispin 2017-08-10 937 #if IS_ENABLED(CONFIG_NET_DSA)
8bef0af09a5415 Alexander Lobakin 2019-12-05 938 if (unlikely(skb->dev && netdev_uses_dsa(skb->dev) &&
8bef0af09a5415 Alexander Lobakin 2019-12-05 939 proto == htons(ETH_P_XDSA))) {
43e665287f931a John Crispin 2017-08-09 940 const struct dsa_device_ops *ops;
8bef0af09a5415 Alexander Lobakin 2019-12-05 941 int offset = 0;
43e665287f931a John Crispin 2017-08-09 942
43e665287f931a John Crispin 2017-08-09 943 ops = skb->dev->dsa_ptr->tag_ops;
54fec33582aa60 Vladimir Oltean 2020-09-26 944 /* Tail taggers don't break flow dissection */
54fec33582aa60 Vladimir Oltean 2020-09-26 945 if (!ops->tail_tag) {
54fec33582aa60 Vladimir Oltean 2020-09-26 946 if (ops->flow_dissect)
2e8cb1b3db3843 Vladimir Oltean 2020-09-26 947 ops->flow_dissect(skb, &proto, &offset);
54fec33582aa60 Vladimir Oltean 2020-09-26 948 else
54fec33582aa60 Vladimir Oltean 2020-09-26 949 dsa_tag_generic_flow_dissect(skb,
54fec33582aa60 Vladimir Oltean 2020-09-26 950 &proto,
54fec33582aa60 Vladimir Oltean 2020-09-26 951 &offset);
43e665287f931a John Crispin 2017-08-09 952 hlen -= offset;
43e665287f931a John Crispin 2017-08-09 953 nhoff += offset;
43e665287f931a John Crispin 2017-08-09 954 }
43e665287f931a John Crispin 2017-08-09 955 }
2d5716456404a1 John Crispin 2017-08-10 956 #endif
690e36e726d00d David S. Miller 2014-08-23 957 }
690e36e726d00d David S. Miller 2014-08-23 958
42aecaa9bb2bd5 Tom Herbert 2015-06-04 959 /* It is ensured by skb_flow_dissector_init() that control key will
42aecaa9bb2bd5 Tom Herbert 2015-06-04 960 * be always present.
42aecaa9bb2bd5 Tom Herbert 2015-06-04 961 */
42aecaa9bb2bd5 Tom Herbert 2015-06-04 962 key_control = skb_flow_dissector_target(flow_dissector,
42aecaa9bb2bd5 Tom Herbert 2015-06-04 963 FLOW_DISSECTOR_KEY_CONTROL,
42aecaa9bb2bd5 Tom Herbert 2015-06-04 964 target_container);
42aecaa9bb2bd5 Tom Herbert 2015-06-04 965
06635a35d13d42 Jiri Pirko 2015-05-12 966 /* It is ensured by skb_flow_dissector_init() that basic key will
06635a35d13d42 Jiri Pirko 2015-05-12 967 * be always present.
06635a35d13d42 Jiri Pirko 2015-05-12 968 */
06635a35d13d42 Jiri Pirko 2015-05-12 969 key_basic = skb_flow_dissector_target(flow_dissector,
06635a35d13d42 Jiri Pirko 2015-05-12 970 FLOW_DISSECTOR_KEY_BASIC,
06635a35d13d42 Jiri Pirko 2015-05-12 971 target_container);
0744dd00c1b1be Eric Dumazet 2011-11-28 972
d0e13a1488ad30 Willem de Bruijn 2018-09-24 973 if (skb) {
3cbf4ffba5eeec Stanislav Fomichev 2019-04-22 974 if (!net) {
d0e13a1488ad30 Willem de Bruijn 2018-09-24 975 if (skb->dev)
3cbf4ffba5eeec Stanislav Fomichev 2019-04-22 976 net = dev_net(skb->dev);
d0e13a1488ad30 Willem de Bruijn 2018-09-24 977 else if (skb->sk)
3cbf4ffba5eeec Stanislav Fomichev 2019-04-22 978 net = sock_net(skb->sk);
9b52e3f267a683 Stanislav Fomichev 2019-04-22 979 }
3cbf4ffba5eeec Stanislav Fomichev 2019-04-22 980 }
3cbf4ffba5eeec Stanislav Fomichev 2019-04-22 981
9b52e3f267a683 Stanislav Fomichev 2019-04-22 982 WARN_ON_ONCE(!net);
9b52e3f267a683 Stanislav Fomichev 2019-04-22 983 if (net) {
a3fd7ceee05431 Jakub Sitnicki 2020-05-31 984 enum netns_bpf_attach_type type = NETNS_BPF_FLOW_DISSECTOR;
695c12147a4018 Jakub Sitnicki 2020-06-25 985 struct bpf_prog_array *run_array;
a3fd7ceee05431 Jakub Sitnicki 2020-05-31 986
9b52e3f267a683 Stanislav Fomichev 2019-04-22 987 rcu_read_lock();
695c12147a4018 Jakub Sitnicki 2020-06-25 988 run_array = rcu_dereference(init_net.bpf.run_array[type]);
695c12147a4018 Jakub Sitnicki 2020-06-25 989 if (!run_array)
695c12147a4018 Jakub Sitnicki 2020-06-25 990 run_array = rcu_dereference(net->bpf.run_array[type]);
a11c397c43d5b2 Stanislav Fomichev 2019-10-07 991
695c12147a4018 Jakub Sitnicki 2020-06-25 992 if (run_array) {
9b52e3f267a683 Stanislav Fomichev 2019-04-22 993 struct bpf_flow_keys flow_keys;
9b52e3f267a683 Stanislav Fomichev 2019-04-22 994 struct bpf_flow_dissector ctx = {
9b52e3f267a683 Stanislav Fomichev 2019-04-22 995 .flow_keys = &flow_keys,
9b52e3f267a683 Stanislav Fomichev 2019-04-22 996 .data = data,
9b52e3f267a683 Stanislav Fomichev 2019-04-22 997 .data_end = data + hlen,
9b52e3f267a683 Stanislav Fomichev 2019-04-22 998 };
9b52e3f267a683 Stanislav Fomichev 2019-04-22 999 __be16 n_proto = proto;
695c12147a4018 Jakub Sitnicki 2020-06-25 1000 struct bpf_prog *prog;
9b52e3f267a683 Stanislav Fomichev 2019-04-22 1001
9b52e3f267a683 Stanislav Fomichev 2019-04-22 1002 if (skb) {
9b52e3f267a683 Stanislav Fomichev 2019-04-22 1003 ctx.skb = skb;
9b52e3f267a683 Stanislav Fomichev 2019-04-22 1004 /* we can't use 'proto' in the skb case
9b52e3f267a683 Stanislav Fomichev 2019-04-22 1005 * because it might be set to skb->vlan_proto
9b52e3f267a683 Stanislav Fomichev 2019-04-22 1006 * which has been pulled from the data
9b52e3f267a683 Stanislav Fomichev 2019-04-22 1007 */
9b52e3f267a683 Stanislav Fomichev 2019-04-22 1008 n_proto = skb->protocol;
9b52e3f267a683 Stanislav Fomichev 2019-04-22 1009 }
9b52e3f267a683 Stanislav Fomichev 2019-04-22 1010
695c12147a4018 Jakub Sitnicki 2020-06-25 1011 prog = READ_ONCE(run_array->items[0].prog);
695c12147a4018 Jakub Sitnicki 2020-06-25 1012 ret = bpf_flow_dissect(prog, &ctx, n_proto, nhoff,
086f95682114fd Stanislav Fomichev 2019-07-25 1013 hlen, flags);
d58e468b1112dc Petar Penkov 2018-09-14 @1014 __skb_flow_bpf_to_target(&flow_keys, flow_dissector,
d58e468b1112dc Petar Penkov 2018-09-14 1015 target_container);
d58e468b1112dc Petar Penkov 2018-09-14 1016 rcu_read_unlock();
c8aa703822bf81 Stanislav Fomichev 2019-01-28 1017 return ret;
d58e468b1112dc Petar Penkov 2018-09-14 1018 }
d58e468b1112dc Petar Penkov 2018-09-14 1019 rcu_read_unlock();
c8aa703822bf81 Stanislav Fomichev 2019-01-28 1020 }
d58e468b1112dc Petar Penkov 2018-09-14 1021
20a17bf6c04e3e David S. Miller 2015-09-01 1022 if (dissector_uses_key(flow_dissector,
67a900cc0436d7 Jiri Pirko 2015-05-12 1023 FLOW_DISSECTOR_KEY_ETH_ADDRS)) {
67a900cc0436d7 Jiri Pirko 2015-05-12 1024 struct ethhdr *eth = eth_hdr(skb);
67a900cc0436d7 Jiri Pirko 2015-05-12 1025 struct flow_dissector_key_eth_addrs *key_eth_addrs;
67a900cc0436d7 Jiri Pirko 2015-05-12 1026
67a900cc0436d7 Jiri Pirko 2015-05-12 1027 key_eth_addrs = skb_flow_dissector_target(flow_dissector,
67a900cc0436d7 Jiri Pirko 2015-05-12 1028 FLOW_DISSECTOR_KEY_ETH_ADDRS,
67a900cc0436d7 Jiri Pirko 2015-05-12 1029 target_container);
67a900cc0436d7 Jiri Pirko 2015-05-12 1030 memcpy(key_eth_addrs, ð->h_dest, sizeof(*key_eth_addrs));
67a900cc0436d7 Jiri Pirko 2015-05-12 1031 }
67a900cc0436d7 Jiri Pirko 2015-05-12 1032
c5ef188e931869 Jiri Pirko 2017-03-06 1033 proto_again:
3a1214e8b06317 Tom Herbert 2017-09-01 1034 fdret = FLOW_DISSECT_RET_CONTINUE;
3a1214e8b06317 Tom Herbert 2017-09-01 1035
0744dd00c1b1be Eric Dumazet 2011-11-28 1036 switch (proto) {
2b8837aeaaa0bb Joe Perches 2014-03-12 1037 case htons(ETH_P_IP): {
0744dd00c1b1be Eric Dumazet 2011-11-28 1038 const struct iphdr *iph;
0744dd00c1b1be Eric Dumazet 2011-11-28 1039 struct iphdr _iph;
3a1214e8b06317 Tom Herbert 2017-09-01 1040
690e36e726d00d David S. Miller 2014-08-23 1041 iph = __skb_header_pointer(skb, nhoff, sizeof(_iph), data, hlen, &_iph);
3a1214e8b06317 Tom Herbert 2017-09-01 1042 if (!iph || iph->ihl < 5) {
3a1214e8b06317 Tom Herbert 2017-09-01 1043 fdret = FLOW_DISSECT_RET_OUT_BAD;
3a1214e8b06317 Tom Herbert 2017-09-01 1044 break;
3a1214e8b06317 Tom Herbert 2017-09-01 1045 }
3a1214e8b06317 Tom Herbert 2017-09-01 1046
3797d3e8462efd Eric Dumazet 2013-11-07 1047 nhoff += iph->ihl * 4;
0744dd00c1b1be Eric Dumazet 2011-11-28 1048
3797d3e8462efd Eric Dumazet 2013-11-07 1049 ip_proto = iph->protocol;
3797d3e8462efd Eric Dumazet 2013-11-07 1050
918c023f29ab2d Alexander Duyck 2016-02-24 1051 if (dissector_uses_key(flow_dissector,
918c023f29ab2d Alexander Duyck 2016-02-24 1052 FLOW_DISSECTOR_KEY_IPV4_ADDRS)) {
06635a35d13d42 Jiri Pirko 2015-05-12 1053 key_addrs = skb_flow_dissector_target(flow_dissector,
918c023f29ab2d Alexander Duyck 2016-02-24 1054 FLOW_DISSECTOR_KEY_IPV4_ADDRS,
918c023f29ab2d Alexander Duyck 2016-02-24 1055 target_container);
918c023f29ab2d Alexander Duyck 2016-02-24 1056
c3f8324188fa80 Tom Herbert 2015-06-04 1057 memcpy(&key_addrs->v4addrs, &iph->saddr,
c3f8324188fa80 Tom Herbert 2015-06-04 1058 sizeof(key_addrs->v4addrs));
c3f8324188fa80 Tom Herbert 2015-06-04 1059 key_control->addr_type = FLOW_DISSECTOR_KEY_IPV4_ADDRS;
918c023f29ab2d Alexander Duyck 2016-02-24 1060 }
807e165dc44fd9 Tom Herbert 2015-09-01 1061
d2126838050ccd Davide Caratti 2021-02-12 1062 __skb_flow_dissect_ipv4(skb, flow_dissector,
d2126838050ccd Davide Caratti 2021-02-12 1063 target_container, data, iph);
d2126838050ccd Davide Caratti 2021-02-12 1064
807e165dc44fd9 Tom Herbert 2015-09-01 1065 if (ip_is_fragment(iph)) {
4b36993d3df083 David S. Miller 2015-09-01 1066 key_control->flags |= FLOW_DIS_IS_FRAGMENT;
807e165dc44fd9 Tom Herbert 2015-09-01 1067
807e165dc44fd9 Tom Herbert 2015-09-01 1068 if (iph->frag_off & htons(IP_OFFSET)) {
3a1214e8b06317 Tom Herbert 2017-09-01 1069 fdret = FLOW_DISSECT_RET_OUT_GOOD;
3a1214e8b06317 Tom Herbert 2017-09-01 1070 break;
807e165dc44fd9 Tom Herbert 2015-09-01 1071 } else {
4b36993d3df083 David S. Miller 2015-09-01 1072 key_control->flags |= FLOW_DIS_FIRST_FRAG;
3a1214e8b06317 Tom Herbert 2017-09-01 1073 if (!(flags &
3a1214e8b06317 Tom Herbert 2017-09-01 1074 FLOW_DISSECTOR_F_PARSE_1ST_FRAG)) {
3a1214e8b06317 Tom Herbert 2017-09-01 1075 fdret = FLOW_DISSECT_RET_OUT_GOOD;
3a1214e8b06317 Tom Herbert 2017-09-01 1076 break;
3a1214e8b06317 Tom Herbert 2017-09-01 1077 }
807e165dc44fd9 Tom Herbert 2015-09-01 1078 }
807e165dc44fd9 Tom Herbert 2015-09-01 1079 }
807e165dc44fd9 Tom Herbert 2015-09-01 1080
0744dd00c1b1be Eric Dumazet 2011-11-28 1081 break;
0744dd00c1b1be Eric Dumazet 2011-11-28 1082 }
2b8837aeaaa0bb Joe Perches 2014-03-12 1083 case htons(ETH_P_IPV6): {
0744dd00c1b1be Eric Dumazet 2011-11-28 1084 const struct ipv6hdr *iph;
0744dd00c1b1be Eric Dumazet 2011-11-28 1085 struct ipv6hdr _iph;
19469a873bafd4 Tom Herbert 2014-07-01 1086
690e36e726d00d David S. Miller 2014-08-23 1087 iph = __skb_header_pointer(skb, nhoff, sizeof(_iph), data, hlen, &_iph);
3a1214e8b06317 Tom Herbert 2017-09-01 1088 if (!iph) {
3a1214e8b06317 Tom Herbert 2017-09-01 1089 fdret = FLOW_DISSECT_RET_OUT_BAD;
3a1214e8b06317 Tom Herbert 2017-09-01 1090 break;
3a1214e8b06317 Tom Herbert 2017-09-01 1091 }
0744dd00c1b1be Eric Dumazet 2011-11-28 1092
0744dd00c1b1be Eric Dumazet 2011-11-28 1093 ip_proto = iph->nexthdr;
0744dd00c1b1be Eric Dumazet 2011-11-28 1094 nhoff += sizeof(struct ipv6hdr);
19469a873bafd4 Tom Herbert 2014-07-01 1095
20a17bf6c04e3e David S. Miller 2015-09-01 1096 if (dissector_uses_key(flow_dissector,
b924933cbbfbdc Jiri Pirko 2015-05-12 1097 FLOW_DISSECTOR_KEY_IPV6_ADDRS)) {
b3c3106ce3f464 Alexander Duyck 2016-02-24 1098 key_addrs = skb_flow_dissector_target(flow_dissector,
b924933cbbfbdc Jiri Pirko 2015-05-12 1099 FLOW_DISSECTOR_KEY_IPV6_ADDRS,
b924933cbbfbdc Jiri Pirko 2015-05-12 1100 target_container);
b924933cbbfbdc Jiri Pirko 2015-05-12 1101
b3c3106ce3f464 Alexander Duyck 2016-02-24 1102 memcpy(&key_addrs->v6addrs, &iph->saddr,
b3c3106ce3f464 Alexander Duyck 2016-02-24 1103 sizeof(key_addrs->v6addrs));
c3f8324188fa80 Tom Herbert 2015-06-04 1104 key_control->addr_type = FLOW_DISSECTOR_KEY_IPV6_ADDRS;
b924933cbbfbdc Jiri Pirko 2015-05-12 1105 }
87ee9e52ffeb16 Tom Herbert 2015-06-04 1106
461547f3158978 Alexander Duyck 2016-02-09 1107 if ((dissector_uses_key(flow_dissector,
461547f3158978 Alexander Duyck 2016-02-09 1108 FLOW_DISSECTOR_KEY_FLOW_LABEL) ||
461547f3158978 Alexander Duyck 2016-02-09 1109 (flags & FLOW_DISSECTOR_F_STOP_AT_FLOW_LABEL)) &&
461547f3158978 Alexander Duyck 2016-02-09 1110 ip6_flowlabel(iph)) {
461547f3158978 Alexander Duyck 2016-02-09 1111 __be32 flow_label = ip6_flowlabel(iph);
461547f3158978 Alexander Duyck 2016-02-09 1112
20a17bf6c04e3e David S. Miller 2015-09-01 1113 if (dissector_uses_key(flow_dissector,
87ee9e52ffeb16 Tom Herbert 2015-06-04 1114 FLOW_DISSECTOR_KEY_FLOW_LABEL)) {
87ee9e52ffeb16 Tom Herbert 2015-06-04 1115 key_tags = skb_flow_dissector_target(flow_dissector,
87ee9e52ffeb16 Tom Herbert 2015-06-04 1116 FLOW_DISSECTOR_KEY_FLOW_LABEL,
06635a35d13d42 Jiri Pirko 2015-05-12 1117 target_container);
87ee9e52ffeb16 Tom Herbert 2015-06-04 1118 key_tags->flow_label = ntohl(flow_label);
12c227ec89a70c Jiri Pirko 2015-05-22 1119 }
3a1214e8b06317 Tom Herbert 2017-09-01 1120 if (flags & FLOW_DISSECTOR_F_STOP_AT_FLOW_LABEL) {
3a1214e8b06317 Tom Herbert 2017-09-01 1121 fdret = FLOW_DISSECT_RET_OUT_GOOD;
3a1214e8b06317 Tom Herbert 2017-09-01 1122 break;
3a1214e8b06317 Tom Herbert 2017-09-01 1123 }
19469a873bafd4 Tom Herbert 2014-07-01 1124 }
19469a873bafd4 Tom Herbert 2014-07-01 1125
518d8a2e9bad83 Or Gerlitz 2017-06-01 1126 __skb_flow_dissect_ipv6(skb, flow_dissector,
518d8a2e9bad83 Or Gerlitz 2017-06-01 1127 target_container, data, iph);
518d8a2e9bad83 Or Gerlitz 2017-06-01 1128
0744dd00c1b1be Eric Dumazet 2011-11-28 1129 break;
0744dd00c1b1be Eric Dumazet 2011-11-28 1130 }
2b8837aeaaa0bb Joe Perches 2014-03-12 1131 case htons(ETH_P_8021AD):
2b8837aeaaa0bb Joe Perches 2014-03-12 1132 case htons(ETH_P_8021Q): {
24c590e3b0f9ee Jianbo Liu 2018-07-06 1133 const struct vlan_hdr *vlan = NULL;
bc72f3dd89e087 Arnd Bergmann 2016-10-24 1134 struct vlan_hdr _vlan;
2064c3d4c02026 Jianbo Liu 2018-07-06 1135 __be16 saved_vlan_tpid = proto;
d5709f7ab77679 Hadar Hen Zion 2016-08-17 1136
24c590e3b0f9ee Jianbo Liu 2018-07-06 1137 if (dissector_vlan == FLOW_DISSECTOR_KEY_MAX &&
24c590e3b0f9ee Jianbo Liu 2018-07-06 1138 skb && skb_vlan_tag_present(skb)) {
d5709f7ab77679 Hadar Hen Zion 2016-08-17 1139 proto = skb->protocol;
24c590e3b0f9ee Jianbo Liu 2018-07-06 1140 } else {
d5709f7ab77679 Hadar Hen Zion 2016-08-17 1141 vlan = __skb_header_pointer(skb, nhoff, sizeof(_vlan),
d5709f7ab77679 Hadar Hen Zion 2016-08-17 1142 data, hlen, &_vlan);
3a1214e8b06317 Tom Herbert 2017-09-01 1143 if (!vlan) {
3a1214e8b06317 Tom Herbert 2017-09-01 1144 fdret = FLOW_DISSECT_RET_OUT_BAD;
3a1214e8b06317 Tom Herbert 2017-09-01 1145 break;
3a1214e8b06317 Tom Herbert 2017-09-01 1146 }
3a1214e8b06317 Tom Herbert 2017-09-01 1147
d5709f7ab77679 Hadar Hen Zion 2016-08-17 1148 proto = vlan->h_vlan_encapsulated_proto;
d5709f7ab77679 Hadar Hen Zion 2016-08-17 1149 nhoff += sizeof(*vlan);
24c590e3b0f9ee Jianbo Liu 2018-07-06 1150 }
24c590e3b0f9ee Jianbo Liu 2018-07-06 1151
24c590e3b0f9ee Jianbo Liu 2018-07-06 1152 if (dissector_vlan == FLOW_DISSECTOR_KEY_MAX) {
24c590e3b0f9ee Jianbo Liu 2018-07-06 1153 dissector_vlan = FLOW_DISSECTOR_KEY_VLAN;
24c590e3b0f9ee Jianbo Liu 2018-07-06 1154 } else if (dissector_vlan == FLOW_DISSECTOR_KEY_VLAN) {
24c590e3b0f9ee Jianbo Liu 2018-07-06 1155 dissector_vlan = FLOW_DISSECTOR_KEY_CVLAN;
24c590e3b0f9ee Jianbo Liu 2018-07-06 1156 } else {
3a1214e8b06317 Tom Herbert 2017-09-01 1157 fdret = FLOW_DISSECT_RET_PROTO_AGAIN;
3a1214e8b06317 Tom Herbert 2017-09-01 1158 break;
3a1214e8b06317 Tom Herbert 2017-09-01 1159 }
0744dd00c1b1be Eric Dumazet 2011-11-28 1160
24c590e3b0f9ee Jianbo Liu 2018-07-06 1161 if (dissector_uses_key(flow_dissector, dissector_vlan)) {
f6a66927692e30 Hadar Hen Zion 2016-08-17 1162 key_vlan = skb_flow_dissector_target(flow_dissector,
24c590e3b0f9ee Jianbo Liu 2018-07-06 1163 dissector_vlan,
d34af823ff401c Tom Herbert 2015-06-04 1164 target_container);
d34af823ff401c Tom Herbert 2015-06-04 1165
24c590e3b0f9ee Jianbo Liu 2018-07-06 1166 if (!vlan) {
f6a66927692e30 Hadar Hen Zion 2016-08-17 1167 key_vlan->vlan_id = skb_vlan_tag_get_id(skb);
9b319148cb34ec Michał Mirosław 2018-11-07 1168 key_vlan->vlan_priority = skb_vlan_tag_get_prio(skb);
f6a66927692e30 Hadar Hen Zion 2016-08-17 1169 } else {
f6a66927692e30 Hadar Hen Zion 2016-08-17 1170 key_vlan->vlan_id = ntohs(vlan->h_vlan_TCI) &
d5709f7ab77679 Hadar Hen Zion 2016-08-17 1171 VLAN_VID_MASK;
f6a66927692e30 Hadar Hen Zion 2016-08-17 1172 key_vlan->vlan_priority =
f6a66927692e30 Hadar Hen Zion 2016-08-17 1173 (ntohs(vlan->h_vlan_TCI) &
f6a66927692e30 Hadar Hen Zion 2016-08-17 1174 VLAN_PRIO_MASK) >> VLAN_PRIO_SHIFT;
f6a66927692e30 Hadar Hen Zion 2016-08-17 1175 }
2064c3d4c02026 Jianbo Liu 2018-07-06 1176 key_vlan->vlan_tpid = saved_vlan_tpid;
d34af823ff401c Tom Herbert 2015-06-04 1177 }
d34af823ff401c Tom Herbert 2015-06-04 1178
3a1214e8b06317 Tom Herbert 2017-09-01 1179 fdret = FLOW_DISSECT_RET_PROTO_AGAIN;
3a1214e8b06317 Tom Herbert 2017-09-01 1180 break;
0744dd00c1b1be Eric Dumazet 2011-11-28 1181 }
2b8837aeaaa0bb Joe Perches 2014-03-12 1182 case htons(ETH_P_PPP_SES): {
0744dd00c1b1be Eric Dumazet 2011-11-28 1183 struct {
0744dd00c1b1be Eric Dumazet 2011-11-28 1184 struct pppoe_hdr hdr;
0744dd00c1b1be Eric Dumazet 2011-11-28 1185 __be16 proto;
0744dd00c1b1be Eric Dumazet 2011-11-28 1186 } *hdr, _hdr;
690e36e726d00d David S. Miller 2014-08-23 1187 hdr = __skb_header_pointer(skb, nhoff, sizeof(_hdr), data, hlen, &_hdr);
3a1214e8b06317 Tom Herbert 2017-09-01 1188 if (!hdr) {
3a1214e8b06317 Tom Herbert 2017-09-01 1189 fdret = FLOW_DISSECT_RET_OUT_BAD;
3a1214e8b06317 Tom Herbert 2017-09-01 1190 break;
3a1214e8b06317 Tom Herbert 2017-09-01 1191 }
3a1214e8b06317 Tom Herbert 2017-09-01 1192
0744dd00c1b1be Eric Dumazet 2011-11-28 1193 proto = hdr->proto;
0744dd00c1b1be Eric Dumazet 2011-11-28 1194 nhoff += PPPOE_SES_HLEN;
0744dd00c1b1be Eric Dumazet 2011-11-28 1195 switch (proto) {
2b8837aeaaa0bb Joe Perches 2014-03-12 1196 case htons(PPP_IP):
3a1214e8b06317 Tom Herbert 2017-09-01 1197 proto = htons(ETH_P_IP);
3a1214e8b06317 Tom Herbert 2017-09-01 1198 fdret = FLOW_DISSECT_RET_PROTO_AGAIN;
3a1214e8b06317 Tom Herbert 2017-09-01 1199 break;
2b8837aeaaa0bb Joe Perches 2014-03-12 1200 case htons(PPP_IPV6):
3a1214e8b06317 Tom Herbert 2017-09-01 1201 proto = htons(ETH_P_IPV6);
3a1214e8b06317 Tom Herbert 2017-09-01 1202 fdret = FLOW_DISSECT_RET_PROTO_AGAIN;
3a1214e8b06317 Tom Herbert 2017-09-01 1203 break;
0744dd00c1b1be Eric Dumazet 2011-11-28 1204 default:
3a1214e8b06317 Tom Herbert 2017-09-01 1205 fdret = FLOW_DISSECT_RET_OUT_BAD;
3a1214e8b06317 Tom Herbert 2017-09-01 1206 break;
0744dd00c1b1be Eric Dumazet 2011-11-28 1207 }
3a1214e8b06317 Tom Herbert 2017-09-01 1208 break;
0744dd00c1b1be Eric Dumazet 2011-11-28 1209 }
08bfc9cb76e26d Erik Hugne 2015-01-22 1210 case htons(ETH_P_TIPC): {
8d6e79d3ce13e3 Jon Maloy 2017-11-08 1211 struct tipc_basic_hdr *hdr, _hdr;
8d6e79d3ce13e3 Jon Maloy 2017-11-08 1212
8d6e79d3ce13e3 Jon Maloy 2017-11-08 1213 hdr = __skb_header_pointer(skb, nhoff, sizeof(_hdr),
8d6e79d3ce13e3 Jon Maloy 2017-11-08 1214 data, hlen, &_hdr);
3a1214e8b06317 Tom Herbert 2017-09-01 1215 if (!hdr) {
3a1214e8b06317 Tom Herbert 2017-09-01 1216 fdret = FLOW_DISSECT_RET_OUT_BAD;
3a1214e8b06317 Tom Herbert 2017-09-01 1217 break;
3a1214e8b06317 Tom Herbert 2017-09-01 1218 }
06635a35d13d42 Jiri Pirko 2015-05-12 1219
20a17bf6c04e3e David S. Miller 2015-09-01 1220 if (dissector_uses_key(flow_dissector,
8d6e79d3ce13e3 Jon Maloy 2017-11-08 1221 FLOW_DISSECTOR_KEY_TIPC)) {
06635a35d13d42 Jiri Pirko 2015-05-12 1222 key_addrs = skb_flow_dissector_target(flow_dissector,
8d6e79d3ce13e3 Jon Maloy 2017-11-08 1223 FLOW_DISSECTOR_KEY_TIPC,
06635a35d13d42 Jiri Pirko 2015-05-12 1224 target_container);
8d6e79d3ce13e3 Jon Maloy 2017-11-08 1225 key_addrs->tipckey.key = tipc_hdr_rps_key(hdr);
8d6e79d3ce13e3 Jon Maloy 2017-11-08 1226 key_control->addr_type = FLOW_DISSECTOR_KEY_TIPC;
06635a35d13d42 Jiri Pirko 2015-05-12 1227 }
3a1214e8b06317 Tom Herbert 2017-09-01 1228 fdret = FLOW_DISSECT_RET_OUT_GOOD;
3a1214e8b06317 Tom Herbert 2017-09-01 1229 break;
08bfc9cb76e26d Erik Hugne 2015-01-22 1230 }
b3baa0fbd02a1a Tom Herbert 2015-06-04 1231
b3baa0fbd02a1a Tom Herbert 2015-06-04 1232 case htons(ETH_P_MPLS_UC):
4a5d6c8b14b81e Jiri Pirko 2017-03-06 1233 case htons(ETH_P_MPLS_MC):
3a1214e8b06317 Tom Herbert 2017-09-01 1234 fdret = __skb_flow_dissect_mpls(skb, flow_dissector,
4a5d6c8b14b81e Jiri Pirko 2017-03-06 1235 target_container, data,
58cff782cc55eb Guillaume Nault 2020-05-26 1236 nhoff, hlen, mpls_lse,
58cff782cc55eb Guillaume Nault 2020-05-26 1237 &mpls_el);
58cff782cc55eb Guillaume Nault 2020-05-26 1238 nhoff += sizeof(struct mpls_label);
58cff782cc55eb Guillaume Nault 2020-05-26 1239 mpls_lse++;
3a1214e8b06317 Tom Herbert 2017-09-01 1240 break;
56193d1bce2b27 Alexander Duyck 2014-09-05 1241 case htons(ETH_P_FCOE):
3a1214e8b06317 Tom Herbert 2017-09-01 1242 if ((hlen - nhoff) < FCOE_HEADER_LEN) {
3a1214e8b06317 Tom Herbert 2017-09-01 1243 fdret = FLOW_DISSECT_RET_OUT_BAD;
3a1214e8b06317 Tom Herbert 2017-09-01 1244 break;
3a1214e8b06317 Tom Herbert 2017-09-01 1245 }
224516b3a798a0 Alexander Duyck 2016-02-24 1246
224516b3a798a0 Alexander Duyck 2016-02-24 1247 nhoff += FCOE_HEADER_LEN;
3a1214e8b06317 Tom Herbert 2017-09-01 1248 fdret = FLOW_DISSECT_RET_OUT_GOOD;
3a1214e8b06317 Tom Herbert 2017-09-01 1249 break;
55733350e5e8b7 Simon Horman 2017-01-11 1250
55733350e5e8b7 Simon Horman 2017-01-11 1251 case htons(ETH_P_ARP):
9bf881ffc5c0e6 Jiri Pirko 2017-03-06 1252 case htons(ETH_P_RARP):
3a1214e8b06317 Tom Herbert 2017-09-01 1253 fdret = __skb_flow_dissect_arp(skb, flow_dissector,
9bf881ffc5c0e6 Jiri Pirko 2017-03-06 1254 target_container, data,
3a1214e8b06317 Tom Herbert 2017-09-01 1255 nhoff, hlen);
3a1214e8b06317 Tom Herbert 2017-09-01 1256 break;
3a1214e8b06317 Tom Herbert 2017-09-01 1257
5b0890a9720462 Sven Eckelmann 2017-12-21 1258 case htons(ETH_P_BATMAN):
5b0890a9720462 Sven Eckelmann 2017-12-21 1259 fdret = __skb_flow_dissect_batadv(skb, key_control, data,
5b0890a9720462 Sven Eckelmann 2017-12-21 1260 &proto, &nhoff, hlen, flags);
5b0890a9720462 Sven Eckelmann 2017-12-21 1261 break;
5b0890a9720462 Sven Eckelmann 2017-12-21 1262
4f1cc51f34886d Eran Ben Elisha 2021-01-12 1263 case htons(ETH_P_1588): {
4f1cc51f34886d Eran Ben Elisha 2021-01-12 1264 struct ptp_header *hdr, _hdr;
4f1cc51f34886d Eran Ben Elisha 2021-01-12 1265
4f1cc51f34886d Eran Ben Elisha 2021-01-12 1266 hdr = __skb_header_pointer(skb, nhoff, sizeof(_hdr), data,
4f1cc51f34886d Eran Ben Elisha 2021-01-12 1267 hlen, &_hdr);
4f1cc51f34886d Eran Ben Elisha 2021-01-12 1268 if (!hdr) {
4f1cc51f34886d Eran Ben Elisha 2021-01-12 1269 fdret = FLOW_DISSECT_RET_OUT_BAD;
4f1cc51f34886d Eran Ben Elisha 2021-01-12 1270 break;
4f1cc51f34886d Eran Ben Elisha 2021-01-12 1271 }
4f1cc51f34886d Eran Ben Elisha 2021-01-12 1272
4f1cc51f34886d Eran Ben Elisha 2021-01-12 1273 nhoff += ntohs(hdr->message_length);
4f1cc51f34886d Eran Ben Elisha 2021-01-12 1274 fdret = FLOW_DISSECT_RET_OUT_GOOD;
4f1cc51f34886d Eran Ben Elisha 2021-01-12 1275 break;
4f1cc51f34886d Eran Ben Elisha 2021-01-12 1276 }
4f1cc51f34886d Eran Ben Elisha 2021-01-12 1277
3a1214e8b06317 Tom Herbert 2017-09-01 1278 default:
3a1214e8b06317 Tom Herbert 2017-09-01 1279 fdret = FLOW_DISSECT_RET_OUT_BAD;
3a1214e8b06317 Tom Herbert 2017-09-01 1280 break;
3a1214e8b06317 Tom Herbert 2017-09-01 1281 }
3a1214e8b06317 Tom Herbert 2017-09-01 1282
3a1214e8b06317 Tom Herbert 2017-09-01 1283 /* Process result of proto processing */
3a1214e8b06317 Tom Herbert 2017-09-01 1284 switch (fdret) {
9bf881ffc5c0e6 Jiri Pirko 2017-03-06 1285 case FLOW_DISSECT_RET_OUT_GOOD:
55733350e5e8b7 Simon Horman 2017-01-11 1286 goto out_good;
3a1214e8b06317 Tom Herbert 2017-09-01 1287 case FLOW_DISSECT_RET_PROTO_AGAIN:
1eed4dfb81b193 Tom Herbert 2017-09-01 1288 if (skb_flow_dissect_allowed(&num_hdrs))
3a1214e8b06317 Tom Herbert 2017-09-01 1289 goto proto_again;
1eed4dfb81b193 Tom Herbert 2017-09-01 1290 goto out_good;
3a1214e8b06317 Tom Herbert 2017-09-01 1291 case FLOW_DISSECT_RET_CONTINUE:
3a1214e8b06317 Tom Herbert 2017-09-01 1292 case FLOW_DISSECT_RET_IPPROTO_AGAIN:
3a1214e8b06317 Tom Herbert 2017-09-01 1293 break;
9bf881ffc5c0e6 Jiri Pirko 2017-03-06 1294 case FLOW_DISSECT_RET_OUT_BAD:
7c92de8eaabfff Jiri Pirko 2017-03-06 1295 default:
9bf881ffc5c0e6 Jiri Pirko 2017-03-06 1296 goto out_bad;
55733350e5e8b7 Simon Horman 2017-01-11 1297 }
0744dd00c1b1be Eric Dumazet 2011-11-28 1298
6a74fcf426f51a Tom Herbert 2015-06-12 1299 ip_proto_again:
3a1214e8b06317 Tom Herbert 2017-09-01 1300 fdret = FLOW_DISSECT_RET_CONTINUE;
3a1214e8b06317 Tom Herbert 2017-09-01 1301
0744dd00c1b1be Eric Dumazet 2011-11-28 1302 switch (ip_proto) {
7c92de8eaabfff Jiri Pirko 2017-03-06 1303 case IPPROTO_GRE:
3a1214e8b06317 Tom Herbert 2017-09-01 1304 fdret = __skb_flow_dissect_gre(skb, key_control, flow_dissector,
7c92de8eaabfff Jiri Pirko 2017-03-06 1305 target_container, data,
3a1214e8b06317 Tom Herbert 2017-09-01 1306 &proto, &nhoff, &hlen, flags);
3a1214e8b06317 Tom Herbert 2017-09-01 1307 break;
3a1214e8b06317 Tom Herbert 2017-09-01 1308
6a74fcf426f51a Tom Herbert 2015-06-12 1309 case NEXTHDR_HOP:
6a74fcf426f51a Tom Herbert 2015-06-12 1310 case NEXTHDR_ROUTING:
6a74fcf426f51a Tom Herbert 2015-06-12 1311 case NEXTHDR_DEST: {
6a74fcf426f51a Tom Herbert 2015-06-12 1312 u8 _opthdr[2], *opthdr;
6a74fcf426f51a Tom Herbert 2015-06-12 1313
6a74fcf426f51a Tom Herbert 2015-06-12 1314 if (proto != htons(ETH_P_IPV6))
6a74fcf426f51a Tom Herbert 2015-06-12 1315 break;
6a74fcf426f51a Tom Herbert 2015-06-12 1316
6a74fcf426f51a Tom Herbert 2015-06-12 1317 opthdr = __skb_header_pointer(skb, nhoff, sizeof(_opthdr),
6a74fcf426f51a Tom Herbert 2015-06-12 1318 data, hlen, &_opthdr);
3a1214e8b06317 Tom Herbert 2017-09-01 1319 if (!opthdr) {
3a1214e8b06317 Tom Herbert 2017-09-01 1320 fdret = FLOW_DISSECT_RET_OUT_BAD;
3a1214e8b06317 Tom Herbert 2017-09-01 1321 break;
3a1214e8b06317 Tom Herbert 2017-09-01 1322 }
6a74fcf426f51a Tom Herbert 2015-06-12 1323
1e98a0f08abddd Eric Dumazet 2015-06-12 1324 ip_proto = opthdr[0];
1e98a0f08abddd Eric Dumazet 2015-06-12 1325 nhoff += (opthdr[1] + 1) << 3;
6a74fcf426f51a Tom Herbert 2015-06-12 1326
3a1214e8b06317 Tom Herbert 2017-09-01 1327 fdret = FLOW_DISSECT_RET_IPPROTO_AGAIN;
3a1214e8b06317 Tom Herbert 2017-09-01 1328 break;
6a74fcf426f51a Tom Herbert 2015-06-12 1329 }
b840f28b908da0 Tom Herbert 2015-09-01 1330 case NEXTHDR_FRAGMENT: {
b840f28b908da0 Tom Herbert 2015-09-01 1331 struct frag_hdr _fh, *fh;
b840f28b908da0 Tom Herbert 2015-09-01 1332
b840f28b908da0 Tom Herbert 2015-09-01 1333 if (proto != htons(ETH_P_IPV6))
b840f28b908da0 Tom Herbert 2015-09-01 1334 break;
b840f28b908da0 Tom Herbert 2015-09-01 1335
b840f28b908da0 Tom Herbert 2015-09-01 1336 fh = __skb_header_pointer(skb, nhoff, sizeof(_fh),
b840f28b908da0 Tom Herbert 2015-09-01 1337 data, hlen, &_fh);
b840f28b908da0 Tom Herbert 2015-09-01 1338
3a1214e8b06317 Tom Herbert 2017-09-01 1339 if (!fh) {
3a1214e8b06317 Tom Herbert 2017-09-01 1340 fdret = FLOW_DISSECT_RET_OUT_BAD;
3a1214e8b06317 Tom Herbert 2017-09-01 1341 break;
3a1214e8b06317 Tom Herbert 2017-09-01 1342 }
b840f28b908da0 Tom Herbert 2015-09-01 1343
4b36993d3df083 David S. Miller 2015-09-01 1344 key_control->flags |= FLOW_DIS_IS_FRAGMENT;
b840f28b908da0 Tom Herbert 2015-09-01 1345
b840f28b908da0 Tom Herbert 2015-09-01 1346 nhoff += sizeof(_fh);
43d2ccb3c122a4 Alexander Duyck 2016-02-24 1347 ip_proto = fh->nexthdr;
b840f28b908da0 Tom Herbert 2015-09-01 1348
b840f28b908da0 Tom Herbert 2015-09-01 1349 if (!(fh->frag_off & htons(IP6_OFFSET))) {
4b36993d3df083 David S. Miller 2015-09-01 1350 key_control->flags |= FLOW_DIS_FIRST_FRAG;
3a1214e8b06317 Tom Herbert 2017-09-01 1351 if (flags & FLOW_DISSECTOR_F_PARSE_1ST_FRAG) {
3a1214e8b06317 Tom Herbert 2017-09-01 1352 fdret = FLOW_DISSECT_RET_IPPROTO_AGAIN;
3a1214e8b06317 Tom Herbert 2017-09-01 1353 break;
b840f28b908da0 Tom Herbert 2015-09-01 1354 }
3a1214e8b06317 Tom Herbert 2017-09-01 1355 }
3a1214e8b06317 Tom Herbert 2017-09-01 1356
3a1214e8b06317 Tom Herbert 2017-09-01 1357 fdret = FLOW_DISSECT_RET_OUT_GOOD;
3a1214e8b06317 Tom Herbert 2017-09-01 1358 break;
b840f28b908da0 Tom Herbert 2015-09-01 1359 }
0744dd00c1b1be Eric Dumazet 2011-11-28 1360 case IPPROTO_IPIP:
fca418955148e4 Tom Herbert 2013-07-29 1361 proto = htons(ETH_P_IP);
823b96939578ea Tom Herbert 2015-09-01 1362
4b36993d3df083 David S. Miller 2015-09-01 1363 key_control->flags |= FLOW_DIS_ENCAPSULATION;
3a1214e8b06317 Tom Herbert 2017-09-01 1364 if (flags & FLOW_DISSECTOR_F_STOP_AT_ENCAP) {
3a1214e8b06317 Tom Herbert 2017-09-01 1365 fdret = FLOW_DISSECT_RET_OUT_GOOD;
3a1214e8b06317 Tom Herbert 2017-09-01 1366 break;
3a1214e8b06317 Tom Herbert 2017-09-01 1367 }
3a1214e8b06317 Tom Herbert 2017-09-01 1368
3a1214e8b06317 Tom Herbert 2017-09-01 1369 fdret = FLOW_DISSECT_RET_PROTO_AGAIN;
3a1214e8b06317 Tom Herbert 2017-09-01 1370 break;
823b96939578ea Tom Herbert 2015-09-01 1371
b438f940d3541f Tom Herbert 2013-07-29 1372 case IPPROTO_IPV6:
b438f940d3541f Tom Herbert 2013-07-29 1373 proto = htons(ETH_P_IPV6);
823b96939578ea Tom Herbert 2015-09-01 1374
4b36993d3df083 David S. Miller 2015-09-01 1375 key_control->flags |= FLOW_DIS_ENCAPSULATION;
3a1214e8b06317 Tom Herbert 2017-09-01 1376 if (flags & FLOW_DISSECTOR_F_STOP_AT_ENCAP) {
3a1214e8b06317 Tom Herbert 2017-09-01 1377 fdret = FLOW_DISSECT_RET_OUT_GOOD;
3a1214e8b06317 Tom Herbert 2017-09-01 1378 break;
3a1214e8b06317 Tom Herbert 2017-09-01 1379 }
3a1214e8b06317 Tom Herbert 2017-09-01 1380
3a1214e8b06317 Tom Herbert 2017-09-01 1381 fdret = FLOW_DISSECT_RET_PROTO_AGAIN;
3a1214e8b06317 Tom Herbert 2017-09-01 1382 break;
3a1214e8b06317 Tom Herbert 2017-09-01 1383
823b96939578ea Tom Herbert 2015-09-01 1384
b3baa0fbd02a1a Tom Herbert 2015-06-04 1385 case IPPROTO_MPLS:
b3baa0fbd02a1a Tom Herbert 2015-06-04 1386 proto = htons(ETH_P_MPLS_UC);
3a1214e8b06317 Tom Herbert 2017-09-01 1387 fdret = FLOW_DISSECT_RET_PROTO_AGAIN;
3a1214e8b06317 Tom Herbert 2017-09-01 1388 break;
3a1214e8b06317 Tom Herbert 2017-09-01 1389
ac4bb5de27010e Jiri Pirko 2017-05-23 1390 case IPPROTO_TCP:
ac4bb5de27010e Jiri Pirko 2017-05-23 1391 __skb_flow_dissect_tcp(skb, flow_dissector, target_container,
ac4bb5de27010e Jiri Pirko 2017-05-23 1392 data, nhoff, hlen);
ac4bb5de27010e Jiri Pirko 2017-05-23 1393 break;
3a1214e8b06317 Tom Herbert 2017-09-01 1394
3b336d6f4ec690 Matteo Croce 2019-10-29 1395 case IPPROTO_ICMP:
3b336d6f4ec690 Matteo Croce 2019-10-29 1396 case IPPROTO_ICMPV6:
3b336d6f4ec690 Matteo Croce 2019-10-29 1397 __skb_flow_dissect_icmp(skb, flow_dissector, target_container,
3b336d6f4ec690 Matteo Croce 2019-10-29 1398 data, nhoff, hlen);
3b336d6f4ec690 Matteo Croce 2019-10-29 1399 break;
3b336d6f4ec690 Matteo Croce 2019-10-29 1400
0744dd00c1b1be Eric Dumazet 2011-11-28 1401 default:
0744dd00c1b1be Eric Dumazet 2011-11-28 1402 break;
0744dd00c1b1be Eric Dumazet 2011-11-28 1403 }
0744dd00c1b1be Eric Dumazet 2011-11-28 1404
8ffb055beae585 Yoshiki Komachi 2019-12-03 1405 if (!(key_control->flags & FLOW_DIS_IS_FRAGMENT))
8ffb055beae585 Yoshiki Komachi 2019-12-03 1406 __skb_flow_dissect_ports(skb, flow_dissector, target_container,
8ffb055beae585 Yoshiki Komachi 2019-12-03 1407 data, nhoff, ip_proto, hlen);
5af7fb6e3e92c2 Alexander Duyck 2014-10-10 1408
3a1214e8b06317 Tom Herbert 2017-09-01 1409 /* Process result of IP proto processing */
3a1214e8b06317 Tom Herbert 2017-09-01 1410 switch (fdret) {
3a1214e8b06317 Tom Herbert 2017-09-01 1411 case FLOW_DISSECT_RET_PROTO_AGAIN:
1eed4dfb81b193 Tom Herbert 2017-09-01 1412 if (skb_flow_dissect_allowed(&num_hdrs))
3a1214e8b06317 Tom Herbert 2017-09-01 1413 goto proto_again;
1eed4dfb81b193 Tom Herbert 2017-09-01 1414 break;
3a1214e8b06317 Tom Herbert 2017-09-01 1415 case FLOW_DISSECT_RET_IPPROTO_AGAIN:
1eed4dfb81b193 Tom Herbert 2017-09-01 1416 if (skb_flow_dissect_allowed(&num_hdrs))
3a1214e8b06317 Tom Herbert 2017-09-01 1417 goto ip_proto_again;
1eed4dfb81b193 Tom Herbert 2017-09-01 1418 break;
3a1214e8b06317 Tom Herbert 2017-09-01 1419 case FLOW_DISSECT_RET_OUT_GOOD:
3a1214e8b06317 Tom Herbert 2017-09-01 1420 case FLOW_DISSECT_RET_CONTINUE:
3a1214e8b06317 Tom Herbert 2017-09-01 1421 break;
3a1214e8b06317 Tom Herbert 2017-09-01 1422 case FLOW_DISSECT_RET_OUT_BAD:
3a1214e8b06317 Tom Herbert 2017-09-01 1423 default:
3a1214e8b06317 Tom Herbert 2017-09-01 1424 goto out_bad;
3a1214e8b06317 Tom Herbert 2017-09-01 1425 }
3a1214e8b06317 Tom Herbert 2017-09-01 1426
a6e544b0a88b53 Tom Herbert 2015-09-01 1427 out_good:
a6e544b0a88b53 Tom Herbert 2015-09-01 1428 ret = true;
a6e544b0a88b53 Tom Herbert 2015-09-01 1429
34fad54c2537f7 Eric Dumazet 2016-11-09 1430 out:
d0c081b49137cd Eric Dumazet 2018-01-17 1431 key_control->thoff = min_t(u16, nhoff, skb ? skb->len : hlen);
a6e544b0a88b53 Tom Herbert 2015-09-01 1432 key_basic->n_proto = proto;
a6e544b0a88b53 Tom Herbert 2015-09-01 1433 key_basic->ip_proto = ip_proto;
a6e544b0a88b53 Tom Herbert 2015-09-01 1434
a6e544b0a88b53 Tom Herbert 2015-09-01 1435 return ret;
34fad54c2537f7 Eric Dumazet 2016-11-09 1436
34fad54c2537f7 Eric Dumazet 2016-11-09 1437 out_bad:
34fad54c2537f7 Eric Dumazet 2016-11-09 1438 ret = false;
34fad54c2537f7 Eric Dumazet 2016-11-09 1439 goto out;
0744dd00c1b1be Eric Dumazet 2011-11-28 1440 }
690e36e726d00d David S. Miller 2014-08-23 1441 EXPORT_SYMBOL(__skb_flow_dissect);
441d9d327f1e77 Cong Wang 2013-01-21 1442
:::::: The code at line 835 was first introduced by commit
:::::: d58e468b1112dcd1d5193c0a89ff9f98b5a3e8b9 flow_dissector: implements flow dissector BPF hook
:::::: TO: Petar Penkov <ppenkov(a)google.com>
:::::: CC: Alexei Starovoitov <ast(a)kernel.org>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
1 year, 5 months
[peterz-queue:sched/core-sched 27/29] kernel/sched/core.c:9497:11: error: implicit declaration of function 'sched_core_cgroup_cookie'
by kernel test robot
tree: https://git.kernel.org/pub/scm/linux/kernel/git/peterz/queue.git sched/core-sched
head: b417ddaf222294bcc35e9857105ab37d9b0fd715
commit: 7841ce54261f3c407cf52de13712261521ae9403 [27/29] sched: Cgroup core-scheduling interface
config: powerpc64-randconfig-r002-20210414 (attached as .config)
compiler: clang version 13.0.0 (https://github.com/llvm/llvm-project 9829f5e6b1bca9b61efc629770d28bb9014dec45)
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 powerpc64 cross compiling tool for clang build
# apt-get install binutils-powerpc64-linux-gnu
# https://git.kernel.org/pub/scm/linux/kernel/git/peterz/queue.git/commit/?...
git remote add peterz-queue https://git.kernel.org/pub/scm/linux/kernel/git/peterz/queue.git
git fetch --no-tags peterz-queue sched/core-sched
git checkout 7841ce54261f3c407cf52de13712261521ae9403
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 ARCH=powerpc64
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 >>):
#define __do_insw(p, b, n) readsw((PCI_IO_ADDR)_IO_BASE+(p), (b), (n))
~~~~~~~~~~~~~~~~~~~~~^
In file included from kernel/sched/core.c:10:
In file included from include/trace/events/sched.h:740:
In file included from include/trace/define_trace.h:102:
In file included from include/trace/trace_events.h:21:
In file included from include/linux/trace_events.h:9:
In file included from include/linux/hardirq.h:10:
In file included from arch/powerpc/include/asm/hardirq.h:6:
In file included from include/linux/irq.h:20:
In file included from include/linux/io.h:13:
In file included from arch/powerpc/include/asm/io.h:619:
arch/powerpc/include/asm/io-defs.h:47:1: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
DEF_PCI_AC_NORET(insl, (unsigned long p, void *b, unsigned long c),
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
arch/powerpc/include/asm/io.h:616:3: note: expanded from macro 'DEF_PCI_AC_NORET'
__do_##name al; \
^~~~~~~~~~~~~~
<scratch space>:97:1: note: expanded from here
__do_insl
^
arch/powerpc/include/asm/io.h:558:56: note: expanded from macro '__do_insl'
#define __do_insl(p, b, n) readsl((PCI_IO_ADDR)_IO_BASE+(p), (b), (n))
~~~~~~~~~~~~~~~~~~~~~^
In file included from kernel/sched/core.c:10:
In file included from include/trace/events/sched.h:740:
In file included from include/trace/define_trace.h:102:
In file included from include/trace/trace_events.h:21:
In file included from include/linux/trace_events.h:9:
In file included from include/linux/hardirq.h:10:
In file included from arch/powerpc/include/asm/hardirq.h:6:
In file included from include/linux/irq.h:20:
In file included from include/linux/io.h:13:
In file included from arch/powerpc/include/asm/io.h:619:
arch/powerpc/include/asm/io-defs.h:49:1: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
DEF_PCI_AC_NORET(outsb, (unsigned long p, const void *b, unsigned long c),
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
arch/powerpc/include/asm/io.h:616:3: note: expanded from macro 'DEF_PCI_AC_NORET'
__do_##name al; \
^~~~~~~~~~~~~~
<scratch space>:99:1: note: expanded from here
__do_outsb
^
arch/powerpc/include/asm/io.h:559:58: note: expanded from macro '__do_outsb'
#define __do_outsb(p, b, n) writesb((PCI_IO_ADDR)_IO_BASE+(p),(b),(n))
~~~~~~~~~~~~~~~~~~~~~^
In file included from kernel/sched/core.c:10:
In file included from include/trace/events/sched.h:740:
In file included from include/trace/define_trace.h:102:
In file included from include/trace/trace_events.h:21:
In file included from include/linux/trace_events.h:9:
In file included from include/linux/hardirq.h:10:
In file included from arch/powerpc/include/asm/hardirq.h:6:
In file included from include/linux/irq.h:20:
In file included from include/linux/io.h:13:
In file included from arch/powerpc/include/asm/io.h:619:
arch/powerpc/include/asm/io-defs.h:51:1: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
DEF_PCI_AC_NORET(outsw, (unsigned long p, const void *b, unsigned long c),
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
arch/powerpc/include/asm/io.h:616:3: note: expanded from macro 'DEF_PCI_AC_NORET'
__do_##name al; \
^~~~~~~~~~~~~~
<scratch space>:101:1: note: expanded from here
__do_outsw
^
arch/powerpc/include/asm/io.h:560:58: note: expanded from macro '__do_outsw'
#define __do_outsw(p, b, n) writesw((PCI_IO_ADDR)_IO_BASE+(p),(b),(n))
~~~~~~~~~~~~~~~~~~~~~^
In file included from kernel/sched/core.c:10:
In file included from include/trace/events/sched.h:740:
In file included from include/trace/define_trace.h:102:
In file included from include/trace/trace_events.h:21:
In file included from include/linux/trace_events.h:9:
In file included from include/linux/hardirq.h:10:
In file included from arch/powerpc/include/asm/hardirq.h:6:
In file included from include/linux/irq.h:20:
In file included from include/linux/io.h:13:
In file included from arch/powerpc/include/asm/io.h:619:
arch/powerpc/include/asm/io-defs.h:53:1: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
DEF_PCI_AC_NORET(outsl, (unsigned long p, const void *b, unsigned long c),
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
arch/powerpc/include/asm/io.h:616:3: note: expanded from macro 'DEF_PCI_AC_NORET'
__do_##name al; \
^~~~~~~~~~~~~~
<scratch space>:103:1: note: expanded from here
__do_outsl
^
arch/powerpc/include/asm/io.h:561:58: note: expanded from macro '__do_outsl'
#define __do_outsl(p, b, n) writesl((PCI_IO_ADDR)_IO_BASE+(p),(b),(n))
~~~~~~~~~~~~~~~~~~~~~^
kernel/sched/core.c:9359:2: error: implicit declaration of function 'sched_core_cgroup_free' [-Werror,-Wimplicit-function-declaration]
sched_core_cgroup_free(tg);
^
kernel/sched/core.c:9359:2: note: did you mean 'sched_core_free'?
include/linux/sched.h:2176:20: note: 'sched_core_free' declared here
static inline void sched_core_free(struct task_struct *tsk) { }
^
kernel/sched/core.c:9404:2: error: implicit declaration of function 'sched_core_cgroup_online' [-Werror,-Wimplicit-function-declaration]
sched_core_cgroup_online(parent, tg);
^
>> kernel/sched/core.c:9497:11: error: implicit declaration of function 'sched_core_cgroup_cookie' [-Werror,-Wimplicit-function-declaration]
cookie = sched_core_cgroup_cookie(tsk->sched_task_group);
^
kernel/sched/core.c:9498:11: error: implicit declaration of function 'sched_core_update_cookie' [-Werror,-Wimplicit-function-declaration]
cookie = sched_core_update_cookie(tsk, cookie);
^
kernel/sched/core.c:9498:11: note: did you mean 'sched_core_cgroup_cookie'?
kernel/sched/core.c:9497:11: note: 'sched_core_cgroup_cookie' declared here
cookie = sched_core_cgroup_cookie(tsk->sched_task_group);
^
kernel/sched/core.c:9499:2: error: implicit declaration of function 'sched_core_put_cookie' [-Werror,-Wimplicit-function-declaration]
sched_core_put_cookie(cookie);
^
kernel/sched/core.c:9499:2: note: did you mean 'sched_core_update_cookie'?
kernel/sched/core.c:9498:11: note: 'sched_core_update_cookie' declared here
cookie = sched_core_update_cookie(tsk, cookie);
^
12 warnings and 5 errors generated.
vim +/sched_core_cgroup_cookie +9497 kernel/sched/core.c
9353
9354 static void sched_free_group(struct task_group *tg)
9355 {
9356 free_fair_sched_group(tg);
9357 free_rt_sched_group(tg);
9358 autogroup_free(tg);
> 9359 sched_core_cgroup_free(tg);
9360 kmem_cache_free(task_group_cache, tg);
9361 }
9362
9363 /* allocate runqueue etc for a new task group */
9364 struct task_group *sched_create_group(struct task_group *parent)
9365 {
9366 struct task_group *tg;
9367
9368 tg = kmem_cache_alloc(task_group_cache, GFP_KERNEL | __GFP_ZERO);
9369 if (!tg)
9370 return ERR_PTR(-ENOMEM);
9371
9372 if (!alloc_fair_sched_group(tg, parent))
9373 goto err;
9374
9375 if (!alloc_rt_sched_group(tg, parent))
9376 goto err;
9377
9378 alloc_uclamp_sched_group(tg, parent);
9379
9380 return tg;
9381
9382 err:
9383 sched_free_group(tg);
9384 return ERR_PTR(-ENOMEM);
9385 }
9386
9387 void sched_online_group(struct task_group *tg, struct task_group *parent)
9388 {
9389 unsigned long flags;
9390
9391 spin_lock_irqsave(&task_group_lock, flags);
9392 list_add_rcu(&tg->list, &task_groups);
9393
9394 /* Root should already exist: */
9395 WARN_ON(!parent);
9396
9397 tg->parent = parent;
9398 INIT_LIST_HEAD(&tg->children);
9399 list_add_rcu(&tg->siblings, &parent->children);
9400 spin_unlock_irqrestore(&task_group_lock, flags);
9401
9402 online_fair_sched_group(tg);
9403
9404 sched_core_cgroup_online(parent, tg);
9405 }
9406
9407 /* rcu callback to free various structures associated with a task group */
9408 static void sched_free_group_rcu(struct rcu_head *rhp)
9409 {
9410 /* Now it should be safe to free those cfs_rqs: */
9411 sched_free_group(container_of(rhp, struct task_group, rcu));
9412 }
9413
9414 void sched_destroy_group(struct task_group *tg)
9415 {
9416 /* Wait for possible concurrent references to cfs_rqs complete: */
9417 call_rcu(&tg->rcu, sched_free_group_rcu);
9418 }
9419
9420 void sched_offline_group(struct task_group *tg)
9421 {
9422 unsigned long flags;
9423
9424 /* End participation in shares distribution: */
9425 unregister_fair_sched_group(tg);
9426
9427 spin_lock_irqsave(&task_group_lock, flags);
9428 list_del_rcu(&tg->list);
9429 list_del_rcu(&tg->siblings);
9430 spin_unlock_irqrestore(&task_group_lock, flags);
9431 }
9432
9433 static void sched_change_group(struct task_struct *tsk, int type)
9434 {
9435 struct task_group *tg;
9436
9437 /*
9438 * All callers are synchronized by task_rq_lock(); we do not use RCU
9439 * which is pointless here. Thus, we pass "true" to task_css_check()
9440 * to prevent lockdep warnings.
9441 */
9442 tg = container_of(task_css_check(tsk, cpu_cgrp_id, true),
9443 struct task_group, css);
9444 tg = autogroup_task_group(tsk, tg);
9445 tsk->sched_task_group = tg;
9446
9447 #ifdef CONFIG_FAIR_GROUP_SCHED
9448 if (tsk->sched_class->task_change_group)
9449 tsk->sched_class->task_change_group(tsk, type);
9450 else
9451 #endif
9452 set_task_rq(tsk, task_cpu(tsk));
9453 }
9454
9455 /*
9456 * Change task's runqueue when it moves between groups.
9457 *
9458 * The caller of this function should have put the task in its new group by
9459 * now. This function just updates tsk->se.cfs_rq and tsk->se.parent to reflect
9460 * its new group.
9461 */
9462 void sched_move_task(struct task_struct *tsk)
9463 {
9464 int queued, running, queue_flags =
9465 DEQUEUE_SAVE | DEQUEUE_MOVE | DEQUEUE_NOCLOCK;
9466 unsigned long cookie;
9467 struct rq_flags rf;
9468 struct rq *rq;
9469
9470 rq = task_rq_lock(tsk, &rf);
9471 update_rq_clock(rq);
9472
9473 running = task_current(rq, tsk);
9474 queued = task_on_rq_queued(tsk);
9475
9476 if (queued)
9477 dequeue_task(rq, tsk, queue_flags);
9478 if (running)
9479 put_prev_task(rq, tsk);
9480
9481 sched_change_group(tsk, TASK_MOVE_GROUP);
9482
9483 if (queued)
9484 enqueue_task(rq, tsk, queue_flags);
9485 if (running) {
9486 set_next_task(rq, tsk);
9487 /*
9488 * After changing group, the running task may have joined a
9489 * throttled one but it's still the running task. Trigger a
9490 * resched to make sure that task can still run.
9491 */
9492 resched_curr(rq);
9493 }
9494
9495 task_rq_unlock(rq, tsk, &rf);
9496
> 9497 cookie = sched_core_cgroup_cookie(tsk->sched_task_group);
9498 cookie = sched_core_update_cookie(tsk, cookie);
9499 sched_core_put_cookie(cookie);
9500 }
9501
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
1 year, 5 months
[gustavoars-linux:testing/warray-bounds 1/10] arch/alpha/include/asm/string.h:22:16: warning: '__builtin_memcpy' offset [3, 64] from the object at 'report' is out of the bounds of referenced subobject 'report' with type 'unsigned char' at offset 1
by kernel test robot
tree: https://git.kernel.org/pub/scm/linux/kernel/git/gustavoars/linux.git testing/warray-bounds
head: 4695107c157dd670a5fc1b1d3ccbfdc440caca24
commit: 06f7d86a7f517e6ce30162d18a7eef3ed192282a [1/10] Makefile: Enable -Warray-bounds
config: alpha-randconfig-r032-20210414 (attached as .config)
compiler: alpha-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
# https://git.kernel.org/pub/scm/linux/kernel/git/gustavoars/linux.git/comm...
git remote add gustavoars-linux https://git.kernel.org/pub/scm/linux/kernel/git/gustavoars/linux.git
git fetch --no-tags gustavoars-linux testing/warray-bounds
git checkout 06f7d86a7f517e6ce30162d18a7eef3ed192282a
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross W=1 ARCH=alpha
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 >>):
In file included from include/linux/string.h:21,
from include/linux/bitmap.h:10,
from include/linux/cpumask.h:12,
from include/linux/smp.h:13,
from include/linux/lockdep.h:14,
from include/linux/rcupdate.h:29,
from include/linux/rculist.h:11,
from include/linux/pid.h:5,
from include/linux/sched.h:14,
from include/linux/ratelimit.h:6,
from include/linux/dev_printk.h:16,
from include/linux/device.h:15,
from include/linux/gpio/driver.h:5,
from drivers/hid/hid-cp2112.c:21:
In function 'cp2112_hid_get',
inlined from 'pstr_show' at drivers/hid/hid-cp2112.c:989:8:
>> arch/alpha/include/asm/string.h:22:16: warning: '__builtin_memcpy' offset [3, 64] from the object at 'report' is out of the bounds of referenced subobject 'report' with type 'unsigned char' at offset 1 [-Warray-bounds]
22 | #define memcpy __builtin_memcpy
drivers/hid/hid-cp2112.c:333:2: note: in expansion of macro 'memcpy'
333 | memcpy(data, buf, count);
| ^~~~~~
vim +22 arch/alpha/include/asm/string.h
^1da177e4c3f41 include/asm-alpha/string.h Linus Torvalds 2005-04-16 21
^1da177e4c3f41 include/asm-alpha/string.h Linus Torvalds 2005-04-16 @22 #define memcpy __builtin_memcpy
^1da177e4c3f41 include/asm-alpha/string.h Linus Torvalds 2005-04-16 23
:::::: The code at line 22 was first introduced by commit
:::::: 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 Linux-2.6.12-rc2
:::::: TO: Linus Torvalds <torvalds(a)ppc970.osdl.org>
:::::: CC: Linus Torvalds <torvalds(a)ppc970.osdl.org>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
1 year, 5 months