Gentoo Archives: gentoo-commits

From: Mike Pagano <mpagano@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/linux-patches:4.4 commit in: /
Date: Sat, 31 Mar 2018 22:16:22
Message-Id: 1522534568.75ba3c6239bfacd09cd82d8a68806d26364b51d4.mpagano@gentoo
1 commit: 75ba3c6239bfacd09cd82d8a68806d26364b51d4
2 Author: Mike Pagano <mpagano <AT> gentoo <DOT> org>
3 AuthorDate: Sat Mar 31 22:16:08 2018 +0000
4 Commit: Mike Pagano <mpagano <AT> gentoo <DOT> org>
5 CommitDate: Sat Mar 31 22:16:08 2018 +0000
6 URL: https://gitweb.gentoo.org/proj/linux-patches.git/commit/?id=75ba3c62
7
8 Linux patch 4.4.126
9
10 0000_README | 4 +
11 1125_linux-4.4.126.patch | 455 +++++++++++++++++++++++++++++++++++++++++++++++
12 2 files changed, 459 insertions(+)
13
14 diff --git a/0000_README b/0000_README
15 index d9d85f6..fd31be4 100644
16 --- a/0000_README
17 +++ b/0000_README
18 @@ -539,6 +539,10 @@ Patch: 1123_linux-4.4.124.patch
19 From: http://www.kernel.org
20 Desc: Linux 4.4.124
21
22 +Patch: 1125_linux-4.4.125.patch
23 +From: http://www.kernel.org
24 +Desc: Linux 4.4.125
25 +
26 Patch: 1500_XATTR_USER_PREFIX.patch
27 From: https://bugs.gentoo.org/show_bug.cgi?id=470644
28 Desc: Support for namespace user.pax.* on tmpfs.
29
30 diff --git a/1125_linux-4.4.126.patch b/1125_linux-4.4.126.patch
31 new file mode 100644
32 index 0000000..caede2f
33 --- /dev/null
34 +++ b/1125_linux-4.4.126.patch
35 @@ -0,0 +1,455 @@
36 +diff --git a/Makefile b/Makefile
37 +index 7dcafa5dcd34..2b699c5f6de4 100644
38 +--- a/Makefile
39 ++++ b/Makefile
40 +@@ -1,6 +1,6 @@
41 + VERSION = 4
42 + PATCHLEVEL = 4
43 +-SUBLEVEL = 125
44 ++SUBLEVEL = 126
45 + EXTRAVERSION =
46 + NAME = Blurry Fish Butt
47 +
48 +diff --git a/drivers/net/ethernet/arc/emac_rockchip.c b/drivers/net/ethernet/arc/emac_rockchip.c
49 +index c31c7407b753..425dae560322 100644
50 +--- a/drivers/net/ethernet/arc/emac_rockchip.c
51 ++++ b/drivers/net/ethernet/arc/emac_rockchip.c
52 +@@ -150,8 +150,10 @@ static int emac_rockchip_probe(struct platform_device *pdev)
53 + /* Optional regulator for PHY */
54 + priv->regulator = devm_regulator_get_optional(dev, "phy");
55 + if (IS_ERR(priv->regulator)) {
56 +- if (PTR_ERR(priv->regulator) == -EPROBE_DEFER)
57 +- return -EPROBE_DEFER;
58 ++ if (PTR_ERR(priv->regulator) == -EPROBE_DEFER) {
59 ++ err = -EPROBE_DEFER;
60 ++ goto out_clk_disable;
61 ++ }
62 + dev_err(dev, "no regulator found\n");
63 + priv->regulator = NULL;
64 + }
65 +diff --git a/drivers/net/ethernet/broadcom/bcmsysport.c b/drivers/net/ethernet/broadcom/bcmsysport.c
66 +index 027705117086..af9ec57bbebf 100644
67 +--- a/drivers/net/ethernet/broadcom/bcmsysport.c
68 ++++ b/drivers/net/ethernet/broadcom/bcmsysport.c
69 +@@ -729,37 +729,33 @@ static unsigned int __bcm_sysport_tx_reclaim(struct bcm_sysport_priv *priv,
70 + struct bcm_sysport_tx_ring *ring)
71 + {
72 + struct net_device *ndev = priv->netdev;
73 +- unsigned int c_index, last_c_index, last_tx_cn, num_tx_cbs;
74 + unsigned int pkts_compl = 0, bytes_compl = 0;
75 ++ unsigned int txbds_processed = 0;
76 + struct bcm_sysport_cb *cb;
77 ++ unsigned int txbds_ready;
78 ++ unsigned int c_index;
79 + u32 hw_ind;
80 +
81 + /* Compute how many descriptors have been processed since last call */
82 + hw_ind = tdma_readl(priv, TDMA_DESC_RING_PROD_CONS_INDEX(ring->index));
83 + c_index = (hw_ind >> RING_CONS_INDEX_SHIFT) & RING_CONS_INDEX_MASK;
84 +- ring->p_index = (hw_ind & RING_PROD_INDEX_MASK);
85 +-
86 +- last_c_index = ring->c_index;
87 +- num_tx_cbs = ring->size;
88 +-
89 +- c_index &= (num_tx_cbs - 1);
90 +-
91 +- if (c_index >= last_c_index)
92 +- last_tx_cn = c_index - last_c_index;
93 +- else
94 +- last_tx_cn = num_tx_cbs - last_c_index + c_index;
95 ++ txbds_ready = (c_index - ring->c_index) & RING_CONS_INDEX_MASK;
96 +
97 + netif_dbg(priv, tx_done, ndev,
98 +- "ring=%d c_index=%d last_tx_cn=%d last_c_index=%d\n",
99 +- ring->index, c_index, last_tx_cn, last_c_index);
100 ++ "ring=%d old_c_index=%u c_index=%u txbds_ready=%u\n",
101 ++ ring->index, ring->c_index, c_index, txbds_ready);
102 +
103 +- while (last_tx_cn-- > 0) {
104 +- cb = ring->cbs + last_c_index;
105 ++ while (txbds_processed < txbds_ready) {
106 ++ cb = &ring->cbs[ring->clean_index];
107 + bcm_sysport_tx_reclaim_one(priv, cb, &bytes_compl, &pkts_compl);
108 +
109 + ring->desc_count++;
110 +- last_c_index++;
111 +- last_c_index &= (num_tx_cbs - 1);
112 ++ txbds_processed++;
113 ++
114 ++ if (likely(ring->clean_index < ring->size - 1))
115 ++ ring->clean_index++;
116 ++ else
117 ++ ring->clean_index = 0;
118 + }
119 +
120 + ring->c_index = c_index;
121 +@@ -1229,6 +1225,7 @@ static int bcm_sysport_init_tx_ring(struct bcm_sysport_priv *priv,
122 + netif_napi_add(priv->netdev, &ring->napi, bcm_sysport_tx_poll, 64);
123 + ring->index = index;
124 + ring->size = size;
125 ++ ring->clean_index = 0;
126 + ring->alloc_size = ring->size;
127 + ring->desc_cpu = p;
128 + ring->desc_count = ring->size;
129 +diff --git a/drivers/net/ethernet/broadcom/bcmsysport.h b/drivers/net/ethernet/broadcom/bcmsysport.h
130 +index f28bf545d7f4..8ace6ecb5f79 100644
131 +--- a/drivers/net/ethernet/broadcom/bcmsysport.h
132 ++++ b/drivers/net/ethernet/broadcom/bcmsysport.h
133 +@@ -638,7 +638,7 @@ struct bcm_sysport_tx_ring {
134 + unsigned int desc_count; /* Number of descriptors */
135 + unsigned int curr_desc; /* Current descriptor */
136 + unsigned int c_index; /* Last consumer index */
137 +- unsigned int p_index; /* Current producer index */
138 ++ unsigned int clean_index; /* Current clean index */
139 + struct bcm_sysport_cb *cbs; /* Transmit control blocks */
140 + struct dma_desc *desc_cpu; /* CPU view of the descriptor */
141 + struct bcm_sysport_priv *priv; /* private context backpointer */
142 +diff --git a/drivers/net/ethernet/freescale/fec_main.c b/drivers/net/ethernet/freescale/fec_main.c
143 +index 458e2d97d096..ae8e4fc22e7b 100644
144 +--- a/drivers/net/ethernet/freescale/fec_main.c
145 ++++ b/drivers/net/ethernet/freescale/fec_main.c
146 +@@ -3539,6 +3539,8 @@ fec_drv_remove(struct platform_device *pdev)
147 + fec_enet_mii_remove(fep);
148 + if (fep->reg_phy)
149 + regulator_disable(fep->reg_phy);
150 ++ pm_runtime_put(&pdev->dev);
151 ++ pm_runtime_disable(&pdev->dev);
152 + of_node_put(fep->phy_node);
153 + free_netdev(ndev);
154 +
155 +diff --git a/drivers/net/ethernet/ti/cpsw.c b/drivers/net/ethernet/ti/cpsw.c
156 +index fc958067d10a..435466c17852 100644
157 +--- a/drivers/net/ethernet/ti/cpsw.c
158 ++++ b/drivers/net/ethernet/ti/cpsw.c
159 +@@ -878,7 +878,8 @@ static void _cpsw_adjust_link(struct cpsw_slave *slave,
160 + /* set speed_in input in case RMII mode is used in 100Mbps */
161 + if (phy->speed == 100)
162 + mac_control |= BIT(15);
163 +- else if (phy->speed == 10)
164 ++ /* in band mode only works in 10Mbps RGMII mode */
165 ++ else if ((phy->speed == 10) && phy_interface_is_rgmii(phy))
166 + mac_control |= BIT(18); /* In Band mode */
167 +
168 + if (priv->rx_pause)
169 +diff --git a/drivers/net/team/team.c b/drivers/net/team/team.c
170 +index 61cd53838360..9bca36e1fefd 100644
171 +--- a/drivers/net/team/team.c
172 ++++ b/drivers/net/team/team.c
173 +@@ -2380,7 +2380,7 @@ send_done:
174 + if (!nlh) {
175 + err = __send_and_alloc_skb(&skb, team, portid, send_func);
176 + if (err)
177 +- goto errout;
178 ++ return err;
179 + goto send_done;
180 + }
181 +
182 +@@ -2660,7 +2660,7 @@ send_done:
183 + if (!nlh) {
184 + err = __send_and_alloc_skb(&skb, team, portid, send_func);
185 + if (err)
186 +- goto errout;
187 ++ return err;
188 + goto send_done;
189 + }
190 +
191 +diff --git a/drivers/s390/net/qeth_core_main.c b/drivers/s390/net/qeth_core_main.c
192 +index 75d37148c8cd..95c631125a20 100644
193 +--- a/drivers/s390/net/qeth_core_main.c
194 ++++ b/drivers/s390/net/qeth_core_main.c
195 +@@ -517,8 +517,7 @@ static inline int qeth_is_cq(struct qeth_card *card, unsigned int queue)
196 + queue == card->qdio.no_in_queues - 1;
197 + }
198 +
199 +-
200 +-static int qeth_issue_next_read(struct qeth_card *card)
201 ++static int __qeth_issue_next_read(struct qeth_card *card)
202 + {
203 + int rc;
204 + struct qeth_cmd_buffer *iob;
205 +@@ -549,6 +548,17 @@ static int qeth_issue_next_read(struct qeth_card *card)
206 + return rc;
207 + }
208 +
209 ++static int qeth_issue_next_read(struct qeth_card *card)
210 ++{
211 ++ int ret;
212 ++
213 ++ spin_lock_irq(get_ccwdev_lock(CARD_RDEV(card)));
214 ++ ret = __qeth_issue_next_read(card);
215 ++ spin_unlock_irq(get_ccwdev_lock(CARD_RDEV(card)));
216 ++
217 ++ return ret;
218 ++}
219 ++
220 + static struct qeth_reply *qeth_alloc_reply(struct qeth_card *card)
221 + {
222 + struct qeth_reply *reply;
223 +@@ -952,7 +962,7 @@ void qeth_clear_thread_running_bit(struct qeth_card *card, unsigned long thread)
224 + spin_lock_irqsave(&card->thread_mask_lock, flags);
225 + card->thread_running_mask &= ~thread;
226 + spin_unlock_irqrestore(&card->thread_mask_lock, flags);
227 +- wake_up(&card->wait_q);
228 ++ wake_up_all(&card->wait_q);
229 + }
230 + EXPORT_SYMBOL_GPL(qeth_clear_thread_running_bit);
231 +
232 +@@ -1156,6 +1166,7 @@ static void qeth_irq(struct ccw_device *cdev, unsigned long intparm,
233 + }
234 + rc = qeth_get_problem(cdev, irb);
235 + if (rc) {
236 ++ card->read_or_write_problem = 1;
237 + qeth_clear_ipacmd_list(card);
238 + qeth_schedule_recovery(card);
239 + goto out;
240 +@@ -1174,7 +1185,7 @@ static void qeth_irq(struct ccw_device *cdev, unsigned long intparm,
241 + return;
242 + if (channel == &card->read &&
243 + channel->state == CH_STATE_UP)
244 +- qeth_issue_next_read(card);
245 ++ __qeth_issue_next_read(card);
246 +
247 + iob = channel->iob;
248 + index = channel->buf_no;
249 +@@ -4969,8 +4980,6 @@ static void qeth_core_free_card(struct qeth_card *card)
250 + QETH_DBF_HEX(SETUP, 2, &card, sizeof(void *));
251 + qeth_clean_channel(&card->read);
252 + qeth_clean_channel(&card->write);
253 +- if (card->dev)
254 +- free_netdev(card->dev);
255 + kfree(card->ip_tbd_list);
256 + qeth_free_qdio_buffers(card);
257 + unregister_service_level(&card->qeth_service_level);
258 +diff --git a/drivers/s390/net/qeth_l2_main.c b/drivers/s390/net/qeth_l2_main.c
259 +index 58bcb3c9a86a..acdb5ccb0ab9 100644
260 +--- a/drivers/s390/net/qeth_l2_main.c
261 ++++ b/drivers/s390/net/qeth_l2_main.c
262 +@@ -1062,8 +1062,8 @@ static void qeth_l2_remove_device(struct ccwgroup_device *cgdev)
263 + qeth_l2_set_offline(cgdev);
264 +
265 + if (card->dev) {
266 +- netif_napi_del(&card->napi);
267 + unregister_netdev(card->dev);
268 ++ free_netdev(card->dev);
269 + card->dev = NULL;
270 + }
271 + return;
272 +diff --git a/drivers/s390/net/qeth_l3_main.c b/drivers/s390/net/qeth_l3_main.c
273 +index 0d6888cbd96e..bbdb3b6c54bb 100644
274 +--- a/drivers/s390/net/qeth_l3_main.c
275 ++++ b/drivers/s390/net/qeth_l3_main.c
276 +@@ -3243,8 +3243,8 @@ static void qeth_l3_remove_device(struct ccwgroup_device *cgdev)
277 + qeth_l3_set_offline(cgdev);
278 +
279 + if (card->dev) {
280 +- netif_napi_del(&card->napi);
281 + unregister_netdev(card->dev);
282 ++ free_netdev(card->dev);
283 + card->dev = NULL;
284 + }
285 +
286 +diff --git a/drivers/scsi/sg.c b/drivers/scsi/sg.c
287 +index 4b43effbf4fc..cb19c9ad1b57 100644
288 +--- a/drivers/scsi/sg.c
289 ++++ b/drivers/scsi/sg.c
290 +@@ -2074,11 +2074,12 @@ sg_get_rq_mark(Sg_fd * sfp, int pack_id)
291 + if ((1 == resp->done) && (!resp->sg_io_owned) &&
292 + ((-1 == pack_id) || (resp->header.pack_id == pack_id))) {
293 + resp->done = 2; /* guard against other readers */
294 +- break;
295 ++ write_unlock_irqrestore(&sfp->rq_list_lock, iflags);
296 ++ return resp;
297 + }
298 + }
299 + write_unlock_irqrestore(&sfp->rq_list_lock, iflags);
300 +- return resp;
301 ++ return NULL;
302 + }
303 +
304 + /* always adds to end of list */
305 +diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c
306 +index 4889a8ab77ce..a079ed14f230 100644
307 +--- a/kernel/irq/manage.c
308 ++++ b/kernel/irq/manage.c
309 +@@ -1189,10 +1189,8 @@ __setup_irq(unsigned int irq, struct irq_desc *desc, struct irqaction *new)
310 + * set the trigger type must match. Also all must
311 + * agree on ONESHOT.
312 + */
313 +- unsigned int oldtype = irqd_get_trigger_type(&desc->irq_data);
314 +-
315 + if (!((old->flags & new->flags) & IRQF_SHARED) ||
316 +- (oldtype != (new->flags & IRQF_TRIGGER_MASK)) ||
317 ++ ((old->flags ^ new->flags) & IRQF_TRIGGER_MASK) ||
318 + ((old->flags ^ new->flags) & IRQF_ONESHOT))
319 + goto mismatch;
320 +
321 +diff --git a/net/core/skbuff.c b/net/core/skbuff.c
322 +index 86b619501350..284370b61b8c 100644
323 +--- a/net/core/skbuff.c
324 ++++ b/net/core/skbuff.c
325 +@@ -3571,7 +3571,7 @@ int sock_queue_err_skb(struct sock *sk, struct sk_buff *skb)
326 +
327 + skb_queue_tail(&sk->sk_error_queue, skb);
328 + if (!sock_flag(sk, SOCK_DEAD))
329 +- sk->sk_data_ready(sk);
330 ++ sk->sk_error_report(sk);
331 + return 0;
332 + }
333 + EXPORT_SYMBOL(sock_queue_err_skb);
334 +diff --git a/net/dccp/proto.c b/net/dccp/proto.c
335 +index 9d43c1f40274..ff3b058cf58c 100644
336 +--- a/net/dccp/proto.c
337 ++++ b/net/dccp/proto.c
338 +@@ -789,6 +789,11 @@ int dccp_sendmsg(struct sock *sk, struct msghdr *msg, size_t len)
339 + if (skb == NULL)
340 + goto out_release;
341 +
342 ++ if (sk->sk_state == DCCP_CLOSED) {
343 ++ rc = -ENOTCONN;
344 ++ goto out_discard;
345 ++ }
346 ++
347 + skb_reserve(skb, sk->sk_prot->max_header);
348 + rc = memcpy_from_msg(skb_put(skb, len), msg, len);
349 + if (rc != 0)
350 +diff --git a/net/ieee802154/6lowpan/core.c b/net/ieee802154/6lowpan/core.c
351 +index 20c49c724ba0..e8b279443d37 100644
352 +--- a/net/ieee802154/6lowpan/core.c
353 ++++ b/net/ieee802154/6lowpan/core.c
354 +@@ -206,9 +206,13 @@ static inline void lowpan_netlink_fini(void)
355 + static int lowpan_device_event(struct notifier_block *unused,
356 + unsigned long event, void *ptr)
357 + {
358 +- struct net_device *wdev = netdev_notifier_info_to_dev(ptr);
359 ++ struct net_device *ndev = netdev_notifier_info_to_dev(ptr);
360 ++ struct wpan_dev *wpan_dev;
361 +
362 +- if (wdev->type != ARPHRD_IEEE802154)
363 ++ if (ndev->type != ARPHRD_IEEE802154)
364 ++ return NOTIFY_DONE;
365 ++ wpan_dev = ndev->ieee802154_ptr;
366 ++ if (!wpan_dev)
367 + goto out;
368 +
369 + switch (event) {
370 +@@ -217,8 +221,8 @@ static int lowpan_device_event(struct notifier_block *unused,
371 + * also delete possible lowpan interfaces which belongs
372 + * to the wpan interface.
373 + */
374 +- if (wdev->ieee802154_ptr->lowpan_dev)
375 +- lowpan_dellink(wdev->ieee802154_ptr->lowpan_dev, NULL);
376 ++ if (wpan_dev->lowpan_dev)
377 ++ lowpan_dellink(wpan_dev->lowpan_dev, NULL);
378 + break;
379 + default:
380 + break;
381 +diff --git a/net/ipv4/inet_fragment.c b/net/ipv4/inet_fragment.c
382 +index c5fb2f694ed0..b34fa1bb278f 100644
383 +--- a/net/ipv4/inet_fragment.c
384 ++++ b/net/ipv4/inet_fragment.c
385 +@@ -119,6 +119,9 @@ out:
386 +
387 + static bool inet_fragq_should_evict(const struct inet_frag_queue *q)
388 + {
389 ++ if (!hlist_unhashed(&q->list_evictor))
390 ++ return false;
391 ++
392 + return q->net->low_thresh == 0 ||
393 + frag_mem_limit(q->net) >= q->net->low_thresh;
394 + }
395 +diff --git a/net/ipv4/ip_sockglue.c b/net/ipv4/ip_sockglue.c
396 +index d35509212013..1b93ea766916 100644
397 +--- a/net/ipv4/ip_sockglue.c
398 ++++ b/net/ipv4/ip_sockglue.c
399 +@@ -241,7 +241,8 @@ int ip_cmsg_send(struct net *net, struct msghdr *msg, struct ipcm_cookie *ipc,
400 + src_info = (struct in6_pktinfo *)CMSG_DATA(cmsg);
401 + if (!ipv6_addr_v4mapped(&src_info->ipi6_addr))
402 + return -EINVAL;
403 +- ipc->oif = src_info->ipi6_ifindex;
404 ++ if (src_info->ipi6_ifindex)
405 ++ ipc->oif = src_info->ipi6_ifindex;
406 + ipc->addr = src_info->ipi6_addr.s6_addr32[3];
407 + continue;
408 + }
409 +@@ -264,7 +265,8 @@ int ip_cmsg_send(struct net *net, struct msghdr *msg, struct ipcm_cookie *ipc,
410 + if (cmsg->cmsg_len != CMSG_LEN(sizeof(struct in_pktinfo)))
411 + return -EINVAL;
412 + info = (struct in_pktinfo *)CMSG_DATA(cmsg);
413 +- ipc->oif = info->ipi_ifindex;
414 ++ if (info->ipi_ifindex)
415 ++ ipc->oif = info->ipi_ifindex;
416 + ipc->addr = info->ipi_spec_dst.s_addr;
417 + break;
418 + }
419 +diff --git a/net/ipv6/ndisc.c b/net/ipv6/ndisc.c
420 +index 55810e4899f1..3db8d7d1a986 100644
421 +--- a/net/ipv6/ndisc.c
422 ++++ b/net/ipv6/ndisc.c
423 +@@ -1478,7 +1478,8 @@ static void ndisc_fill_redirect_hdr_option(struct sk_buff *skb,
424 + *(opt++) = (rd_len >> 3);
425 + opt += 6;
426 +
427 +- memcpy(opt, ipv6_hdr(orig_skb), rd_len - 8);
428 ++ skb_copy_bits(orig_skb, skb_network_offset(orig_skb), opt,
429 ++ rd_len - 8);
430 + }
431 +
432 + void ndisc_send_redirect(struct sk_buff *skb, const struct in6_addr *target)
433 +diff --git a/net/iucv/af_iucv.c b/net/iucv/af_iucv.c
434 +index 20ab7b2ec463..aeffb65181f5 100644
435 +--- a/net/iucv/af_iucv.c
436 ++++ b/net/iucv/af_iucv.c
437 +@@ -2381,9 +2381,11 @@ static int afiucv_iucv_init(void)
438 + af_iucv_dev->driver = &af_iucv_driver;
439 + err = device_register(af_iucv_dev);
440 + if (err)
441 +- goto out_driver;
442 ++ goto out_iucv_dev;
443 + return 0;
444 +
445 ++out_iucv_dev:
446 ++ put_device(af_iucv_dev);
447 + out_driver:
448 + driver_unregister(&af_iucv_driver);
449 + out_iucv:
450 +diff --git a/net/l2tp/l2tp_core.c b/net/l2tp/l2tp_core.c
451 +index ec8f6a6485e3..92df832a1896 100644
452 +--- a/net/l2tp/l2tp_core.c
453 ++++ b/net/l2tp/l2tp_core.c
454 +@@ -1518,9 +1518,14 @@ int l2tp_tunnel_create(struct net *net, int fd, int version, u32 tunnel_id, u32
455 + encap = cfg->encap;
456 +
457 + /* Quick sanity checks */
458 ++ err = -EPROTONOSUPPORT;
459 ++ if (sk->sk_type != SOCK_DGRAM) {
460 ++ pr_debug("tunl %hu: fd %d wrong socket type\n",
461 ++ tunnel_id, fd);
462 ++ goto err;
463 ++ }
464 + switch (encap) {
465 + case L2TP_ENCAPTYPE_UDP:
466 +- err = -EPROTONOSUPPORT;
467 + if (sk->sk_protocol != IPPROTO_UDP) {
468 + pr_err("tunl %hu: fd %d wrong protocol, got %d, expected %d\n",
469 + tunnel_id, fd, sk->sk_protocol, IPPROTO_UDP);
470 +@@ -1528,7 +1533,6 @@ int l2tp_tunnel_create(struct net *net, int fd, int version, u32 tunnel_id, u32
471 + }
472 + break;
473 + case L2TP_ENCAPTYPE_IP:
474 +- err = -EPROTONOSUPPORT;
475 + if (sk->sk_protocol != IPPROTO_L2TP) {
476 + pr_err("tunl %hu: fd %d wrong protocol, got %d, expected %d\n",
477 + tunnel_id, fd, sk->sk_protocol, IPPROTO_L2TP);
478 +diff --git a/net/netlink/genetlink.c b/net/netlink/genetlink.c
479 +index 30c46aaf4575..d681dbaf00c1 100644
480 +--- a/net/netlink/genetlink.c
481 ++++ b/net/netlink/genetlink.c
482 +@@ -1143,7 +1143,7 @@ static int genlmsg_mcast(struct sk_buff *skb, u32 portid, unsigned long group,
483 + if (!err)
484 + delivered = true;
485 + else if (err != -ESRCH)
486 +- goto error;
487 ++ return err;
488 + return delivered ? 0 : -ESRCH;
489 + error:
490 + kfree_skb(skb);