Re: [PATCH] PCI: endpoint: pci-epf-vntb: Use array_index_nospec() on mws_size[] access

Koichiro Den <[email protected]>
Newsgroups dev.linux.lists.ntb,org.kernel.vger.linux-kernel,org.kernel.vger.linux-pci
Message-ID <xhtf2c4guarsgi74bieelah6zeyhfzt7l6fryi7yuq7lplhac6@q3harp75htlw>
On Wed, Feb 18, 2026 at 07:31:44PM +0530, Manivannan Sadhasivam wrote:
> On Wed, Feb 18, 2026 at 01:47:33PM +0900, Koichiro Den wrote:
> > On Tue, Feb 17, 2026 at 07:20:23PM +0530, Manivannan Sadhasivam wrote:
> > > On Mon, Jan 05, 2026 at 04:56:06PM +0900, Koichiro Den wrote:
> > > > Follow common kernel idioms for indices derived from configfs attributes
> > > > and suppress Smatch warnings:
> > > > 
> > > >   epf_ntb_mw1_show() warn: potential spectre issue 'ntb->mws_size' [r]
> > > >   epf_ntb_mw1_store() warn: potential spectre issue 'ntb->mws_size' [w]
> > > > 
> > > > Also fix the error message for out-of-range MW indices and %lld format
> > > > for unsigned values.
> > > > 
> > > > Reviewed-by: Frank Li <[email protected]>
> > > > Signed-off-by: Koichiro Den <[email protected]>
> > > > ---
> > > > Base: https://github.com/jonmason/ntb/commit/68113d260674 (ntb-next)
> > > > This is a spin-off patch from the following series:
> > > > https://lore.kernel.org/all/[email protected]/
> > > > 
> > > >  drivers/pci/endpoint/functions/pci-epf-vntb.c | 24 +++++++++++--------
> > > >  1 file changed, 14 insertions(+), 10 deletions(-)
> > > > 
> > > > diff --git a/drivers/pci/endpoint/functions/pci-epf-vntb.c b/drivers/pci/endpoint/functions/pci-epf-vntb.c
> > > > index 83e9ab10f9c4..192dd4f4de8d 100644
> > > > --- a/drivers/pci/endpoint/functions/pci-epf-vntb.c
> > > > +++ b/drivers/pci/endpoint/functions/pci-epf-vntb.c
> > > > @@ -876,17 +876,19 @@ static ssize_t epf_ntb_##_name##_show(struct config_item *item,		\
> > > >  	struct config_group *group = to_config_group(item);		\
> > > >  	struct epf_ntb *ntb = to_epf_ntb(group);			\
> > > >  	struct device *dev = &ntb->epf->dev;				\
> > > > -	int win_no;							\
> > > > +	int win_no, idx;						\
> > > >  									\
> > > >  	if (sscanf(#_name, "mw%d", &win_no) != 1)			\
> > > >  		return -EINVAL;						\
> > > >  									\
> > > > -	if (win_no <= 0 || win_no > ntb->num_mws) {			\
> > > > -		dev_err(dev, "Invalid num_nws: %d value\n", ntb->num_mws); \
> > > > +	idx = win_no - 1;						\
> > > > +	if (idx < 0 || idx >= ntb->num_mws) {				\
> > > > +		dev_err(dev, "MW%d out of range (num_mws=%d)\n",	\
> > > > +			win_no, ntb->num_mws);				\
> > > >  		return -EINVAL;						\
> > > 
> > > This should be -ERANGE, but in a separate patch.
> > > 
> > > >  	}								\
> > > > -									\
> > > > -	return sprintf(page, "%lld\n", ntb->mws_size[win_no - 1]);	\
> > > > +	idx = array_index_nospec(idx, ntb->num_mws);			\
> > > > +	return sprintf(page, "%llu\n", ntb->mws_size[idx]);		\
> > > >  }
> > > >  
> > > >  #define EPF_NTB_MW_W(_name)						\
> > > > @@ -896,7 +898,7 @@ static ssize_t epf_ntb_##_name##_store(struct config_item *item,	\
> > > >  	struct config_group *group = to_config_group(item);		\
> > > >  	struct epf_ntb *ntb = to_epf_ntb(group);			\
> > > >  	struct device *dev = &ntb->epf->dev;				\
> > > > -	int win_no;							\
> > > > +	int win_no, idx;						\
> > > >  	u64 val;							\
> > > >  	int ret;							\
> > > >  									\
> > > > @@ -907,12 +909,14 @@ static ssize_t epf_ntb_##_name##_store(struct config_item *item,	\
> > > >  	if (sscanf(#_name, "mw%d", &win_no) != 1)			\
> > > >  		return -EINVAL;						\
> > > >  									\
> > > > -	if (win_no <= 0 || win_no > ntb->num_mws) {			\
> > > > -		dev_err(dev, "Invalid num_nws: %d value\n", ntb->num_mws); \
> > > > +	idx = win_no - 1;						\
> > > > +	if (idx < 0 || idx >= ntb->num_mws) {				\
> > > > +		dev_err(dev, "MW%d out of range (num_mws=%d)\n",	\
> > > > +			win_no, ntb->num_mws);				\
> > > >  		return -EINVAL;						\
> > > 
> > > Same here.
> > > 
> > > - Mani
> > 
> > Thanks for the comment. I will send a separate patch for that.
> > 
> > Before doing so, I have a quick question regarding the routing of pci-epf-vntb
> > patches.
> > 
> > Commit e4fe2a2fc423 ("MAINTAINERS: add PCI Endpoint NTB drivers to NTB files")
> > places pci-epf-vntb under the NTB subsystem. However, I'm not entirely sure
> > which tree (NTB or PCI EP) is expected to take changes to pci-epf-vntb.
> > 
> > Should updates be based on the NTB tree or the PCI EP tree?
> 
> There is no specific entry for the VNTB driver and we usually pick this driver
> patches through the PCI tree. Initially this driver patches went through NTB
> tree, but that got changed long back.

Thanks for the clarification.

Understood. I'll make sure to CC both Mani and Krzysztof explicitly for future
pci-epf-vntb related patches (e.g. the thread below).
https://lore.kernel.org/linux-pci/aqxjlfdqincb4yszn3ngjzvyiuybeoo2pyno4t2iz6ant337n4@bz37hl5nofzy/

Best regards,
Koichiro

> 
> > Sorry if this has already been clarified and I just overlooked it.
> > 
> 
> No worries.
> 
> - Mani
> 
> -- 
> மணிவண்ணன் சதாசிவம்
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.