Skip to content

Commit 5879ae5

Browse files
committed
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Pull networking fixes from David Miller: 1) Fix stack allocation in s390 BPF JIT, from Michael Holzheu. 2) Disable LRO on openvswitch paths, from Jiri Benc. 3) UDP early demux doesn't handle multicast group membership properly, fix from Shawn Bohrer. 4) Fix TX queue hang due to incorrect handling of mixed sized fragments and linearlization in i40e driver, from Anjali Singhai Jain. 5) Cannot use disable_irq() in timer handler of AMD xgbe driver, from Thomas Lendacky. 6) b2net driver improperly assumes pci_alloc_consistent() gives zero'd out memory, use dma_zalloc_coherent(). From Sriharsha Basavapatna. 7) Fix use-after-free in MPLS and ipv6, from Robert Shearman. 8) Missing neif_napi_del() calls in cleanup paths of b44 driver, from Hauke Mehrtens. * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: net: replace last open coded skb_orphan_frags with function call net: bcmgenet: power on MII block for all MII modes ipv6: Fix protocol resubmission ipv6: fix possible use after free of dev stats b44: call netif_napi_del() bridge: disable softirqs around br_fdb_update to avoid lockup Revert "bridge: use _bh spinlock variant for br_fdb_update to avoid lockup" mpls: fix possible use after free of device be2net: Replace dma/pci_alloc_coherent() calls with dma_zalloc_coherent() bridge: use _bh spinlock variant for br_fdb_update to avoid lockup amd-xgbe: Use disable_irq_nosync from within timer function rhashtable: add missing import <linux/export.h> i40e: Make sure to be in VEB mode if SRIOV is enabled at probe i40e: start up in VEPA mode by default i40e/i40evf: Fix mixed size frags and linearization ipv4/udp: Verify multicast group is ours in upd_v4_early_demux() openvswitch: disable LRO s390/bpf: fix bpf frame pointer setup s390/bpf: fix stack allocation
2 parents 056537c + bbbf2df commit 5879ae5

File tree

23 files changed

+196
-115
lines changed

23 files changed

+196
-115
lines changed

arch/s390/net/bpf_jit.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,9 @@ extern u8 sk_load_word[], sk_load_half[], sk_load_byte[];
4848
* We get 160 bytes stack space from calling function, but only use
4949
* 11 * 8 byte (old backchain + r15 - r6) for storing registers.
5050
*/
51-
#define STK_OFF (MAX_BPF_STACK + 8 + 4 + 4 + (160 - 11 * 8))
51+
#define STK_SPACE(MAX_BPF_STACK + 8 + 4 + 4 + 160)
52+
#define STK_160_UNUSED(160 - 11 * 8)
53+
#define STK_OFF(STK_SPACE - STK_160_UNUSED)
5254
#define STK_OFF_TMP160/* Offset of tmp buffer on stack */
5355
#define STK_OFF_HLEN168/* Offset of SKB header length on stack */
5456

arch/s390/net/bpf_jit_comp.c

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -384,13 +384,16 @@ static void bpf_jit_prologue(struct bpf_jit *jit)
384384
}
385385
/* Setup stack and backchain */
386386
if (jit->seen & SEEN_STACK) {
387-
/* lgr %bfp,%r15 (BPF frame pointer) */
388-
EMIT4(0xb9040000, BPF_REG_FP, REG_15);
387+
if (jit->seen & SEEN_FUNC)
388+
/* lgr %w1,%r15 (backchain) */
389+
EMIT4(0xb9040000, REG_W1, REG_15);
390+
/* la %bfp,STK_160_UNUSED(%r15) (BPF frame pointer) */
391+
EMIT4_DISP(0x41000000, BPF_REG_FP, REG_15, STK_160_UNUSED);
389392
/* aghi %r15,-STK_OFF */
390393
EMIT4_IMM(0xa70b0000, REG_15, -STK_OFF);
391394
if (jit->seen & SEEN_FUNC)
392-
/* stg %bfp,152(%r15) (backchain) */
393-
EMIT6_DISP_LH(0xe3000000, 0x0024, BPF_REG_FP, REG_0,
395+
/* stg %w1,152(%r15) (backchain) */
396+
EMIT6_DISP_LH(0xe3000000, 0x0024, REG_W1, REG_0,
394397
REG_15, 152);
395398
}
396399
/*

drivers/net/ethernet/amd/xgbe/xgbe-drv.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -423,7 +423,7 @@ static void xgbe_tx_timer(unsigned long data)
423423
if (napi_schedule_prep(napi)) {
424424
/* Disable Tx and Rx interrupts */
425425
if (pdata->per_channel_irq)
426-
disable_irq(channel->dma_irq);
426+
disable_irq_nosync(channel->dma_irq);
427427
else
428428
xgbe_disable_rx_tx_ints(pdata);
429429

drivers/net/ethernet/broadcom/b44.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2464,6 +2464,7 @@ static int b44_init_one(struct ssb_device *sdev,
24642464
ssb_bus_may_powerdown(sdev->bus);
24652465

24662466
err_out_free_dev:
2467+
netif_napi_del(&bp->napi);
24672468
free_netdev(dev);
24682469

24692470
out:
@@ -2480,6 +2481,7 @@ static void b44_remove_one(struct ssb_device *sdev)
24802481
b44_unregister_phy_one(bp);
24812482
ssb_device_disable(sdev, 0);
24822483
ssb_bus_may_powerdown(sdev->bus);
2484+
netif_napi_del(&bp->napi);
24832485
free_netdev(dev);
24842486
ssb_pcihost_set_power_state(sdev, PCI_D3hot);
24852487
ssb_set_drvdata(sdev, NULL);

drivers/net/ethernet/broadcom/genet/bcmmii.c

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -299,9 +299,6 @@ int bcmgenet_mii_config(struct net_device *dev, bool init)
299299
phy_name = "external RGMII (no delay)";
300300
else
301301
phy_name = "external RGMII (TX delay)";
302-
reg = bcmgenet_ext_readl(priv, EXT_RGMII_OOB_CTRL);
303-
reg |= RGMII_MODE_EN | id_mode_dis;
304-
bcmgenet_ext_writel(priv, reg, EXT_RGMII_OOB_CTRL);
305302
bcmgenet_sys_writel(priv,
306303
PORT_MODE_EXT_GPHY, SYS_PORT_CTRL);
307304
break;
@@ -310,6 +307,15 @@ int bcmgenet_mii_config(struct net_device *dev, bool init)
310307
return -EINVAL;
311308
}
312309

310+
/* This is an external PHY (xMII), so we need to enable the RGMII
311+
* block for the interface to work
312+
*/
313+
if (priv->ext_phy) {
314+
reg = bcmgenet_ext_readl(priv, EXT_RGMII_OOB_CTRL);
315+
reg |= RGMII_MODE_EN | id_mode_dis;
316+
bcmgenet_ext_writel(priv, reg, EXT_RGMII_OOB_CTRL);
317+
}
318+
313319
if (init)
314320
dev_info(kdev, "configuring instance for %s\n", phy_name);
315321

drivers/net/ethernet/emulex/benet/be_cmds.c

Lines changed: 50 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1720,9 +1720,9 @@ int be_cmd_get_regs(struct be_adapter *adapter, u32 buf_len, void *buf)
17201720
total_size = buf_len;
17211721

17221722
get_fat_cmd.size = sizeof(struct be_cmd_req_get_fat) + 60*1024;
1723-
get_fat_cmd.va = pci_alloc_consistent(adapter->pdev,
1724-
get_fat_cmd.size,
1725-
&get_fat_cmd.dma);
1723+
get_fat_cmd.va = dma_zalloc_coherent(&adapter->pdev->dev,
1724+
get_fat_cmd.size,
1725+
&get_fat_cmd.dma, GFP_ATOMIC);
17261726
if (!get_fat_cmd.va) {
17271727
dev_err(&adapter->pdev->dev,
17281728
"Memory allocation failure while reading FAT data\n");
@@ -1767,8 +1767,8 @@ int be_cmd_get_regs(struct be_adapter *adapter, u32 buf_len, void *buf)
17671767
log_offset += buf_size;
17681768
}
17691769
err:
1770-
pci_free_consistent(adapter->pdev, get_fat_cmd.size,
1771-
get_fat_cmd.va, get_fat_cmd.dma);
1770+
dma_free_coherent(&adapter->pdev->dev, get_fat_cmd.size,
1771+
get_fat_cmd.va, get_fat_cmd.dma);
17721772
spin_unlock_bh(&adapter->mcc_lock);
17731773
return status;
17741774
}
@@ -2215,12 +2215,12 @@ int be_cmd_read_port_transceiver_data(struct be_adapter *adapter,
22152215
return -EINVAL;
22162216

22172217
cmd.size = sizeof(struct be_cmd_resp_port_type);
2218-
cmd.va = pci_alloc_consistent(adapter->pdev, cmd.size, &cmd.dma);
2218+
cmd.va = dma_zalloc_coherent(&adapter->pdev->dev, cmd.size, &cmd.dma,
2219+
GFP_ATOMIC);
22192220
if (!cmd.va) {
22202221
dev_err(&adapter->pdev->dev, "Memory allocation failed\n");
22212222
return -ENOMEM;
22222223
}
2223-
memset(cmd.va, 0, cmd.size);
22242224

22252225
spin_lock_bh(&adapter->mcc_lock);
22262226

@@ -2245,7 +2245,7 @@ int be_cmd_read_port_transceiver_data(struct be_adapter *adapter,
22452245
}
22462246
err:
22472247
spin_unlock_bh(&adapter->mcc_lock);
2248-
pci_free_consistent(adapter->pdev, cmd.size, cmd.va, cmd.dma);
2248+
dma_free_coherent(&adapter->pdev->dev, cmd.size, cmd.va, cmd.dma);
22492249
return status;
22502250
}
22512251

@@ -2720,7 +2720,8 @@ int be_cmd_get_phy_info(struct be_adapter *adapter)
27202720
goto err;
27212721
}
27222722
cmd.size = sizeof(struct be_cmd_req_get_phy_info);
2723-
cmd.va = pci_alloc_consistent(adapter->pdev, cmd.size, &cmd.dma);
2723+
cmd.va = dma_zalloc_coherent(&adapter->pdev->dev, cmd.size, &cmd.dma,
2724+
GFP_ATOMIC);
27242725
if (!cmd.va) {
27252726
dev_err(&adapter->pdev->dev, "Memory alloc failure\n");
27262727
status = -ENOMEM;
@@ -2754,7 +2755,7 @@ int be_cmd_get_phy_info(struct be_adapter *adapter)
27542755
BE_SUPPORTED_SPEED_1GBPS;
27552756
}
27562757
}
2757-
pci_free_consistent(adapter->pdev, cmd.size, cmd.va, cmd.dma);
2758+
dma_free_coherent(&adapter->pdev->dev, cmd.size, cmd.va, cmd.dma);
27582759
err:
27592760
spin_unlock_bh(&adapter->mcc_lock);
27602761
return status;
@@ -2805,8 +2806,9 @@ int be_cmd_get_cntl_attributes(struct be_adapter *adapter)
28052806

28062807
memset(&attribs_cmd, 0, sizeof(struct be_dma_mem));
28072808
attribs_cmd.size = sizeof(struct be_cmd_resp_cntl_attribs);
2808-
attribs_cmd.va = pci_alloc_consistent(adapter->pdev, attribs_cmd.size,
2809-
&attribs_cmd.dma);
2809+
attribs_cmd.va = dma_zalloc_coherent(&adapter->pdev->dev,
2810+
attribs_cmd.size,
2811+
&attribs_cmd.dma, GFP_ATOMIC);
28102812
if (!attribs_cmd.va) {
28112813
dev_err(&adapter->pdev->dev, "Memory allocation failure\n");
28122814
status = -ENOMEM;
@@ -2833,8 +2835,8 @@ int be_cmd_get_cntl_attributes(struct be_adapter *adapter)
28332835
err:
28342836
mutex_unlock(&adapter->mbox_lock);
28352837
if (attribs_cmd.va)
2836-
pci_free_consistent(adapter->pdev, attribs_cmd.size,
2837-
attribs_cmd.va, attribs_cmd.dma);
2838+
dma_free_coherent(&adapter->pdev->dev, attribs_cmd.size,
2839+
attribs_cmd.va, attribs_cmd.dma);
28382840
return status;
28392841
}
28402842

@@ -2972,9 +2974,10 @@ int be_cmd_get_mac_from_list(struct be_adapter *adapter, u8 *mac,
29722974

29732975
memset(&get_mac_list_cmd, 0, sizeof(struct be_dma_mem));
29742976
get_mac_list_cmd.size = sizeof(struct be_cmd_resp_get_mac_list);
2975-
get_mac_list_cmd.va = pci_alloc_consistent(adapter->pdev,
2976-
get_mac_list_cmd.size,
2977-
&get_mac_list_cmd.dma);
2977+
get_mac_list_cmd.va = dma_zalloc_coherent(&adapter->pdev->dev,
2978+
get_mac_list_cmd.size,
2979+
&get_mac_list_cmd.dma,
2980+
GFP_ATOMIC);
29782981

29792982
if (!get_mac_list_cmd.va) {
29802983
dev_err(&adapter->pdev->dev,
@@ -3047,8 +3050,8 @@ int be_cmd_get_mac_from_list(struct be_adapter *adapter, u8 *mac,
30473050

30483051
out:
30493052
spin_unlock_bh(&adapter->mcc_lock);
3050-
pci_free_consistent(adapter->pdev, get_mac_list_cmd.size,
3051-
get_mac_list_cmd.va, get_mac_list_cmd.dma);
3053+
dma_free_coherent(&adapter->pdev->dev, get_mac_list_cmd.size,
3054+
get_mac_list_cmd.va, get_mac_list_cmd.dma);
30523055
return status;
30533056
}
30543057

@@ -3101,8 +3104,8 @@ int be_cmd_set_mac_list(struct be_adapter *adapter, u8 *mac_array,
31013104

31023105
memset(&cmd, 0, sizeof(struct be_dma_mem));
31033106
cmd.size = sizeof(struct be_cmd_req_set_mac_list);
3104-
cmd.va = dma_alloc_coherent(&adapter->pdev->dev, cmd.size,
3105-
&cmd.dma, GFP_KERNEL);
3107+
cmd.va = dma_zalloc_coherent(&adapter->pdev->dev, cmd.size, &cmd.dma,
3108+
GFP_KERNEL);
31063109
if (!cmd.va)
31073110
return -ENOMEM;
31083111

@@ -3291,7 +3294,8 @@ int be_cmd_get_acpi_wol_cap(struct be_adapter *adapter)
32913294

32923295
memset(&cmd, 0, sizeof(struct be_dma_mem));
32933296
cmd.size = sizeof(struct be_cmd_resp_acpi_wol_magic_config_v1);
3294-
cmd.va = pci_alloc_consistent(adapter->pdev, cmd.size, &cmd.dma);
3297+
cmd.va = dma_zalloc_coherent(&adapter->pdev->dev, cmd.size, &cmd.dma,
3298+
GFP_ATOMIC);
32953299
if (!cmd.va) {
32963300
dev_err(&adapter->pdev->dev, "Memory allocation failure\n");
32973301
status = -ENOMEM;
@@ -3326,7 +3330,8 @@ int be_cmd_get_acpi_wol_cap(struct be_adapter *adapter)
33263330
err:
33273331
mutex_unlock(&adapter->mbox_lock);
33283332
if (cmd.va)
3329-
pci_free_consistent(adapter->pdev, cmd.size, cmd.va, cmd.dma);
3333+
dma_free_coherent(&adapter->pdev->dev, cmd.size, cmd.va,
3334+
cmd.dma);
33303335
return status;
33313336

33323337
}
@@ -3340,8 +3345,9 @@ int be_cmd_set_fw_log_level(struct be_adapter *adapter, u32 level)
33403345

33413346
memset(&extfat_cmd, 0, sizeof(struct be_dma_mem));
33423347
extfat_cmd.size = sizeof(struct be_cmd_resp_get_ext_fat_caps);
3343-
extfat_cmd.va = pci_alloc_consistent(adapter->pdev, extfat_cmd.size,
3344-
&extfat_cmd.dma);
3348+
extfat_cmd.va = dma_zalloc_coherent(&adapter->pdev->dev,
3349+
extfat_cmd.size, &extfat_cmd.dma,
3350+
GFP_ATOMIC);
33453351
if (!extfat_cmd.va)
33463352
return -ENOMEM;
33473353

@@ -3363,8 +3369,8 @@ int be_cmd_set_fw_log_level(struct be_adapter *adapter, u32 level)
33633369

33643370
status = be_cmd_set_ext_fat_capabilites(adapter, &extfat_cmd, cfgs);
33653371
err:
3366-
pci_free_consistent(adapter->pdev, extfat_cmd.size, extfat_cmd.va,
3367-
extfat_cmd.dma);
3372+
dma_free_coherent(&adapter->pdev->dev, extfat_cmd.size, extfat_cmd.va,
3373+
extfat_cmd.dma);
33683374
return status;
33693375
}
33703376

@@ -3377,8 +3383,9 @@ int be_cmd_get_fw_log_level(struct be_adapter *adapter)
33773383

33783384
memset(&extfat_cmd, 0, sizeof(struct be_dma_mem));
33793385
extfat_cmd.size = sizeof(struct be_cmd_resp_get_ext_fat_caps);
3380-
extfat_cmd.va = pci_alloc_consistent(adapter->pdev, extfat_cmd.size,
3381-
&extfat_cmd.dma);
3386+
extfat_cmd.va = dma_zalloc_coherent(&adapter->pdev->dev,
3387+
extfat_cmd.size, &extfat_cmd.dma,
3388+
GFP_ATOMIC);
33823389

33833390
if (!extfat_cmd.va) {
33843391
dev_err(&adapter->pdev->dev, "%s: Memory allocation failure\n",
@@ -3396,8 +3403,8 @@ int be_cmd_get_fw_log_level(struct be_adapter *adapter)
33963403
level = cfgs->module[0].trace_lvl[j].dbg_lvl;
33973404
}
33983405
}
3399-
pci_free_consistent(adapter->pdev, extfat_cmd.size, extfat_cmd.va,
3400-
extfat_cmd.dma);
3406+
dma_free_coherent(&adapter->pdev->dev, extfat_cmd.size, extfat_cmd.va,
3407+
extfat_cmd.dma);
34013408
err:
34023409
return level;
34033410
}
@@ -3595,7 +3602,8 @@ int be_cmd_get_func_config(struct be_adapter *adapter, struct be_resources *res)
35953602

35963603
memset(&cmd, 0, sizeof(struct be_dma_mem));
35973604
cmd.size = sizeof(struct be_cmd_resp_get_func_config);
3598-
cmd.va = pci_alloc_consistent(adapter->pdev, cmd.size, &cmd.dma);
3605+
cmd.va = dma_zalloc_coherent(&adapter->pdev->dev, cmd.size, &cmd.dma,
3606+
GFP_ATOMIC);
35993607
if (!cmd.va) {
36003608
dev_err(&adapter->pdev->dev, "Memory alloc failure\n");
36013609
status = -ENOMEM;
@@ -3635,7 +3643,8 @@ int be_cmd_get_func_config(struct be_adapter *adapter, struct be_resources *res)
36353643
err:
36363644
mutex_unlock(&adapter->mbox_lock);
36373645
if (cmd.va)
3638-
pci_free_consistent(adapter->pdev, cmd.size, cmd.va, cmd.dma);
3646+
dma_free_coherent(&adapter->pdev->dev, cmd.size, cmd.va,
3647+
cmd.dma);
36393648
return status;
36403649
}
36413650

@@ -3656,7 +3665,8 @@ int be_cmd_get_profile_config(struct be_adapter *adapter,
36563665

36573666
memset(&cmd, 0, sizeof(struct be_dma_mem));
36583667
cmd.size = sizeof(struct be_cmd_resp_get_profile_config);
3659-
cmd.va = pci_alloc_consistent(adapter->pdev, cmd.size, &cmd.dma);
3668+
cmd.va = dma_zalloc_coherent(&adapter->pdev->dev, cmd.size, &cmd.dma,
3669+
GFP_ATOMIC);
36603670
if (!cmd.va)
36613671
return -ENOMEM;
36623672

@@ -3702,7 +3712,8 @@ int be_cmd_get_profile_config(struct be_adapter *adapter,
37023712
res->vf_if_cap_flags = vf_res->cap_flags;
37033713
err:
37043714
if (cmd.va)
3705-
pci_free_consistent(adapter->pdev, cmd.size, cmd.va, cmd.dma);
3715+
dma_free_coherent(&adapter->pdev->dev, cmd.size, cmd.va,
3716+
cmd.dma);
37063717
return status;
37073718
}
37083719

@@ -3717,7 +3728,8 @@ static int be_cmd_set_profile_config(struct be_adapter *adapter, void *desc,
37173728

37183729
memset(&cmd, 0, sizeof(struct be_dma_mem));
37193730
cmd.size = sizeof(struct be_cmd_req_set_profile_config);
3720-
cmd.va = pci_alloc_consistent(adapter->pdev, cmd.size, &cmd.dma);
3731+
cmd.va = dma_zalloc_coherent(&adapter->pdev->dev, cmd.size, &cmd.dma,
3732+
GFP_ATOMIC);
37213733
if (!cmd.va)
37223734
return -ENOMEM;
37233735

@@ -3733,7 +3745,8 @@ static int be_cmd_set_profile_config(struct be_adapter *adapter, void *desc,
37333745
status = be_cmd_notify_wait(adapter, &wrb);
37343746

37353747
if (cmd.va)
3736-
pci_free_consistent(adapter->pdev, cmd.size, cmd.va, cmd.dma);
3748+
dma_free_coherent(&adapter->pdev->dev, cmd.size, cmd.va,
3749+
cmd.dma);
37373750
return status;
37383751
}
37393752

drivers/net/ethernet/emulex/benet/be_ethtool.c

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -264,8 +264,8 @@ static int lancer_cmd_read_file(struct be_adapter *adapter, u8 *file_name,
264264
int status = 0;
265265

266266
read_cmd.size = LANCER_READ_FILE_CHUNK;
267-
read_cmd.va = pci_alloc_consistent(adapter->pdev, read_cmd.size,
268-
&read_cmd.dma);
267+
read_cmd.va = dma_zalloc_coherent(&adapter->pdev->dev, read_cmd.size,
268+
&read_cmd.dma, GFP_ATOMIC);
269269

270270
if (!read_cmd.va) {
271271
dev_err(&adapter->pdev->dev,
@@ -289,8 +289,8 @@ static int lancer_cmd_read_file(struct be_adapter *adapter, u8 *file_name,
289289
break;
290290
}
291291
}
292-
pci_free_consistent(adapter->pdev, read_cmd.size, read_cmd.va,
293-
read_cmd.dma);
292+
dma_free_coherent(&adapter->pdev->dev, read_cmd.size, read_cmd.va,
293+
read_cmd.dma);
294294

295295
return status;
296296
}
@@ -818,8 +818,9 @@ static int be_test_ddr_dma(struct be_adapter *adapter)
818818
};
819819

820820
ddrdma_cmd.size = sizeof(struct be_cmd_req_ddrdma_test);
821-
ddrdma_cmd.va = dma_alloc_coherent(&adapter->pdev->dev, ddrdma_cmd.size,
822-
&ddrdma_cmd.dma, GFP_KERNEL);
821+
ddrdma_cmd.va = dma_zalloc_coherent(&adapter->pdev->dev,
822+
ddrdma_cmd.size, &ddrdma_cmd.dma,
823+
GFP_KERNEL);
823824
if (!ddrdma_cmd.va)
824825
return -ENOMEM;
825826

@@ -941,8 +942,9 @@ static int be_read_eeprom(struct net_device *netdev,
941942

942943
memset(&eeprom_cmd, 0, sizeof(struct be_dma_mem));
943944
eeprom_cmd.size = sizeof(struct be_cmd_req_seeprom_read);
944-
eeprom_cmd.va = dma_alloc_coherent(&adapter->pdev->dev, eeprom_cmd.size,
945-
&eeprom_cmd.dma, GFP_KERNEL);
945+
eeprom_cmd.va = dma_zalloc_coherent(&adapter->pdev->dev,
946+
eeprom_cmd.size, &eeprom_cmd.dma,
947+
GFP_KERNEL);
946948

947949
if (!eeprom_cmd.va)
948950
return -ENOMEM;

0 commit comments

Comments
 (0)