[PATCH net v2] net: stmmac: fix oops when split header is enabled
kernel test robot
lkp at intel.com
Mon Feb 9 05:55:33 PST 2026
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-rhel-9.4-ltp (https://download.01.org/0day-ci/archive/20260209/202602091406.tg5t31a5-lkp@intel.com/config)
compiler: gcc-14 (Debian 14.2.0-19) 14.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260209/202602091406.tg5t31a5-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 <lkp at intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202602091406.tg5t31a5-lkp@intel.com/
All errors (new ones prefixed by >>):
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c: In function 'stmmac_rx_buf2_len':
>> drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:5041:24: error: 'struct plat_stmmacenet_data' has no member named 'has_gmac4'
5041 | if (!priv->plat->has_gmac4 && (status & rx_not_ls))
| ^~
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
More information about the linux-arm-kernel
mailing list