mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-25 16:11:45 +00:00
nfp: handle page allocation failures
page_address() does not handle NULL argument gracefully,
make sure we NULL-check the page pointer before passing it
to page_address().
Fixes: ecd63a0217
("nfp: add XDP support in the driver")
Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com>
Reviewed-by: Simon Horman <simon.horman@netronome.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
c3d64ad4fe
commit
5f0ca2fb71
1 changed files with 14 additions and 6 deletions
|
@ -1180,10 +1180,14 @@ static void *nfp_net_rx_alloc_one(struct nfp_net_dp *dp, dma_addr_t *dma_addr)
|
||||||
{
|
{
|
||||||
void *frag;
|
void *frag;
|
||||||
|
|
||||||
if (!dp->xdp_prog)
|
if (!dp->xdp_prog) {
|
||||||
frag = netdev_alloc_frag(dp->fl_bufsz);
|
frag = netdev_alloc_frag(dp->fl_bufsz);
|
||||||
else
|
} else {
|
||||||
frag = page_address(alloc_page(GFP_KERNEL | __GFP_COLD));
|
struct page *page;
|
||||||
|
|
||||||
|
page = alloc_page(GFP_KERNEL | __GFP_COLD);
|
||||||
|
frag = page ? page_address(page) : NULL;
|
||||||
|
}
|
||||||
if (!frag) {
|
if (!frag) {
|
||||||
nn_dp_warn(dp, "Failed to alloc receive page frag\n");
|
nn_dp_warn(dp, "Failed to alloc receive page frag\n");
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -1203,10 +1207,14 @@ static void *nfp_net_napi_alloc_one(struct nfp_net_dp *dp, dma_addr_t *dma_addr)
|
||||||
{
|
{
|
||||||
void *frag;
|
void *frag;
|
||||||
|
|
||||||
if (!dp->xdp_prog)
|
if (!dp->xdp_prog) {
|
||||||
frag = napi_alloc_frag(dp->fl_bufsz);
|
frag = napi_alloc_frag(dp->fl_bufsz);
|
||||||
else
|
} else {
|
||||||
frag = page_address(alloc_page(GFP_ATOMIC | __GFP_COLD));
|
struct page *page;
|
||||||
|
|
||||||
|
page = alloc_page(GFP_ATOMIC | __GFP_COLD);
|
||||||
|
frag = page ? page_address(page) : NULL;
|
||||||
|
}
|
||||||
if (!frag) {
|
if (!frag) {
|
||||||
nn_dp_warn(dp, "Failed to alloc receive page frag\n");
|
nn_dp_warn(dp, "Failed to alloc receive page frag\n");
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue