Re: [PATCH net v2] net: stmmac: fix oops when split header is enabled
From: kernel test robot <hidden>
Date: 2026-02-07 01:47:30
Also in:
linux-arm-kernel, lkml, llvm, oe-kbuild-all
Hi Jie, kernel test robot noticed the following build errors: [auto build test ERROR on net/main] url: https://github.com/intel-lab-lkp/linux/commits/Jie-Zhang/net-stmmac-fix-oops-when-split-header-is-enabled/20260207-035916 base: net/main patch link: https://lore.kernel.org/r/20260206195643.11333-1-jie.zhang%40analog.com patch subject: [PATCH net v2] net: stmmac: fix oops when split header is enabled config: x86_64-kexec (https://download.01.org/0day-ci/archive/20260207/202602070944.47xACYer-lkp@intel.com/config) compiler: clang version 20.1.8 (https://github.com/llvm/llvm-project 87f0227cb60147a26a1eeb4fb06e3b505e9c7261) reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260207/202602070944.47xACYer-lkp@intel.com/reproduce) If you fix the issue in a separate patch/commit (i.e. not just a new version of the same patch/commit), kindly add following tags | Reported-by: kernel test robot [off-list ref] | Closes: https://lore.kernel.org/oe-kbuild-all/202602070944.47xACYer-lkp@intel.com/ (local) All errors (new ones prefixed by >>):
quoted
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:5041:19: error: no member named 'has_gmac4' in 'struct plat_stmmacenet_data'
5041 | if (!priv->plat->has_gmac4 && (status & rx_not_ls))
| ~~~~~~~~~~ ^
1 error generated.
vim +5041 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
5014
5015 static unsigned int stmmac_rx_buf2_len(struct stmmac_priv *priv,
5016 struct dma_desc *p,
5017 int status, unsigned int len)
5018 {
5019 int coe = priv->hw->rx_csum;
5020 unsigned int plen = 0;
5021
5022 /* Not split header, buffer is not available */
5023 if (!priv->sph_active)
5024 return 0;
5025
5026 /* For GMAC4, when split header is enabled, in some rare cases, the
5027 * hardware does not fill buf2 of the first descriptor with payload.
5028 * Thus we cannot assume buf2 is always fully filled if it is not
5029 * the last descriptor. Otherwise, the length of buf2 of the second
5030 * descriptor will be calculated wrong and cause an oops.
5031 *
5032 * If this is the last descriptor, 'plen' is the length of the
5033 * received packet that was transferred to system memory.
5034 * Otherwise, it is the accumulated number of bytes that have been
5035 * transferred for the current packet.
5036 *
5037 * Thus 'plen - len' always gives the correct length of buf2.
5038 */
5039
5040 /* Not GMAC4 and not last descriptor */5041 if (!priv->plat->has_gmac4 && (status & rx_not_ls))
5042 return priv->dma_conf.dma_buf_sz; 5043 5044 /* GMAC4 or last descriptor */ 5045 plen = stmmac_get_rx_frame_len(priv, p, coe); 5046 5047 return plen - len; 5048 } 5049 -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki