Skip to content

Commit 8f49a65

Browse files
committed
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Pull networking fixes from David Miller: "First batch of fixes in the new merge window: 1) Double dst_cache free in act_tunnel_key, from Wenxu. 2) Avoid NULL deref in IN_DEV_MFORWARD() by failing early in the ip_route_input_rcu() path, from Paolo Abeni. 3) Fix appletalk compile regression, from Arnd Bergmann. 4) If SLAB objects reach the TCP sendpage method we are in serious trouble, so put a debugging check there. From Vasily Averin. 5) Memory leak in hsr layer, from Mao Wenan. 6) Only test GSO type on GSO packets, from Willem de Bruijn. 7) Fix crash in xsk_diag_put_umem(), from Eric Dumazet. 8) Fix VNIC mailbox length in nfp, from Dirk van der Merwe. 9) Fix race in ipv4 route exception handling, from Xin Long. 10) Missing DMA memory barrier in hns3 driver, from Jian Shen. 11) Use after free in __tcf_chain_put(), from Vlad Buslov. 12) Handle inet_csk_reqsk_queue_add() failures, from Guillaume Nault. 13) Return value correction when ip_mc_may_pull() fails, from Eric Dumazet. 14) Use after free in x25_device_event(), also from Eric" * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (72 commits) gro_cells: make sure device is up in gro_cells_receive() vxlan: test dev->flags & IFF_UP before calling gro_cells_receive() net/x25: fix use-after-free in x25_device_event() isdn: mISDNinfineon: fix potential NULL pointer dereference net: hns3: fix to stop multiple HNS reset due to the AER changes ip: fix ip_mc_may_pull() return value net: keep refcount warning in reqsk_free() net: stmmac: Avoid one more sometimes uninitialized Clang warning net: dsa: mv88e6xxx: Set correct interface mode for CPU/DSA ports rxrpc: Fix client call queueing, waiting for channel tcp: handle inet_csk_reqsk_queue_add() failures net: ethernet: sun: Zero initialize class in default case in niu_add_ethtool_tcam_entry 8139too : Add support for U.S. Robotics USR997901A 10/100 Cardbus NIC fou, fou6: avoid uninit-value in gue_err() and gue6_err() net: sched: fix potential use-after-free in __tcf_chain_put() vhost: silence an unused-variable warning vsock/virtio: fix kernel panic from virtio_transport_reset_no_sock connector: fix unsafe usage of ->real_parent vxlan: do not need BH again in vxlan_cleanup() net: hns3: add dma_rmb() for rx description ...
2 parents ffd602e + 2a5ff07 commit 8f49a65

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

75 files changed

+705
-231
lines changed

Documentation/devicetree/bindings/net/stm32-dwmac.txt

+4-5
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,7 @@ Required properties:
1414
- clock-names: Should be "stmmaceth" for the host clock.
1515
Should be "mac-clk-tx" for the MAC TX clock.
1616
Should be "mac-clk-rx" for the MAC RX clock.
17-
For MPU family need to add also "ethstp" for power mode clock and,
18-
"syscfg-clk" for SYSCFG clock.
17+
For MPU family need to add also "ethstp" for power mode clock
1918
- interrupt-names: Should contain a list of interrupt names corresponding to
2019
the interrupts in the interrupts property, if available.
2120
Should be "macirq" for the main MAC IRQ
@@ -24,9 +23,9 @@ Required properties:
2423
encompases the glue register, and the offset of the control register.
2524

2625
Optional properties:
27-
- clock-names: For MPU family "mac-clk-ck" for PHY without quartz
28-
- st,int-phyclk (boolean) : valid only where PHY do not have quartz and need to be clock
29-
by RCC
26+
- clock-names: For MPU family "eth-ck" for PHY without quartz
27+
- st,eth-clk-sel (boolean) : set this property in RGMII PHY when you want to select RCC clock instead of ETH_CLK125.
28+
- st,eth-ref-clk-sel (boolean) : set this property in RMII mode when you have PHY without crystal 50MHz and want to select RCC clock instead of ETH_REF_CLK.
3029

3130
Example:
3231

MAINTAINERS

+2
Original file line numberDiff line numberDiff line change
@@ -1059,6 +1059,8 @@ L: [email protected]
10591059
S: Odd fixes
10601060
F: drivers/net/appletalk/
10611061
F: net/appletalk/
1062+
F: include/linux/atalk.h
1063+
F: include/uapi/linux/atalk.h
10621064

10631065
APPLIED MICRO (APM) X-GENE DEVICE TREE SUPPORT
10641066
M: Khuong Dinh <[email protected]>

arch/arm/boot/dts/stm32h743-pinctrl.dtsi

+15
Original file line numberDiff line numberDiff line change
@@ -173,6 +173,21 @@
173173
};
174174
};
175175

176+
ethernet_rmii: rmii@0 {
177+
pins {
178+
pinmux = <STM32_PINMUX('G', 11, AF11)>,
179+
<STM32_PINMUX('G', 13, AF11)>,
180+
<STM32_PINMUX('G', 12, AF11)>,
181+
<STM32_PINMUX('C', 4, AF11)>,
182+
<STM32_PINMUX('C', 5, AF11)>,
183+
<STM32_PINMUX('A', 7, AF11)>,
184+
<STM32_PINMUX('C', 1, AF11)>,
185+
<STM32_PINMUX('A', 2, AF11)>,
186+
<STM32_PINMUX('A', 1, AF11)>;
187+
slew-rate = <2>;
188+
};
189+
};
190+
176191
usart1_pins: usart1@0 {
177192
pins1 {
178193
pinmux = <STM32_PINMUX('B', 14, AF4)>; /* USART1_TX */

arch/arm/boot/dts/stm32h743.dtsi

+13
Original file line numberDiff line numberDiff line change
@@ -513,6 +513,19 @@
513513
status = "disabled";
514514
};
515515
};
516+
517+
mac: ethernet@40028000 {
518+
compatible = "st,stm32-dwmac", "snps,dwmac-4.10a";
519+
reg = <0x40028000 0x8000>;
520+
reg-names = "stmmaceth";
521+
interrupts = <61>;
522+
interrupt-names = "macirq";
523+
clock-names = "stmmaceth", "mac-clk-tx", "mac-clk-rx";
524+
clocks = <&rcc ETH1MAC_CK>, <&rcc ETH1TX_CK>, <&rcc ETH1RX_CK>;
525+
st,syscon = <&syscfg 0x4>;
526+
snps,pbl = <8>;
527+
status = "disabled";
528+
};
516529
};
517530
};
518531

arch/arm/boot/dts/stm32h743i-disco.dts

+17
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,23 @@
6767
clock-frequency = <25000000>;
6868
};
6969

70+
&mac {
71+
status = "disabled";
72+
pinctrl-0 = <&ethernet_rmii>;
73+
pinctrl-names = "default";
74+
phy-mode = "rmii";
75+
phy-handle = <&phy0>;
76+
77+
mdio0 {
78+
#address-cells = <1>;
79+
#size-cells = <0>;
80+
compatible = "snps,dwmac-mdio";
81+
phy0: ethernet-phy@0 {
82+
reg = <0>;
83+
};
84+
};
85+
};
86+
7087
&usart2 {
7188
pinctrl-0 = <&usart2_pins>;
7289
pinctrl-names = "default";

arch/arm/boot/dts/stm32h743i-eval.dts

+17
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,23 @@
105105
status = "okay";
106106
};
107107

108+
&mac {
109+
status = "disabled";
110+
pinctrl-0 = <&ethernet_rmii>;
111+
pinctrl-names = "default";
112+
phy-mode = "rmii";
113+
phy-handle = <&phy0>;
114+
115+
mdio0 {
116+
#address-cells = <1>;
117+
#size-cells = <0>;
118+
compatible = "snps,dwmac-mdio";
119+
phy0: ethernet-phy@0 {
120+
reg = <0>;
121+
};
122+
};
123+
};
124+
108125
&usart1 {
109126
pinctrl-0 = <&usart1_pins>;
110127
pinctrl-names = "default";

drivers/connector/cn_proc.c

+18-4
Original file line numberDiff line numberDiff line change
@@ -250,6 +250,7 @@ void proc_coredump_connector(struct task_struct *task)
250250
{
251251
struct cn_msg *msg;
252252
struct proc_event *ev;
253+
struct task_struct *parent;
253254
__u8 buffer[CN_PROC_MSG_SIZE] __aligned(8);
254255

255256
if (atomic_read(&proc_event_num_listeners) < 1)
@@ -262,8 +263,14 @@ void proc_coredump_connector(struct task_struct *task)
262263
ev->what = PROC_EVENT_COREDUMP;
263264
ev->event_data.coredump.process_pid = task->pid;
264265
ev->event_data.coredump.process_tgid = task->tgid;
265-
ev->event_data.coredump.parent_pid = task->real_parent->pid;
266-
ev->event_data.coredump.parent_tgid = task->real_parent->tgid;
266+
267+
rcu_read_lock();
268+
if (pid_alive(task)) {
269+
parent = rcu_dereference(task->real_parent);
270+
ev->event_data.coredump.parent_pid = parent->pid;
271+
ev->event_data.coredump.parent_tgid = parent->tgid;
272+
}
273+
rcu_read_unlock();
267274

268275
memcpy(&msg->id, &cn_proc_event_id, sizeof(msg->id));
269276
msg->ack = 0; /* not used */
@@ -276,6 +283,7 @@ void proc_exit_connector(struct task_struct *task)
276283
{
277284
struct cn_msg *msg;
278285
struct proc_event *ev;
286+
struct task_struct *parent;
279287
__u8 buffer[CN_PROC_MSG_SIZE] __aligned(8);
280288

281289
if (atomic_read(&proc_event_num_listeners) < 1)
@@ -290,8 +298,14 @@ void proc_exit_connector(struct task_struct *task)
290298
ev->event_data.exit.process_tgid = task->tgid;
291299
ev->event_data.exit.exit_code = task->exit_code;
292300
ev->event_data.exit.exit_signal = task->exit_signal;
293-
ev->event_data.exit.parent_pid = task->real_parent->pid;
294-
ev->event_data.exit.parent_tgid = task->real_parent->tgid;
301+
302+
rcu_read_lock();
303+
if (pid_alive(task)) {
304+
parent = rcu_dereference(task->real_parent);
305+
ev->event_data.exit.parent_pid = parent->pid;
306+
ev->event_data.exit.parent_tgid = parent->tgid;
307+
}
308+
rcu_read_unlock();
295309

296310
memcpy(&msg->id, &cn_proc_event_id, sizeof(msg->id));
297311
msg->ack = 0; /* not used */

drivers/isdn/hardware/mISDN/mISDNinfineon.c

+4-1
Original file line numberDiff line numberDiff line change
@@ -712,8 +712,11 @@ setup_io(struct inf_hw *hw)
712712
(ulong)hw->addr.start, (ulong)hw->addr.size);
713713
return err;
714714
}
715-
if (hw->ci->addr_mode == AM_MEMIO)
715+
if (hw->ci->addr_mode == AM_MEMIO) {
716716
hw->addr.p = ioremap(hw->addr.start, hw->addr.size);
717+
if (unlikely(!hw->addr.p))
718+
return -ENOMEM;
719+
}
717720
hw->addr.mode = hw->ci->addr_mode;
718721
if (debug & DEBUG_HW)
719722
pr_notice("%s: IO addr %lx (%lu bytes) mode%d\n",

drivers/isdn/isdnloop/isdnloop.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -570,7 +570,7 @@ isdnloop_atimeout(isdnloop_card *card, int ch)
570570
char buf[60];
571571

572572
spin_lock_irqsave(&card->isdnloop_lock, flags);
573-
if (card->rcard) {
573+
if (card->rcard[ch]) {
574574
isdnloop_fake(card->rcard[ch], "DDIS_I", card->rch[ch] + 1);
575575
card->rcard[ch]->rcard[card->rch[ch]] = NULL;
576576
card->rcard[ch] = NULL;

drivers/net/can/usb/peak_usb/pcan_usb_pro.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ static u8 *pcan_msg_init_empty(struct pcan_usb_pro_msg *pm,
127127
/*
128128
* add one record to a message being built
129129
*/
130-
static int pcan_msg_add_rec(struct pcan_usb_pro_msg *pm, u8 id, ...)
130+
static int pcan_msg_add_rec(struct pcan_usb_pro_msg *pm, int id, ...)
131131
{
132132
int len, i;
133133
u8 *pc;

drivers/net/dsa/mv88e6xxx/chip.c

+11
Original file line numberDiff line numberDiff line change
@@ -569,6 +569,9 @@ int mv88e6xxx_port_setup_mac(struct mv88e6xxx_chip *chip, int port, int link,
569569
goto restore_link;
570570
}
571571

572+
if (speed == SPEED_MAX && chip->info->ops->port_max_speed_mode)
573+
mode = chip->info->ops->port_max_speed_mode(port);
574+
572575
if (chip->info->ops->port_set_pause) {
573576
err = chip->info->ops->port_set_pause(chip, port, pause);
574577
if (err)
@@ -3067,6 +3070,7 @@ static const struct mv88e6xxx_ops mv88e6141_ops = {
30673070
.port_set_duplex = mv88e6xxx_port_set_duplex,
30683071
.port_set_rgmii_delay = mv88e6390_port_set_rgmii_delay,
30693072
.port_set_speed = mv88e6341_port_set_speed,
3073+
.port_max_speed_mode = mv88e6341_port_max_speed_mode,
30703074
.port_tag_remap = mv88e6095_port_tag_remap,
30713075
.port_set_frame_mode = mv88e6351_port_set_frame_mode,
30723076
.port_set_egress_floods = mv88e6352_port_set_egress_floods,
@@ -3385,6 +3389,7 @@ static const struct mv88e6xxx_ops mv88e6190_ops = {
33853389
.port_set_duplex = mv88e6xxx_port_set_duplex,
33863390
.port_set_rgmii_delay = mv88e6390_port_set_rgmii_delay,
33873391
.port_set_speed = mv88e6390_port_set_speed,
3392+
.port_max_speed_mode = mv88e6390_port_max_speed_mode,
33883393
.port_tag_remap = mv88e6390_port_tag_remap,
33893394
.port_set_frame_mode = mv88e6351_port_set_frame_mode,
33903395
.port_set_egress_floods = mv88e6352_port_set_egress_floods,
@@ -3429,6 +3434,7 @@ static const struct mv88e6xxx_ops mv88e6190x_ops = {
34293434
.port_set_duplex = mv88e6xxx_port_set_duplex,
34303435
.port_set_rgmii_delay = mv88e6390_port_set_rgmii_delay,
34313436
.port_set_speed = mv88e6390x_port_set_speed,
3437+
.port_max_speed_mode = mv88e6390x_port_max_speed_mode,
34323438
.port_tag_remap = mv88e6390_port_tag_remap,
34333439
.port_set_frame_mode = mv88e6351_port_set_frame_mode,
34343440
.port_set_egress_floods = mv88e6352_port_set_egress_floods,
@@ -3473,6 +3479,7 @@ static const struct mv88e6xxx_ops mv88e6191_ops = {
34733479
.port_set_duplex = mv88e6xxx_port_set_duplex,
34743480
.port_set_rgmii_delay = mv88e6390_port_set_rgmii_delay,
34753481
.port_set_speed = mv88e6390_port_set_speed,
3482+
.port_max_speed_mode = mv88e6390_port_max_speed_mode,
34763483
.port_tag_remap = mv88e6390_port_tag_remap,
34773484
.port_set_frame_mode = mv88e6351_port_set_frame_mode,
34783485
.port_set_egress_floods = mv88e6352_port_set_egress_floods,
@@ -3566,6 +3573,7 @@ static const struct mv88e6xxx_ops mv88e6290_ops = {
35663573
.port_set_duplex = mv88e6xxx_port_set_duplex,
35673574
.port_set_rgmii_delay = mv88e6390_port_set_rgmii_delay,
35683575
.port_set_speed = mv88e6390_port_set_speed,
3576+
.port_max_speed_mode = mv88e6390_port_max_speed_mode,
35693577
.port_tag_remap = mv88e6390_port_tag_remap,
35703578
.port_set_frame_mode = mv88e6351_port_set_frame_mode,
35713579
.port_set_egress_floods = mv88e6352_port_set_egress_floods,
@@ -3697,6 +3705,7 @@ static const struct mv88e6xxx_ops mv88e6341_ops = {
36973705
.port_set_duplex = mv88e6xxx_port_set_duplex,
36983706
.port_set_rgmii_delay = mv88e6390_port_set_rgmii_delay,
36993707
.port_set_speed = mv88e6341_port_set_speed,
3708+
.port_max_speed_mode = mv88e6341_port_max_speed_mode,
37003709
.port_tag_remap = mv88e6095_port_tag_remap,
37013710
.port_set_frame_mode = mv88e6351_port_set_frame_mode,
37023711
.port_set_egress_floods = mv88e6352_port_set_egress_floods,
@@ -3872,6 +3881,7 @@ static const struct mv88e6xxx_ops mv88e6390_ops = {
38723881
.port_set_duplex = mv88e6xxx_port_set_duplex,
38733882
.port_set_rgmii_delay = mv88e6390_port_set_rgmii_delay,
38743883
.port_set_speed = mv88e6390_port_set_speed,
3884+
.port_max_speed_mode = mv88e6390_port_max_speed_mode,
38753885
.port_tag_remap = mv88e6390_port_tag_remap,
38763886
.port_set_frame_mode = mv88e6351_port_set_frame_mode,
38773887
.port_set_egress_floods = mv88e6352_port_set_egress_floods,
@@ -3920,6 +3930,7 @@ static const struct mv88e6xxx_ops mv88e6390x_ops = {
39203930
.port_set_duplex = mv88e6xxx_port_set_duplex,
39213931
.port_set_rgmii_delay = mv88e6390_port_set_rgmii_delay,
39223932
.port_set_speed = mv88e6390x_port_set_speed,
3933+
.port_max_speed_mode = mv88e6390x_port_max_speed_mode,
39233934
.port_tag_remap = mv88e6390_port_tag_remap,
39243935
.port_set_frame_mode = mv88e6351_port_set_frame_mode,
39253936
.port_set_egress_floods = mv88e6352_port_set_egress_floods,

drivers/net/dsa/mv88e6xxx/chip.h

+3
Original file line numberDiff line numberDiff line change
@@ -377,6 +377,9 @@ struct mv88e6xxx_ops {
377377
*/
378378
int (*port_set_speed)(struct mv88e6xxx_chip *chip, int port, int speed);
379379

380+
/* What interface mode should be used for maximum speed? */
381+
phy_interface_t (*port_max_speed_mode)(int port);
382+
380383
int (*port_tag_remap)(struct mv88e6xxx_chip *chip, int port);
381384

382385
int (*port_set_frame_mode)(struct mv88e6xxx_chip *chip, int port,

drivers/net/dsa/mv88e6xxx/port.c

+24
Original file line numberDiff line numberDiff line change
@@ -312,6 +312,14 @@ int mv88e6341_port_set_speed(struct mv88e6xxx_chip *chip, int port, int speed)
312312
return mv88e6xxx_port_set_speed(chip, port, speed, !port, true);
313313
}
314314

315+
phy_interface_t mv88e6341_port_max_speed_mode(int port)
316+
{
317+
if (port == 5)
318+
return PHY_INTERFACE_MODE_2500BASEX;
319+
320+
return PHY_INTERFACE_MODE_NA;
321+
}
322+
315323
/* Support 10, 100, 200, 1000 Mbps (e.g. 88E6352 family) */
316324
int mv88e6352_port_set_speed(struct mv88e6xxx_chip *chip, int port, int speed)
317325
{
@@ -345,6 +353,14 @@ int mv88e6390_port_set_speed(struct mv88e6xxx_chip *chip, int port, int speed)
345353
return mv88e6xxx_port_set_speed(chip, port, speed, true, true);
346354
}
347355

356+
phy_interface_t mv88e6390_port_max_speed_mode(int port)
357+
{
358+
if (port == 9 || port == 10)
359+
return PHY_INTERFACE_MODE_2500BASEX;
360+
361+
return PHY_INTERFACE_MODE_NA;
362+
}
363+
348364
/* Support 10, 100, 200, 1000, 2500, 10000 Mbps (e.g. 88E6190X) */
349365
int mv88e6390x_port_set_speed(struct mv88e6xxx_chip *chip, int port, int speed)
350366
{
@@ -360,6 +376,14 @@ int mv88e6390x_port_set_speed(struct mv88e6xxx_chip *chip, int port, int speed)
360376
return mv88e6xxx_port_set_speed(chip, port, speed, true, true);
361377
}
362378

379+
phy_interface_t mv88e6390x_port_max_speed_mode(int port)
380+
{
381+
if (port == 9 || port == 10)
382+
return PHY_INTERFACE_MODE_XAUI;
383+
384+
return PHY_INTERFACE_MODE_NA;
385+
}
386+
363387
int mv88e6390x_port_set_cmode(struct mv88e6xxx_chip *chip, int port,
364388
phy_interface_t mode)
365389
{

drivers/net/dsa/mv88e6xxx/port.h

+4
Original file line numberDiff line numberDiff line change
@@ -285,6 +285,10 @@ int mv88e6352_port_set_speed(struct mv88e6xxx_chip *chip, int port, int speed);
285285
int mv88e6390_port_set_speed(struct mv88e6xxx_chip *chip, int port, int speed);
286286
int mv88e6390x_port_set_speed(struct mv88e6xxx_chip *chip, int port, int speed);
287287

288+
phy_interface_t mv88e6341_port_max_speed_mode(int port);
289+
phy_interface_t mv88e6390_port_max_speed_mode(int port);
290+
phy_interface_t mv88e6390x_port_max_speed_mode(int port);
291+
288292
int mv88e6xxx_port_set_state(struct mv88e6xxx_chip *chip, int port, u8 state);
289293

290294
int mv88e6xxx_port_set_vlan_map(struct mv88e6xxx_chip *chip, int port, u16 map);

drivers/net/ethernet/cisco/enic/enic_main.c

+3-3
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ static void enic_init_affinity_hint(struct enic *enic)
119119

120120
for (i = 0; i < enic->intr_count; i++) {
121121
if (enic_is_err_intr(enic, i) || enic_is_notify_intr(enic, i) ||
122-
(enic->msix[i].affinity_mask &&
122+
(cpumask_available(enic->msix[i].affinity_mask) &&
123123
!cpumask_empty(enic->msix[i].affinity_mask)))
124124
continue;
125125
if (zalloc_cpumask_var(&enic->msix[i].affinity_mask,
@@ -148,7 +148,7 @@ static void enic_set_affinity_hint(struct enic *enic)
148148
for (i = 0; i < enic->intr_count; i++) {
149149
if (enic_is_err_intr(enic, i) ||
150150
enic_is_notify_intr(enic, i) ||
151-
!enic->msix[i].affinity_mask ||
151+
!cpumask_available(enic->msix[i].affinity_mask) ||
152152
cpumask_empty(enic->msix[i].affinity_mask))
153153
continue;
154154
err = irq_set_affinity_hint(enic->msix_entry[i].vector,
@@ -161,7 +161,7 @@ static void enic_set_affinity_hint(struct enic *enic)
161161
for (i = 0; i < enic->wq_count; i++) {
162162
int wq_intr = enic_msix_wq_intr(enic, i);
163163

164-
if (enic->msix[wq_intr].affinity_mask &&
164+
if (cpumask_available(enic->msix[wq_intr].affinity_mask) &&
165165
!cpumask_empty(enic->msix[wq_intr].affinity_mask))
166166
netif_set_xps_queue(enic->netdev,
167167
enic->msix[wq_intr].affinity_mask,

drivers/net/ethernet/hisilicon/hns3/hnae3.h

+1
Original file line numberDiff line numberDiff line change
@@ -194,6 +194,7 @@ struct hnae3_ae_dev {
194194
const struct hnae3_ae_ops *ops;
195195
struct list_head node;
196196
u32 flag;
197+
u8 override_pci_need_reset; /* fix to stop multiple reset happening */
197198
enum hnae3_dev_type dev_type;
198199
enum hnae3_reset_type reset_type;
199200
void *priv;

0 commit comments

Comments
 (0)