Magellan Linux

Annotation of /trunk/kernel-alx-legacy/patches-4.9/0169-4.9.70-all-fixes.patch

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3608 - (hide annotations) (download)
Fri Aug 14 07:34:29 2020 UTC (3 years, 9 months ago) by niro
File size: 35753 byte(s)
-added kerenl-alx-legacy pkg
1 niro 3608 diff --git a/Makefile b/Makefile
2     index 8f2819bf8135..7ad3271a1a1d 100644
3     --- a/Makefile
4     +++ b/Makefile
5     @@ -1,6 +1,6 @@
6     VERSION = 4
7     PATCHLEVEL = 9
8     -SUBLEVEL = 69
9     +SUBLEVEL = 70
10     EXTRAVERSION =
11     NAME = Roaring Lionus
12    
13     @@ -370,9 +370,6 @@ LDFLAGS_MODULE =
14     CFLAGS_KERNEL =
15     AFLAGS_KERNEL =
16     LDFLAGS_vmlinux =
17     -CFLAGS_GCOV := -fprofile-arcs -ftest-coverage -fno-tree-loop-im $(call cc-disable-warning,maybe-uninitialized,)
18     -CFLAGS_KCOV := $(call cc-option,-fsanitize-coverage=trace-pc,)
19     -
20    
21     # Use USERINCLUDE when you must reference the UAPI directories only.
22     USERINCLUDE := \
23     @@ -393,21 +390,19 @@ LINUXINCLUDE := \
24    
25     LINUXINCLUDE += $(filter-out $(LINUXINCLUDE),$(USERINCLUDE))
26    
27     -KBUILD_CPPFLAGS := -D__KERNEL__
28     -
29     +KBUILD_AFLAGS := -D__ASSEMBLY__
30     KBUILD_CFLAGS := -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs \
31     -fno-strict-aliasing -fno-common \
32     -Werror-implicit-function-declaration \
33     -Wno-format-security \
34     - -std=gnu89 $(call cc-option,-fno-PIE)
35     -
36     -
37     + -std=gnu89
38     +KBUILD_CPPFLAGS := -D__KERNEL__
39     KBUILD_AFLAGS_KERNEL :=
40     KBUILD_CFLAGS_KERNEL :=
41     -KBUILD_AFLAGS := -D__ASSEMBLY__ $(call cc-option,-fno-PIE)
42     KBUILD_AFLAGS_MODULE := -DMODULE
43     KBUILD_CFLAGS_MODULE := -DMODULE
44     KBUILD_LDFLAGS_MODULE := -T $(srctree)/scripts/module-common.lds
45     +GCC_PLUGINS_CFLAGS :=
46    
47     # Read KERNELRELEASE from include/config/kernel.release (if it exists)
48     KERNELRELEASE = $(shell cat include/config/kernel.release 2> /dev/null)
49     @@ -420,7 +415,7 @@ export MAKE AWK GENKSYMS INSTALLKERNEL PERL PYTHON UTS_MACHINE
50     export HOSTCXX HOSTCXXFLAGS LDFLAGS_MODULE CHECK CHECKFLAGS
51    
52     export KBUILD_CPPFLAGS NOSTDINC_FLAGS LINUXINCLUDE OBJCOPYFLAGS LDFLAGS
53     -export KBUILD_CFLAGS CFLAGS_KERNEL CFLAGS_MODULE CFLAGS_GCOV CFLAGS_KCOV CFLAGS_KASAN CFLAGS_UBSAN
54     +export KBUILD_CFLAGS CFLAGS_KERNEL CFLAGS_MODULE CFLAGS_KASAN CFLAGS_UBSAN
55     export KBUILD_AFLAGS AFLAGS_KERNEL AFLAGS_MODULE
56     export KBUILD_AFLAGS_MODULE KBUILD_CFLAGS_MODULE KBUILD_LDFLAGS_MODULE
57     export KBUILD_AFLAGS_KERNEL KBUILD_CFLAGS_KERNEL
58     @@ -620,6 +615,12 @@ endif
59     # Defaults to vmlinux, but the arch makefile usually adds further targets
60     all: vmlinux
61    
62     +KBUILD_CFLAGS += $(call cc-option,-fno-PIE)
63     +KBUILD_AFLAGS += $(call cc-option,-fno-PIE)
64     +CFLAGS_GCOV := -fprofile-arcs -ftest-coverage -fno-tree-loop-im $(call cc-disable-warning,maybe-uninitialized,)
65     +CFLAGS_KCOV := $(call cc-option,-fsanitize-coverage=trace-pc,)
66     +export CFLAGS_GCOV CFLAGS_KCOV
67     +
68     # The arch Makefile can set ARCH_{CPP,A,C}FLAGS to override the default
69     # values of the respective KBUILD_* variables
70     ARCH_CPPFLAGS :=
71     diff --git a/arch/powerpc/include/asm/checksum.h b/arch/powerpc/include/asm/checksum.h
72     index a67bb09585f4..430d038eb2a4 100644
73     --- a/arch/powerpc/include/asm/checksum.h
74     +++ b/arch/powerpc/include/asm/checksum.h
75     @@ -53,17 +53,25 @@ static inline __sum16 csum_fold(__wsum sum)
76     return (__force __sum16)(~((__force u32)sum + tmp) >> 16);
77     }
78    
79     +static inline u32 from64to32(u64 x)
80     +{
81     + /* add up 32-bit and 32-bit for 32+c bit */
82     + x = (x & 0xffffffff) + (x >> 32);
83     + /* add up carry.. */
84     + x = (x & 0xffffffff) + (x >> 32);
85     + return (u32)x;
86     +}
87     +
88     static inline __wsum csum_tcpudp_nofold(__be32 saddr, __be32 daddr, __u32 len,
89     __u8 proto, __wsum sum)
90     {
91     #ifdef __powerpc64__
92     - unsigned long s = (__force u32)sum;
93     + u64 s = (__force u32)sum;
94    
95     s += (__force u32)saddr;
96     s += (__force u32)daddr;
97     s += proto + len;
98     - s += (s >> 32);
99     - return (__force __wsum) s;
100     + return (__force __wsum) from64to32(s);
101     #else
102     __asm__("\n\
103     addc %0,%0,%1 \n\
104     @@ -123,8 +131,7 @@ static inline __wsum ip_fast_csum_nofold(const void *iph, unsigned int ihl)
105    
106     for (i = 0; i < ihl - 1; i++, ptr++)
107     s += *ptr;
108     - s += (s >> 32);
109     - return (__force __wsum)s;
110     + return (__force __wsum)from64to32(s);
111     #else
112     __wsum sum, tmp;
113    
114     diff --git a/arch/s390/include/asm/switch_to.h b/arch/s390/include/asm/switch_to.h
115     index dde6b52359c5..ff2fbdafe689 100644
116     --- a/arch/s390/include/asm/switch_to.h
117     +++ b/arch/s390/include/asm/switch_to.h
118     @@ -29,17 +29,16 @@ static inline void restore_access_regs(unsigned int *acrs)
119     }
120    
121     #define switch_to(prev,next,last) do { \
122     - if (prev->mm) { \
123     - save_fpu_regs(); \
124     - save_access_regs(&prev->thread.acrs[0]); \
125     - save_ri_cb(prev->thread.ri_cb); \
126     - } \
127     + /* save_fpu_regs() sets the CIF_FPU flag, which enforces \
128     + * a restore of the floating point / vector registers as \
129     + * soon as the next task returns to user space \
130     + */ \
131     + save_fpu_regs(); \
132     + save_access_regs(&prev->thread.acrs[0]); \
133     + save_ri_cb(prev->thread.ri_cb); \
134     update_cr_regs(next); \
135     - if (next->mm) { \
136     - set_cpu_flag(CIF_FPU); \
137     - restore_access_regs(&next->thread.acrs[0]); \
138     - restore_ri_cb(next->thread.ri_cb, prev->thread.ri_cb); \
139     - } \
140     + restore_access_regs(&next->thread.acrs[0]); \
141     + restore_ri_cb(next->thread.ri_cb, prev->thread.ri_cb); \
142     prev = __switch_to(prev,next); \
143     } while (0)
144    
145     diff --git a/drivers/char/ipmi/ipmi_si_intf.c b/drivers/char/ipmi/ipmi_si_intf.c
146     index a112c0146012..e0a53156b782 100644
147     --- a/drivers/char/ipmi/ipmi_si_intf.c
148     +++ b/drivers/char/ipmi/ipmi_si_intf.c
149     @@ -241,6 +241,9 @@ struct smi_info {
150     /* The timer for this si. */
151     struct timer_list si_timer;
152    
153     + /* This flag is set, if the timer can be set */
154     + bool timer_can_start;
155     +
156     /* This flag is set, if the timer is running (timer_pending() isn't enough) */
157     bool timer_running;
158    
159     @@ -416,6 +419,8 @@ static enum si_sm_result start_next_msg(struct smi_info *smi_info)
160    
161     static void smi_mod_timer(struct smi_info *smi_info, unsigned long new_val)
162     {
163     + if (!smi_info->timer_can_start)
164     + return;
165     smi_info->last_timeout_jiffies = jiffies;
166     mod_timer(&smi_info->si_timer, new_val);
167     smi_info->timer_running = true;
168     @@ -435,21 +440,18 @@ static void start_new_msg(struct smi_info *smi_info, unsigned char *msg,
169     smi_info->handlers->start_transaction(smi_info->si_sm, msg, size);
170     }
171    
172     -static void start_check_enables(struct smi_info *smi_info, bool start_timer)
173     +static void start_check_enables(struct smi_info *smi_info)
174     {
175     unsigned char msg[2];
176    
177     msg[0] = (IPMI_NETFN_APP_REQUEST << 2);
178     msg[1] = IPMI_GET_BMC_GLOBAL_ENABLES_CMD;
179    
180     - if (start_timer)
181     - start_new_msg(smi_info, msg, 2);
182     - else
183     - smi_info->handlers->start_transaction(smi_info->si_sm, msg, 2);
184     + start_new_msg(smi_info, msg, 2);
185     smi_info->si_state = SI_CHECKING_ENABLES;
186     }
187    
188     -static void start_clear_flags(struct smi_info *smi_info, bool start_timer)
189     +static void start_clear_flags(struct smi_info *smi_info)
190     {
191     unsigned char msg[3];
192    
193     @@ -458,10 +460,7 @@ static void start_clear_flags(struct smi_info *smi_info, bool start_timer)
194     msg[1] = IPMI_CLEAR_MSG_FLAGS_CMD;
195     msg[2] = WDT_PRE_TIMEOUT_INT;
196    
197     - if (start_timer)
198     - start_new_msg(smi_info, msg, 3);
199     - else
200     - smi_info->handlers->start_transaction(smi_info->si_sm, msg, 3);
201     + start_new_msg(smi_info, msg, 3);
202     smi_info->si_state = SI_CLEARING_FLAGS;
203     }
204    
205     @@ -496,11 +495,11 @@ static void start_getting_events(struct smi_info *smi_info)
206     * Note that we cannot just use disable_irq(), since the interrupt may
207     * be shared.
208     */
209     -static inline bool disable_si_irq(struct smi_info *smi_info, bool start_timer)
210     +static inline bool disable_si_irq(struct smi_info *smi_info)
211     {
212     if ((smi_info->irq) && (!smi_info->interrupt_disabled)) {
213     smi_info->interrupt_disabled = true;
214     - start_check_enables(smi_info, start_timer);
215     + start_check_enables(smi_info);
216     return true;
217     }
218     return false;
219     @@ -510,7 +509,7 @@ static inline bool enable_si_irq(struct smi_info *smi_info)
220     {
221     if ((smi_info->irq) && (smi_info->interrupt_disabled)) {
222     smi_info->interrupt_disabled = false;
223     - start_check_enables(smi_info, true);
224     + start_check_enables(smi_info);
225     return true;
226     }
227     return false;
228     @@ -528,7 +527,7 @@ static struct ipmi_smi_msg *alloc_msg_handle_irq(struct smi_info *smi_info)
229    
230     msg = ipmi_alloc_smi_msg();
231     if (!msg) {
232     - if (!disable_si_irq(smi_info, true))
233     + if (!disable_si_irq(smi_info))
234     smi_info->si_state = SI_NORMAL;
235     } else if (enable_si_irq(smi_info)) {
236     ipmi_free_smi_msg(msg);
237     @@ -544,7 +543,7 @@ static void handle_flags(struct smi_info *smi_info)
238     /* Watchdog pre-timeout */
239     smi_inc_stat(smi_info, watchdog_pretimeouts);
240    
241     - start_clear_flags(smi_info, true);
242     + start_clear_flags(smi_info);
243     smi_info->msg_flags &= ~WDT_PRE_TIMEOUT_INT;
244     if (smi_info->intf)
245     ipmi_smi_watchdog_pretimeout(smi_info->intf);
246     @@ -927,7 +926,7 @@ static enum si_sm_result smi_event_handler(struct smi_info *smi_info,
247     * disable and messages disabled.
248     */
249     if (smi_info->supports_event_msg_buff || smi_info->irq) {
250     - start_check_enables(smi_info, true);
251     + start_check_enables(smi_info);
252     } else {
253     smi_info->curr_msg = alloc_msg_handle_irq(smi_info);
254     if (!smi_info->curr_msg)
255     @@ -1234,6 +1233,7 @@ static int smi_start_processing(void *send_info,
256    
257     /* Set up the timer that drives the interface. */
258     setup_timer(&new_smi->si_timer, smi_timeout, (long)new_smi);
259     + new_smi->timer_can_start = true;
260     smi_mod_timer(new_smi, jiffies + SI_TIMEOUT_JIFFIES);
261    
262     /* Try to claim any interrupts. */
263     @@ -3448,10 +3448,12 @@ static void check_for_broken_irqs(struct smi_info *smi_info)
264     check_set_rcv_irq(smi_info);
265     }
266    
267     -static inline void wait_for_timer_and_thread(struct smi_info *smi_info)
268     +static inline void stop_timer_and_thread(struct smi_info *smi_info)
269     {
270     if (smi_info->thread != NULL)
271     kthread_stop(smi_info->thread);
272     +
273     + smi_info->timer_can_start = false;
274     if (smi_info->timer_running)
275     del_timer_sync(&smi_info->si_timer);
276     }
277     @@ -3593,7 +3595,7 @@ static int try_smi_init(struct smi_info *new_smi)
278     * Start clearing the flags before we enable interrupts or the
279     * timer to avoid racing with the timer.
280     */
281     - start_clear_flags(new_smi, false);
282     + start_clear_flags(new_smi);
283    
284     /*
285     * IRQ is defined to be set when non-zero. req_events will
286     @@ -3671,7 +3673,7 @@ static int try_smi_init(struct smi_info *new_smi)
287     return 0;
288    
289     out_err_stop_timer:
290     - wait_for_timer_and_thread(new_smi);
291     + stop_timer_and_thread(new_smi);
292    
293     out_err:
294     new_smi->interrupt_disabled = true;
295     @@ -3865,7 +3867,7 @@ static void cleanup_one_si(struct smi_info *to_clean)
296     */
297     if (to_clean->irq_cleanup)
298     to_clean->irq_cleanup(to_clean);
299     - wait_for_timer_and_thread(to_clean);
300     + stop_timer_and_thread(to_clean);
301    
302     /*
303     * Timeouts are stopped, now make sure the interrupts are off
304     @@ -3876,7 +3878,7 @@ static void cleanup_one_si(struct smi_info *to_clean)
305     poll(to_clean);
306     schedule_timeout_uninterruptible(1);
307     }
308     - disable_si_irq(to_clean, false);
309     + disable_si_irq(to_clean);
310     while (to_clean->curr_msg || (to_clean->si_state != SI_NORMAL)) {
311     poll(to_clean);
312     schedule_timeout_uninterruptible(1);
313     diff --git a/drivers/infiniband/hw/cxgb4/t4fw_ri_api.h b/drivers/infiniband/hw/cxgb4/t4fw_ri_api.h
314     index 010c709ba3bb..58c531db4f4a 100644
315     --- a/drivers/infiniband/hw/cxgb4/t4fw_ri_api.h
316     +++ b/drivers/infiniband/hw/cxgb4/t4fw_ri_api.h
317     @@ -675,8 +675,8 @@ struct fw_ri_fr_nsmr_tpte_wr {
318     __u16 wrid;
319     __u8 r1[3];
320     __u8 len16;
321     - __u32 r2;
322     - __u32 stag;
323     + __be32 r2;
324     + __be32 stag;
325     struct fw_ri_tpte tpte;
326     __u64 pbl[2];
327     };
328     diff --git a/drivers/md/bitmap.c b/drivers/md/bitmap.c
329     index fb02c3979bf4..f7ff408567ad 100644
330     --- a/drivers/md/bitmap.c
331     +++ b/drivers/md/bitmap.c
332     @@ -2084,6 +2084,7 @@ int bitmap_resize(struct bitmap *bitmap, sector_t blocks,
333     for (k = 0; k < page; k++) {
334     kfree(new_bp[k].map);
335     }
336     + kfree(new_bp);
337    
338     /* restore some fields from old_counts */
339     bitmap->counts.bp = old_counts.bp;
340     @@ -2134,6 +2135,14 @@ int bitmap_resize(struct bitmap *bitmap, sector_t blocks,
341     block += old_blocks;
342     }
343    
344     + if (bitmap->counts.bp != old_counts.bp) {
345     + unsigned long k;
346     + for (k = 0; k < old_counts.pages; k++)
347     + if (!old_counts.bp[k].hijacked)
348     + kfree(old_counts.bp[k].map);
349     + kfree(old_counts.bp);
350     + }
351     +
352     if (!init) {
353     int i;
354     while (block < (chunks << chunkshift)) {
355     diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
356     index ef6bff820cf6..adf61a7b1b01 100644
357     --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
358     +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
359     @@ -1795,6 +1795,7 @@ static int stmmac_open(struct net_device *dev)
360    
361     priv->dma_buf_sz = STMMAC_ALIGN(buf_sz);
362     priv->rx_copybreak = STMMAC_RX_COPYBREAK;
363     + priv->mss = 0;
364    
365     ret = alloc_dma_desc_resources(priv);
366     if (ret < 0) {
367     diff --git a/drivers/net/ipvlan/ipvlan_core.c b/drivers/net/ipvlan/ipvlan_core.c
368     index b4e990743e1d..980e38524418 100644
369     --- a/drivers/net/ipvlan/ipvlan_core.c
370     +++ b/drivers/net/ipvlan/ipvlan_core.c
371     @@ -404,7 +404,7 @@ static int ipvlan_process_v6_outbound(struct sk_buff *skb)
372     struct dst_entry *dst;
373     int err, ret = NET_XMIT_DROP;
374     struct flowi6 fl6 = {
375     - .flowi6_iif = dev->ifindex,
376     + .flowi6_oif = dev->ifindex,
377     .daddr = ip6h->daddr,
378     .saddr = ip6h->saddr,
379     .flowi6_flags = FLOWI_FLAG_ANYSRC,
380     diff --git a/drivers/net/usb/qmi_wwan.c b/drivers/net/usb/qmi_wwan.c
381     index 9cf11c83993a..62725655d8e4 100644
382     --- a/drivers/net/usb/qmi_wwan.c
383     +++ b/drivers/net/usb/qmi_wwan.c
384     @@ -74,9 +74,11 @@ static void qmi_wwan_netdev_setup(struct net_device *net)
385     net->hard_header_len = 0;
386     net->addr_len = 0;
387     net->flags = IFF_POINTOPOINT | IFF_NOARP | IFF_MULTICAST;
388     + set_bit(EVENT_NO_IP_ALIGN, &dev->flags);
389     netdev_dbg(net, "mode: raw IP\n");
390     } else if (!net->header_ops) { /* don't bother if already set */
391     ether_setup(net);
392     + clear_bit(EVENT_NO_IP_ALIGN, &dev->flags);
393     netdev_dbg(net, "mode: Ethernet\n");
394     }
395    
396     @@ -936,6 +938,7 @@ static const struct usb_device_id products[] = {
397     {QMI_FIXED_INTF(0x1e0e, 0x9001, 5)}, /* SIMCom 7230E */
398     {QMI_QUIRK_SET_DTR(0x2c7c, 0x0125, 4)}, /* Quectel EC25, EC20 R2.0 Mini PCIe */
399     {QMI_QUIRK_SET_DTR(0x2c7c, 0x0121, 4)}, /* Quectel EC21 Mini PCIe */
400     + {QMI_FIXED_INTF(0x2c7c, 0x0296, 4)}, /* Quectel BG96 */
401    
402     /* 4. Gobi 1000 devices */
403     {QMI_GOBI1K_DEVICE(0x05c6, 0x9212)}, /* Acer Gobi Modem Device */
404     diff --git a/drivers/net/usb/usbnet.c b/drivers/net/usb/usbnet.c
405     index d5071e364d40..4ab82b998a0f 100644
406     --- a/drivers/net/usb/usbnet.c
407     +++ b/drivers/net/usb/usbnet.c
408     @@ -485,7 +485,10 @@ static int rx_submit (struct usbnet *dev, struct urb *urb, gfp_t flags)
409     return -ENOLINK;
410     }
411    
412     - skb = __netdev_alloc_skb_ip_align(dev->net, size, flags);
413     + if (test_bit(EVENT_NO_IP_ALIGN, &dev->flags))
414     + skb = __netdev_alloc_skb(dev->net, size, flags);
415     + else
416     + skb = __netdev_alloc_skb_ip_align(dev->net, size, flags);
417     if (!skb) {
418     netif_dbg(dev, rx_err, dev->net, "no rx skb\n");
419     usbnet_defer_kevent (dev, EVENT_RX_MEMORY);
420     diff --git a/drivers/s390/net/qeth_core.h b/drivers/s390/net/qeth_core.h
421     index d55e6438bb5e..e2bd2ad01b15 100644
422     --- a/drivers/s390/net/qeth_core.h
423     +++ b/drivers/s390/net/qeth_core.h
424     @@ -1004,6 +1004,9 @@ struct qeth_cmd_buffer *qeth_get_setassparms_cmd(struct qeth_card *,
425     int qeth_set_features(struct net_device *, netdev_features_t);
426     int qeth_recover_features(struct net_device *);
427     netdev_features_t qeth_fix_features(struct net_device *, netdev_features_t);
428     +netdev_features_t qeth_features_check(struct sk_buff *skb,
429     + struct net_device *dev,
430     + netdev_features_t features);
431    
432     /* exports for OSN */
433     int qeth_osn_assist(struct net_device *, void *, int);
434     diff --git a/drivers/s390/net/qeth_core_main.c b/drivers/s390/net/qeth_core_main.c
435     index 21ef8023430f..b5fa6bb56b29 100644
436     --- a/drivers/s390/net/qeth_core_main.c
437     +++ b/drivers/s390/net/qeth_core_main.c
438     @@ -19,6 +19,11 @@
439     #include <linux/mii.h>
440     #include <linux/kthread.h>
441     #include <linux/slab.h>
442     +#include <linux/if_vlan.h>
443     +#include <linux/netdevice.h>
444     +#include <linux/netdev_features.h>
445     +#include <linux/skbuff.h>
446     +
447     #include <net/iucv/af_iucv.h>
448     #include <net/dsfield.h>
449    
450     @@ -6240,6 +6245,32 @@ netdev_features_t qeth_fix_features(struct net_device *dev,
451     }
452     EXPORT_SYMBOL_GPL(qeth_fix_features);
453    
454     +netdev_features_t qeth_features_check(struct sk_buff *skb,
455     + struct net_device *dev,
456     + netdev_features_t features)
457     +{
458     + /* GSO segmentation builds skbs with
459     + * a (small) linear part for the headers, and
460     + * page frags for the data.
461     + * Compared to a linear skb, the header-only part consumes an
462     + * additional buffer element. This reduces buffer utilization, and
463     + * hurts throughput. So compress small segments into one element.
464     + */
465     + if (netif_needs_gso(skb, features)) {
466     + /* match skb_segment(): */
467     + unsigned int doffset = skb->data - skb_mac_header(skb);
468     + unsigned int hsize = skb_shinfo(skb)->gso_size;
469     + unsigned int hroom = skb_headroom(skb);
470     +
471     + /* linearize only if resulting skb allocations are order-0: */
472     + if (SKB_DATA_ALIGN(hroom + doffset + hsize) <= SKB_MAX_HEAD(0))
473     + features &= ~NETIF_F_SG;
474     + }
475     +
476     + return vlan_features_check(skb, features);
477     +}
478     +EXPORT_SYMBOL_GPL(qeth_features_check);
479     +
480     static int __init qeth_core_init(void)
481     {
482     int rc;
483     diff --git a/drivers/s390/net/qeth_l2_main.c b/drivers/s390/net/qeth_l2_main.c
484     index 8530477caab8..ac33f6c999b1 100644
485     --- a/drivers/s390/net/qeth_l2_main.c
486     +++ b/drivers/s390/net/qeth_l2_main.c
487     @@ -1084,6 +1084,7 @@ static const struct net_device_ops qeth_l2_netdev_ops = {
488     .ndo_stop = qeth_l2_stop,
489     .ndo_get_stats = qeth_get_stats,
490     .ndo_start_xmit = qeth_l2_hard_start_xmit,
491     + .ndo_features_check = qeth_features_check,
492     .ndo_validate_addr = eth_validate_addr,
493     .ndo_set_rx_mode = qeth_l2_set_rx_mode,
494     .ndo_do_ioctl = qeth_l2_do_ioctl,
495     @@ -1128,6 +1129,7 @@ static int qeth_l2_setup_netdev(struct qeth_card *card)
496     if (card->info.type == QETH_CARD_TYPE_OSD && !card->info.guestlan) {
497     card->dev->hw_features = NETIF_F_SG;
498     card->dev->vlan_features = NETIF_F_SG;
499     + card->dev->features |= NETIF_F_SG;
500     /* OSA 3S and earlier has no RX/TX support */
501     if (qeth_is_supported(card, IPA_OUTBOUND_CHECKSUM)) {
502     card->dev->hw_features |= NETIF_F_IP_CSUM;
503     @@ -1140,8 +1142,6 @@ static int qeth_l2_setup_netdev(struct qeth_card *card)
504     }
505     card->info.broadcast_capable = 1;
506     qeth_l2_request_initial_mac(card);
507     - card->dev->gso_max_size = (QETH_MAX_BUFFER_ELEMENTS(card) - 1) *
508     - PAGE_SIZE;
509     SET_NETDEV_DEV(card->dev, &card->gdev->dev);
510     netif_napi_add(card->dev, &card->napi, qeth_l2_poll, QETH_NAPI_WEIGHT);
511     netif_carrier_off(card->dev);
512     diff --git a/drivers/s390/net/qeth_l3_main.c b/drivers/s390/net/qeth_l3_main.c
513     index 03a2619166ca..5735fc3be6c7 100644
514     --- a/drivers/s390/net/qeth_l3_main.c
515     +++ b/drivers/s390/net/qeth_l3_main.c
516     @@ -1416,6 +1416,7 @@ qeth_l3_add_mc_to_hash(struct qeth_card *card, struct in_device *in4_dev)
517    
518     tmp->u.a4.addr = im4->multiaddr;
519     memcpy(tmp->mac, buf, sizeof(tmp->mac));
520     + tmp->is_multicast = 1;
521    
522     ipm = qeth_l3_ip_from_hash(card, tmp);
523     if (ipm) {
524     @@ -1593,7 +1594,7 @@ static void qeth_l3_free_vlan_addresses4(struct qeth_card *card,
525    
526     addr = qeth_l3_get_addr_buffer(QETH_PROT_IPV4);
527     if (!addr)
528     - return;
529     + goto out;
530    
531     spin_lock_bh(&card->ip_lock);
532    
533     @@ -1607,6 +1608,7 @@ static void qeth_l3_free_vlan_addresses4(struct qeth_card *card,
534     spin_unlock_bh(&card->ip_lock);
535    
536     kfree(addr);
537     +out:
538     in_dev_put(in_dev);
539     }
540    
541     @@ -1631,7 +1633,7 @@ static void qeth_l3_free_vlan_addresses6(struct qeth_card *card,
542    
543     addr = qeth_l3_get_addr_buffer(QETH_PROT_IPV6);
544     if (!addr)
545     - return;
546     + goto out;
547    
548     spin_lock_bh(&card->ip_lock);
549    
550     @@ -1646,6 +1648,7 @@ static void qeth_l3_free_vlan_addresses6(struct qeth_card *card,
551     spin_unlock_bh(&card->ip_lock);
552    
553     kfree(addr);
554     +out:
555     in6_dev_put(in6_dev);
556     #endif /* CONFIG_QETH_IPV6 */
557     }
558     @@ -3064,6 +3067,7 @@ static const struct net_device_ops qeth_l3_netdev_ops = {
559     .ndo_stop = qeth_l3_stop,
560     .ndo_get_stats = qeth_get_stats,
561     .ndo_start_xmit = qeth_l3_hard_start_xmit,
562     + .ndo_features_check = qeth_features_check,
563     .ndo_validate_addr = eth_validate_addr,
564     .ndo_set_rx_mode = qeth_l3_set_multicast_list,
565     .ndo_do_ioctl = qeth_l3_do_ioctl,
566     @@ -3120,6 +3124,7 @@ static int qeth_l3_setup_netdev(struct qeth_card *card)
567     card->dev->vlan_features = NETIF_F_SG |
568     NETIF_F_RXCSUM | NETIF_F_IP_CSUM |
569     NETIF_F_TSO;
570     + card->dev->features |= NETIF_F_SG;
571     }
572     }
573     } else if (card->info.type == QETH_CARD_TYPE_IQD) {
574     @@ -3145,8 +3150,8 @@ static int qeth_l3_setup_netdev(struct qeth_card *card)
575     NETIF_F_HW_VLAN_CTAG_RX |
576     NETIF_F_HW_VLAN_CTAG_FILTER;
577     netif_keep_dst(card->dev);
578     - card->dev->gso_max_size = (QETH_MAX_BUFFER_ELEMENTS(card) - 1) *
579     - PAGE_SIZE;
580     + netif_set_gso_max_size(card->dev, (QETH_MAX_BUFFER_ELEMENTS(card) - 1) *
581     + PAGE_SIZE);
582    
583     SET_NETDEV_DEV(card->dev, &card->gdev->dev);
584     netif_napi_add(card->dev, &card->napi, qeth_l3_poll, QETH_NAPI_WEIGHT);
585     diff --git a/drivers/usb/gadget/function/f_fs.c b/drivers/usb/gadget/function/f_fs.c
586     index 346a630cebd5..7b107e43b1c4 100644
587     --- a/drivers/usb/gadget/function/f_fs.c
588     +++ b/drivers/usb/gadget/function/f_fs.c
589     @@ -1015,7 +1015,7 @@ static ssize_t ffs_epfile_io(struct file *file, struct ffs_io_data *io_data)
590     else
591     ret = ep->status;
592     goto error_mutex;
593     - } else if (!(req = usb_ep_alloc_request(ep->ep, GFP_KERNEL))) {
594     + } else if (!(req = usb_ep_alloc_request(ep->ep, GFP_ATOMIC))) {
595     ret = -ENOMEM;
596     } else {
597     req->buf = data;
598     diff --git a/include/linux/rculist_nulls.h b/include/linux/rculist_nulls.h
599     index 4ae95f7e8597..6224a0ab0b1e 100644
600     --- a/include/linux/rculist_nulls.h
601     +++ b/include/linux/rculist_nulls.h
602     @@ -99,44 +99,6 @@ static inline void hlist_nulls_add_head_rcu(struct hlist_nulls_node *n,
603     first->pprev = &n->next;
604     }
605    
606     -/**
607     - * hlist_nulls_add_tail_rcu
608     - * @n: the element to add to the hash list.
609     - * @h: the list to add to.
610     - *
611     - * Description:
612     - * Adds the specified element to the end of the specified hlist_nulls,
613     - * while permitting racing traversals. NOTE: tail insertion requires
614     - * list traversal.
615     - *
616     - * The caller must take whatever precautions are necessary
617     - * (such as holding appropriate locks) to avoid racing
618     - * with another list-mutation primitive, such as hlist_nulls_add_head_rcu()
619     - * or hlist_nulls_del_rcu(), running on this same list.
620     - * However, it is perfectly legal to run concurrently with
621     - * the _rcu list-traversal primitives, such as
622     - * hlist_nulls_for_each_entry_rcu(), used to prevent memory-consistency
623     - * problems on Alpha CPUs. Regardless of the type of CPU, the
624     - * list-traversal primitive must be guarded by rcu_read_lock().
625     - */
626     -static inline void hlist_nulls_add_tail_rcu(struct hlist_nulls_node *n,
627     - struct hlist_nulls_head *h)
628     -{
629     - struct hlist_nulls_node *i, *last = NULL;
630     -
631     - for (i = hlist_nulls_first_rcu(h); !is_a_nulls(i);
632     - i = hlist_nulls_next_rcu(i))
633     - last = i;
634     -
635     - if (last) {
636     - n->next = last->next;
637     - n->pprev = &last->next;
638     - rcu_assign_pointer(hlist_nulls_next_rcu(last), n);
639     - } else {
640     - hlist_nulls_add_head_rcu(n, h);
641     - }
642     -}
643     -
644     /**
645     * hlist_nulls_for_each_entry_rcu - iterate over rcu list of given type
646     * @tpos: the type * to use as a loop cursor.
647     diff --git a/include/linux/usb/usbnet.h b/include/linux/usb/usbnet.h
648     index 6e0ce8c7b8cb..fde7550754df 100644
649     --- a/include/linux/usb/usbnet.h
650     +++ b/include/linux/usb/usbnet.h
651     @@ -79,6 +79,7 @@ struct usbnet {
652     # define EVENT_RX_KILL 10
653     # define EVENT_LINK_CHANGE 11
654     # define EVENT_SET_RX_MODE 12
655     +# define EVENT_NO_IP_ALIGN 13
656     };
657    
658     static inline struct usb_driver *driver_of(struct usb_interface *intf)
659     diff --git a/include/net/sock.h b/include/net/sock.h
660     index 92b269709b9a..6d42ed883bf9 100644
661     --- a/include/net/sock.h
662     +++ b/include/net/sock.h
663     @@ -648,11 +648,7 @@ static inline void sk_add_node_rcu(struct sock *sk, struct hlist_head *list)
664    
665     static inline void __sk_nulls_add_node_rcu(struct sock *sk, struct hlist_nulls_head *list)
666     {
667     - if (IS_ENABLED(CONFIG_IPV6) && sk->sk_reuseport &&
668     - sk->sk_family == AF_INET6)
669     - hlist_nulls_add_tail_rcu(&sk->sk_nulls_node, list);
670     - else
671     - hlist_nulls_add_head_rcu(&sk->sk_nulls_node, list);
672     + hlist_nulls_add_head_rcu(&sk->sk_nulls_node, list);
673     }
674    
675     static inline void sk_nulls_add_node_rcu(struct sock *sk, struct hlist_nulls_head *list)
676     diff --git a/kernel/audit.c b/kernel/audit.c
677     index f1ca11613379..da4e7c0e36f7 100644
678     --- a/kernel/audit.c
679     +++ b/kernel/audit.c
680     @@ -79,13 +79,13 @@ static int audit_initialized;
681     #define AUDIT_OFF 0
682     #define AUDIT_ON 1
683     #define AUDIT_LOCKED 2
684     -u32 audit_enabled;
685     -u32 audit_ever_enabled;
686     +u32 audit_enabled = AUDIT_OFF;
687     +u32 audit_ever_enabled = !!AUDIT_OFF;
688    
689     EXPORT_SYMBOL_GPL(audit_enabled);
690    
691     /* Default state when kernel boots without any parameters. */
692     -static u32 audit_default;
693     +static u32 audit_default = AUDIT_OFF;
694    
695     /* If auditing cannot proceed, audit_failure selects what happens. */
696     static u32 audit_failure = AUDIT_FAIL_PRINTK;
697     @@ -1199,8 +1199,6 @@ static int __init audit_init(void)
698     skb_queue_head_init(&audit_skb_queue);
699     skb_queue_head_init(&audit_skb_hold_queue);
700     audit_initialized = AUDIT_INITIALIZED;
701     - audit_enabled = audit_default;
702     - audit_ever_enabled |= !!audit_default;
703    
704     audit_log(NULL, GFP_KERNEL, AUDIT_KERNEL, "initialized");
705    
706     @@ -1217,6 +1215,8 @@ static int __init audit_enable(char *str)
707     audit_default = !!simple_strtol(str, NULL, 0);
708     if (!audit_default)
709     audit_initialized = AUDIT_DISABLED;
710     + audit_enabled = audit_default;
711     + audit_ever_enabled = !!audit_enabled;
712    
713     pr_info("%s\n", audit_default ?
714     "enabled (after initialization)" : "disabled (until reboot)");
715     diff --git a/net/dccp/minisocks.c b/net/dccp/minisocks.c
716     index 39e7e2bca8db..62522b8d2f97 100644
717     --- a/net/dccp/minisocks.c
718     +++ b/net/dccp/minisocks.c
719     @@ -57,10 +57,16 @@ void dccp_time_wait(struct sock *sk, int state, int timeo)
720     if (state == DCCP_TIME_WAIT)
721     timeo = DCCP_TIMEWAIT_LEN;
722    
723     + /* tw_timer is pinned, so we need to make sure BH are disabled
724     + * in following section, otherwise timer handler could run before
725     + * we complete the initialization.
726     + */
727     + local_bh_disable();
728     inet_twsk_schedule(tw, timeo);
729     /* Linkage updates. */
730     __inet_twsk_hashdance(tw, sk, &dccp_hashinfo);
731     inet_twsk_put(tw);
732     + local_bh_enable();
733     } else {
734     /* Sorry, if we're out of memory, just CLOSE this
735     * socket up. We've got bigger problems than
736     diff --git a/net/ipv4/tcp_minisocks.c b/net/ipv4/tcp_minisocks.c
737     index 64e1ba49c3e2..830a5645d8c1 100644
738     --- a/net/ipv4/tcp_minisocks.c
739     +++ b/net/ipv4/tcp_minisocks.c
740     @@ -328,10 +328,16 @@ void tcp_time_wait(struct sock *sk, int state, int timeo)
741     timeo = TCP_TIMEWAIT_LEN;
742     }
743    
744     + /* tw_timer is pinned, so we need to make sure BH are disabled
745     + * in following section, otherwise timer handler could run before
746     + * we complete the initialization.
747     + */
748     + local_bh_disable();
749     inet_twsk_schedule(tw, timeo);
750     /* Linkage updates. */
751     __inet_twsk_hashdance(tw, sk, &tcp_hashinfo);
752     inet_twsk_put(tw);
753     + local_bh_enable();
754     } else {
755     /* Sorry, if we're out of memory, just CLOSE this
756     * socket up. We've got bigger problems than
757     diff --git a/net/ipv6/sit.c b/net/ipv6/sit.c
758     index 40d740572354..db6d437002a6 100644
759     --- a/net/ipv6/sit.c
760     +++ b/net/ipv6/sit.c
761     @@ -1085,6 +1085,7 @@ static void ipip6_tunnel_update(struct ip_tunnel *t, struct ip_tunnel_parm *p)
762     ipip6_tunnel_link(sitn, t);
763     t->parms.iph.ttl = p->iph.ttl;
764     t->parms.iph.tos = p->iph.tos;
765     + t->parms.iph.frag_off = p->iph.frag_off;
766     if (t->parms.link != p->link) {
767     t->parms.link = p->link;
768     ipip6_tunnel_bind_dev(t->dev);
769     diff --git a/net/kcm/kcmsock.c b/net/kcm/kcmsock.c
770     index 7eb0e8fe3ca8..22785dc03051 100644
771     --- a/net/kcm/kcmsock.c
772     +++ b/net/kcm/kcmsock.c
773     @@ -1624,60 +1624,35 @@ static struct proto kcm_proto = {
774     };
775    
776     /* Clone a kcm socket. */
777     -static int kcm_clone(struct socket *osock, struct kcm_clone *info,
778     - struct socket **newsockp)
779     +static struct file *kcm_clone(struct socket *osock)
780     {
781     struct socket *newsock;
782     struct sock *newsk;
783     - struct file *newfile;
784     - int err, newfd;
785     + struct file *file;
786    
787     - err = -ENFILE;
788     newsock = sock_alloc();
789     if (!newsock)
790     - goto out;
791     + return ERR_PTR(-ENFILE);
792    
793     newsock->type = osock->type;
794     newsock->ops = osock->ops;
795    
796     __module_get(newsock->ops->owner);
797    
798     - newfd = get_unused_fd_flags(0);
799     - if (unlikely(newfd < 0)) {
800     - err = newfd;
801     - goto out_fd_fail;
802     - }
803     -
804     - newfile = sock_alloc_file(newsock, 0, osock->sk->sk_prot_creator->name);
805     - if (unlikely(IS_ERR(newfile))) {
806     - err = PTR_ERR(newfile);
807     - goto out_sock_alloc_fail;
808     - }
809     -
810     newsk = sk_alloc(sock_net(osock->sk), PF_KCM, GFP_KERNEL,
811     &kcm_proto, true);
812     if (!newsk) {
813     - err = -ENOMEM;
814     - goto out_sk_alloc_fail;
815     + sock_release(newsock);
816     + return ERR_PTR(-ENOMEM);
817     }
818     -
819     sock_init_data(newsock, newsk);
820     init_kcm_sock(kcm_sk(newsk), kcm_sk(osock->sk)->mux);
821    
822     - fd_install(newfd, newfile);
823     - *newsockp = newsock;
824     - info->fd = newfd;
825     -
826     - return 0;
827     + file = sock_alloc_file(newsock, 0, osock->sk->sk_prot_creator->name);
828     + if (IS_ERR(file))
829     + sock_release(newsock);
830    
831     -out_sk_alloc_fail:
832     - fput(newfile);
833     -out_sock_alloc_fail:
834     - put_unused_fd(newfd);
835     -out_fd_fail:
836     - sock_release(newsock);
837     -out:
838     - return err;
839     + return file;
840     }
841    
842     static int kcm_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg)
843     @@ -1707,21 +1682,25 @@ static int kcm_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg)
844     }
845     case SIOCKCMCLONE: {
846     struct kcm_clone info;
847     - struct socket *newsock = NULL;
848     + struct file *file;
849    
850     - if (copy_from_user(&info, (void __user *)arg, sizeof(info)))
851     - return -EFAULT;
852     + info.fd = get_unused_fd_flags(0);
853     + if (unlikely(info.fd < 0))
854     + return info.fd;
855    
856     - err = kcm_clone(sock, &info, &newsock);
857     -
858     - if (!err) {
859     - if (copy_to_user((void __user *)arg, &info,
860     - sizeof(info))) {
861     - err = -EFAULT;
862     - sys_close(info.fd);
863     - }
864     + file = kcm_clone(sock);
865     + if (IS_ERR(file)) {
866     + put_unused_fd(info.fd);
867     + return PTR_ERR(file);
868     }
869     -
870     + if (copy_to_user((void __user *)arg, &info,
871     + sizeof(info))) {
872     + put_unused_fd(info.fd);
873     + fput(file);
874     + return -EFAULT;
875     + }
876     + fd_install(info.fd, file);
877     + err = 0;
878     break;
879     }
880     default:
881     diff --git a/net/netfilter/core.c b/net/netfilter/core.c
882     index 004af030ef1a..d869ea50623e 100644
883     --- a/net/netfilter/core.c
884     +++ b/net/netfilter/core.c
885     @@ -364,6 +364,11 @@ int nf_hook_slow(struct sk_buff *skb, struct nf_hook_state *state)
886     ret = nf_queue(skb, state, &entry, verdict);
887     if (ret == 1 && entry)
888     goto next_hook;
889     + } else {
890     + /* Implicit handling for NF_STOLEN, as well as any other
891     + * non conventional verdicts.
892     + */
893     + ret = 0;
894     }
895     return ret;
896     }
897     diff --git a/net/packet/af_packet.c b/net/packet/af_packet.c
898     index e7f6657269e0..267db0d603bc 100644
899     --- a/net/packet/af_packet.c
900     +++ b/net/packet/af_packet.c
901     @@ -1661,7 +1661,6 @@ static int fanout_add(struct sock *sk, u16 id, u16 type_flags)
902     atomic_long_set(&rollover->num, 0);
903     atomic_long_set(&rollover->num_huge, 0);
904     atomic_long_set(&rollover->num_failed, 0);
905     - po->rollover = rollover;
906     }
907    
908     match = NULL;
909     @@ -1706,6 +1705,8 @@ static int fanout_add(struct sock *sk, u16 id, u16 type_flags)
910     if (atomic_read(&match->sk_ref) < PACKET_FANOUT_MAX) {
911     __dev_remove_pack(&po->prot_hook);
912     po->fanout = match;
913     + po->rollover = rollover;
914     + rollover = NULL;
915     atomic_inc(&match->sk_ref);
916     __fanout_link(sk, po);
917     err = 0;
918     @@ -1719,10 +1720,7 @@ static int fanout_add(struct sock *sk, u16 id, u16 type_flags)
919     }
920    
921     out:
922     - if (err && rollover) {
923     - kfree_rcu(rollover, rcu);
924     - po->rollover = NULL;
925     - }
926     + kfree(rollover);
927     mutex_unlock(&fanout_mutex);
928     return err;
929     }
930     @@ -1746,11 +1744,6 @@ static struct packet_fanout *fanout_release(struct sock *sk)
931     list_del(&f->list);
932     else
933     f = NULL;
934     -
935     - if (po->rollover) {
936     - kfree_rcu(po->rollover, rcu);
937     - po->rollover = NULL;
938     - }
939     }
940     mutex_unlock(&fanout_mutex);
941    
942     @@ -3039,6 +3032,7 @@ static int packet_release(struct socket *sock)
943     synchronize_net();
944    
945     if (f) {
946     + kfree(po->rollover);
947     fanout_release_data(f);
948     kfree(f);
949     }
950     @@ -3107,6 +3101,10 @@ static int packet_do_bind(struct sock *sk, const char *name, int ifindex,
951     if (need_rehook) {
952     if (po->running) {
953     rcu_read_unlock();
954     + /* prevents packet_notifier() from calling
955     + * register_prot_hook()
956     + */
957     + po->num = 0;
958     __unregister_prot_hook(sk, true);
959     rcu_read_lock();
960     dev_curr = po->prot_hook.dev;
961     @@ -3115,6 +3113,7 @@ static int packet_do_bind(struct sock *sk, const char *name, int ifindex,
962     dev->ifindex);
963     }
964    
965     + BUG_ON(po->running);
966     po->num = proto;
967     po->prot_hook.type = proto;
968    
969     @@ -3853,7 +3852,6 @@ static int packet_getsockopt(struct socket *sock, int level, int optname,
970     void *data = &val;
971     union tpacket_stats_u st;
972     struct tpacket_rollover_stats rstats;
973     - struct packet_rollover *rollover;
974    
975     if (level != SOL_PACKET)
976     return -ENOPROTOOPT;
977     @@ -3932,18 +3930,13 @@ static int packet_getsockopt(struct socket *sock, int level, int optname,
978     0);
979     break;
980     case PACKET_ROLLOVER_STATS:
981     - rcu_read_lock();
982     - rollover = rcu_dereference(po->rollover);
983     - if (rollover) {
984     - rstats.tp_all = atomic_long_read(&rollover->num);
985     - rstats.tp_huge = atomic_long_read(&rollover->num_huge);
986     - rstats.tp_failed = atomic_long_read(&rollover->num_failed);
987     - data = &rstats;
988     - lv = sizeof(rstats);
989     - }
990     - rcu_read_unlock();
991     - if (!rollover)
992     + if (!po->rollover)
993     return -EINVAL;
994     + rstats.tp_all = atomic_long_read(&po->rollover->num);
995     + rstats.tp_huge = atomic_long_read(&po->rollover->num_huge);
996     + rstats.tp_failed = atomic_long_read(&po->rollover->num_failed);
997     + data = &rstats;
998     + lv = sizeof(rstats);
999     break;
1000     case PACKET_TX_HAS_OFF:
1001     val = po->tp_tx_has_off;
1002     diff --git a/net/packet/internal.h b/net/packet/internal.h
1003     index 9ee46314b7d7..d55bfc34d6b3 100644
1004     --- a/net/packet/internal.h
1005     +++ b/net/packet/internal.h
1006     @@ -92,7 +92,6 @@ struct packet_fanout {
1007    
1008     struct packet_rollover {
1009     int sock;
1010     - struct rcu_head rcu;
1011     atomic_long_t num;
1012     atomic_long_t num_huge;
1013     atomic_long_t num_failed;
1014     diff --git a/net/rds/rdma.c b/net/rds/rdma.c
1015     index 60e90f761838..de8496e60735 100644
1016     --- a/net/rds/rdma.c
1017     +++ b/net/rds/rdma.c
1018     @@ -183,7 +183,7 @@ static int __rds_rdma_map(struct rds_sock *rs, struct rds_get_mr_args *args,
1019     long i;
1020     int ret;
1021    
1022     - if (rs->rs_bound_addr == 0) {
1023     + if (rs->rs_bound_addr == 0 || !rs->rs_transport) {
1024     ret = -ENOTCONN; /* XXX not a great errno */
1025     goto out;
1026     }
1027     diff --git a/net/tipc/server.c b/net/tipc/server.c
1028     index 3cd6402e812c..f4c1b18c5fb0 100644
1029     --- a/net/tipc/server.c
1030     +++ b/net/tipc/server.c
1031     @@ -313,6 +313,7 @@ static int tipc_accept_from_sock(struct tipc_conn *con)
1032     newcon->usr_data = s->tipc_conn_new(newcon->conid);
1033     if (!newcon->usr_data) {
1034     sock_release(newsock);
1035     + conn_put(newcon);
1036     return -ENOMEM;
1037     }
1038    
1039     diff --git a/net/tipc/udp_media.c b/net/tipc/udp_media.c
1040     index b58dc95f3d35..107375d80c70 100644
1041     --- a/net/tipc/udp_media.c
1042     +++ b/net/tipc/udp_media.c
1043     @@ -371,10 +371,6 @@ static int tipc_udp_recv(struct sock *sk, struct sk_buff *skb)
1044     goto rcu_out;
1045     }
1046    
1047     - tipc_rcv(sock_net(sk), skb, b);
1048     - rcu_read_unlock();
1049     - return 0;
1050     -
1051     rcu_out:
1052     rcu_read_unlock();
1053     out:
1054     diff --git a/virt/kvm/arm/vgic/vgic-its.c b/virt/kvm/arm/vgic/vgic-its.c
1055     index ebcaf4641d2b..31f562507915 100644
1056     --- a/virt/kvm/arm/vgic/vgic-its.c
1057     +++ b/virt/kvm/arm/vgic/vgic-its.c
1058     @@ -322,6 +322,7 @@ static int its_sync_lpi_pending_table(struct kvm_vcpu *vcpu)
1059     int ret = 0;
1060     u32 *intids;
1061     int nr_irqs, i;
1062     + u8 pendmask;
1063    
1064     nr_irqs = vgic_copy_lpi_list(vcpu->kvm, &intids);
1065     if (nr_irqs < 0)
1066     @@ -329,7 +330,6 @@ static int its_sync_lpi_pending_table(struct kvm_vcpu *vcpu)
1067    
1068     for (i = 0; i < nr_irqs; i++) {
1069     int byte_offset, bit_nr;
1070     - u8 pendmask;
1071    
1072     byte_offset = intids[i] / BITS_PER_BYTE;
1073     bit_nr = intids[i] % BITS_PER_BYTE;