Re: [PATCH net] net: mana: Cap MSI-X vectors to the device MSI-X table size

Simon Horman <[email protected]>
Newsgroups org.kernel.vger.linux-rdma,org.kernel.vger.linux-hyperv,org.kernel.vger.linux-kernel,org.kernel.vger.netdev
Message-ID <[email protected]>
On Fri, Aug 21, 2026 at 11:37:36AM -0700, Long Li wrote:
> mana_gd_query_max_resources() sizes gc->num_msix_usable from resp.max_msix
> and the CPU count, but never from the device MSI-X table. On a 1792 vCPU
> M-series VM that yields 1793 while the table has 1024 entries, and
> mana_gd_setup_remaining_irqs() then walks indices 1..1792, running off the
> end of the region mapped by msix_map_region():
> 
>   BUG: unable to handle page fault for address: ff8e347f8b99800c
>   RIP: 0010:msix_prepare_msi_desc+0x7a/0x90
>   RAX: 0000000000004000 RBX: ff4330cb164ea780 RCX: ff8e347f8b998000
>   Call Trace:
>    <TASK>
>    __msi_domain_alloc_irqs+0x13a/0x440
>    msi_domain_alloc_irq_at+0x149/0x1b0
>    mana_gd_setup+0x351/0x890
>    mana_gd_probe+0x274/0x390
>    </TASK>
> 
> RAX is index 1024 * PCI_MSIX_ENTRY_SIZE, one entry past the table.
> 
> msi_insert_desc() does range check the index, but only against the MSI
> domain hwsize, which matches the table only for devices on an MSI parent
> domain. With a global PCI/MSI domain hwsize is MSI_XA_DOMAIN_SIZE, so
> nothing bounds the request.
> 
> Cap num_msix_usable with pci_msix_vec_count().
> 
> Fixes: 755391121038 ("net: mana: Allocate MSI-X vectors dynamically")
> Signed-off-by: Long Li <[email protected]>

Reviewed-by: Simon Horman <[email protected]>
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.