Magellan Linux

Annotation of /trunk/kernel-alx-legacy/patches-4.9/0407-4.9.308-all-fixes.patch

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3709 - (hide annotations) (download)
Mon Oct 24 14:08:22 2022 UTC (19 months, 1 week ago) by niro
File size: 10450 byte(s)
-linux-4.9.308
1 niro 3709 diff --git a/Makefile b/Makefile
2     index 19363e65ef226..ecf06e17c3c88 100644
3     --- a/Makefile
4     +++ b/Makefile
5     @@ -1,6 +1,6 @@
6     VERSION = 4
7     PATCHLEVEL = 9
8     -SUBLEVEL = 307
9     +SUBLEVEL = 308
10     EXTRAVERSION =
11     NAME = Roaring Lionus
12    
13     diff --git a/arch/arm/boot/dts/rk3288.dtsi b/arch/arm/boot/dts/rk3288.dtsi
14     index 7b727d738b69d..4702aa980ef8d 100644
15     --- a/arch/arm/boot/dts/rk3288.dtsi
16     +++ b/arch/arm/boot/dts/rk3288.dtsi
17     @@ -918,7 +918,7 @@
18     status = "disabled";
19     };
20    
21     - crypto: cypto-controller@ff8a0000 {
22     + crypto: crypto@ff8a0000 {
23     compatible = "rockchip,rk3288-crypto";
24     reg = <0xff8a0000 0x4000>;
25     interrupts = <GIC_SPI 48 IRQ_TYPE_LEVEL_HIGH>;
26     diff --git a/arch/mips/kernel/smp.c b/arch/mips/kernel/smp.c
27     index 95ba4271af6a8..01aa8d6da4b95 100644
28     --- a/arch/mips/kernel/smp.c
29     +++ b/arch/mips/kernel/smp.c
30     @@ -369,6 +369,9 @@ asmlinkage void start_secondary(void)
31     cpu = smp_processor_id();
32     cpu_data[cpu].udelay_val = loops_per_jiffy;
33    
34     + set_cpu_sibling_map(cpu);
35     + set_cpu_core_map(cpu);
36     +
37     cpumask_set_cpu(cpu, &cpu_coherent_mask);
38     notify_cpu_starting(cpu);
39    
40     @@ -380,9 +383,6 @@ asmlinkage void start_secondary(void)
41     /* The CPU is running and counters synchronised, now mark it online */
42     set_cpu_online(cpu, true);
43    
44     - set_cpu_sibling_map(cpu);
45     - set_cpu_core_map(cpu);
46     -
47     calculate_cpu_foreign_map();
48    
49     /*
50     diff --git a/drivers/atm/eni.c b/drivers/atm/eni.c
51     index 2b7786cd548f8..0ec52fb2b7fcf 100644
52     --- a/drivers/atm/eni.c
53     +++ b/drivers/atm/eni.c
54     @@ -1114,6 +1114,8 @@ DPRINTK("iovcnt = %d\n",skb_shinfo(skb)->nr_frags);
55     }
56     paddr = dma_map_single(&eni_dev->pci_dev->dev,skb->data,skb->len,
57     DMA_TO_DEVICE);
58     + if (dma_mapping_error(&eni_dev->pci_dev->dev, paddr))
59     + return enq_next;
60     ENI_PRV_PADDR(skb) = paddr;
61     /* prepare DMA queue entries */
62     j = 0;
63     diff --git a/drivers/atm/firestream.c b/drivers/atm/firestream.c
64     index 7cb2b863e653e..7d74b7e1a8370 100644
65     --- a/drivers/atm/firestream.c
66     +++ b/drivers/atm/firestream.c
67     @@ -1692,6 +1692,8 @@ static int fs_init(struct fs_dev *dev)
68     dev->hw_base = pci_resource_start(pci_dev, 0);
69    
70     dev->base = ioremap(dev->hw_base, 0x1000);
71     + if (!dev->base)
72     + return 1;
73    
74     reset_chip (dev);
75    
76     diff --git a/drivers/input/tablet/aiptek.c b/drivers/input/tablet/aiptek.c
77     index 5a7e5e073e526..58c0705470be6 100644
78     --- a/drivers/input/tablet/aiptek.c
79     +++ b/drivers/input/tablet/aiptek.c
80     @@ -1821,15 +1821,13 @@ aiptek_probe(struct usb_interface *intf, const struct usb_device_id *id)
81     input_set_abs_params(inputdev, ABS_TILT_Y, AIPTEK_TILT_MIN, AIPTEK_TILT_MAX, 0, 0);
82     input_set_abs_params(inputdev, ABS_WHEEL, AIPTEK_WHEEL_MIN, AIPTEK_WHEEL_MAX - 1, 0, 0);
83    
84     - /* Verify that a device really has an endpoint */
85     - if (intf->cur_altsetting->desc.bNumEndpoints < 1) {
86     + err = usb_find_common_endpoints(intf->cur_altsetting,
87     + NULL, NULL, &endpoint, NULL);
88     + if (err) {
89     dev_err(&intf->dev,
90     - "interface has %d endpoints, but must have minimum 1\n",
91     - intf->cur_altsetting->desc.bNumEndpoints);
92     - err = -EINVAL;
93     + "interface has no int in endpoints, but must have minimum 1\n");
94     goto fail3;
95     }
96     - endpoint = &intf->cur_altsetting->endpoint[0].desc;
97    
98     /* Go set up our URB, which is called when the tablet receives
99     * input.
100     diff --git a/drivers/net/can/rcar/rcar_canfd.c b/drivers/net/can/rcar/rcar_canfd.c
101     index 43cdd5544b0c4..a127c853a4e90 100644
102     --- a/drivers/net/can/rcar/rcar_canfd.c
103     +++ b/drivers/net/can/rcar/rcar_canfd.c
104     @@ -1601,15 +1601,15 @@ static int rcar_canfd_channel_probe(struct rcar_canfd_global *gpriv, u32 ch,
105    
106     netif_napi_add(ndev, &priv->napi, rcar_canfd_rx_poll,
107     RCANFD_NAPI_WEIGHT);
108     + spin_lock_init(&priv->tx_lock);
109     + devm_can_led_init(ndev);
110     + gpriv->ch[priv->channel] = priv;
111     err = register_candev(ndev);
112     if (err) {
113     dev_err(&pdev->dev,
114     "register_candev() failed, error %d\n", err);
115     goto fail_candev;
116     }
117     - spin_lock_init(&priv->tx_lock);
118     - devm_can_led_init(ndev);
119     - gpriv->ch[priv->channel] = priv;
120     dev_info(&pdev->dev, "device registered (channel %u)\n", priv->channel);
121     return 0;
122    
123     diff --git a/drivers/net/ethernet/sfc/mcdi.c b/drivers/net/ethernet/sfc/mcdi.c
124     index 241520943adae..221798499e24b 100644
125     --- a/drivers/net/ethernet/sfc/mcdi.c
126     +++ b/drivers/net/ethernet/sfc/mcdi.c
127     @@ -162,9 +162,9 @@ static void efx_mcdi_send_request(struct efx_nic *efx, unsigned cmd,
128     /* Serialise with efx_mcdi_ev_cpl() and efx_mcdi_ev_death() */
129     spin_lock_bh(&mcdi->iface_lock);
130     ++mcdi->seqno;
131     + seqno = mcdi->seqno & SEQ_MASK;
132     spin_unlock_bh(&mcdi->iface_lock);
133    
134     - seqno = mcdi->seqno & SEQ_MASK;
135     xflags = 0;
136     if (mcdi->mode == MCDI_MODE_EVENTS)
137     xflags |= MCDI_HEADER_XFLAGS_EVREQ;
138     diff --git a/drivers/usb/gadget/function/rndis.c b/drivers/usb/gadget/function/rndis.c
139     index 1e5c2cbe99947..30eeaf9bc8eca 100644
140     --- a/drivers/usb/gadget/function/rndis.c
141     +++ b/drivers/usb/gadget/function/rndis.c
142     @@ -645,6 +645,7 @@ static int rndis_set_response(struct rndis_params *params,
143     BufLength = le32_to_cpu(buf->InformationBufferLength);
144     BufOffset = le32_to_cpu(buf->InformationBufferOffset);
145     if ((BufLength > RNDIS_MAX_TOTAL_SIZE) ||
146     + (BufOffset > RNDIS_MAX_TOTAL_SIZE) ||
147     (BufOffset + 8 >= RNDIS_MAX_TOTAL_SIZE))
148     return -EINVAL;
149    
150     diff --git a/drivers/usb/gadget/udc/core.c b/drivers/usb/gadget/udc/core.c
151     index 34ad964d54d11..5d8c3fd2acc89 100644
152     --- a/drivers/usb/gadget/udc/core.c
153     +++ b/drivers/usb/gadget/udc/core.c
154     @@ -1253,7 +1253,6 @@ static void usb_gadget_remove_driver(struct usb_udc *udc)
155     usb_gadget_udc_stop(udc);
156    
157     udc->driver = NULL;
158     - udc->dev.driver = NULL;
159     udc->gadget->dev.driver = NULL;
160     }
161    
162     @@ -1301,7 +1300,6 @@ static int udc_bind_to_driver(struct usb_udc *udc, struct usb_gadget_driver *dri
163     driver->function);
164    
165     udc->driver = driver;
166     - udc->dev.driver = &driver->driver;
167     udc->gadget->dev.driver = &driver->driver;
168    
169     ret = driver->bind(udc->gadget, driver);
170     @@ -1321,7 +1319,6 @@ err1:
171     dev_err(&udc->dev, "failed to start %s: %d\n",
172     udc->driver->function, ret);
173     udc->driver = NULL;
174     - udc->dev.driver = NULL;
175     udc->gadget->dev.driver = NULL;
176     return ret;
177     }
178     diff --git a/fs/sysfs/file.c b/fs/sysfs/file.c
179     index 300cdbdc8494e..c41e7f51150fc 100644
180     --- a/fs/sysfs/file.c
181     +++ b/fs/sysfs/file.c
182     @@ -565,8 +565,7 @@ int sysfs_emit(char *buf, const char *fmt, ...)
183     va_list args;
184     int len;
185    
186     - if (WARN(!buf || offset_in_page(buf),
187     - "invalid sysfs_emit: buf:%p\n", buf))
188     + if (WARN(!buf, "invalid sysfs_emit: buf:%p\n", buf))
189     return 0;
190    
191     va_start(args, fmt);
192     diff --git a/lib/Kconfig b/lib/Kconfig
193     index 260a80e313b90..600759707ffe1 100644
194     --- a/lib/Kconfig
195     +++ b/lib/Kconfig
196     @@ -16,7 +16,6 @@ config BITREVERSE
197     config HAVE_ARCH_BITREVERSE
198     bool
199     default n
200     - depends on BITREVERSE
201     help
202     This option enables the use of hardware bit-reversal instructions on
203     architectures which support such operations.
204     diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c
205     index aeda018e4c49e..6dfb964e1ad8f 100644
206     --- a/net/ipv4/tcp.c
207     +++ b/net/ipv4/tcp.c
208     @@ -1561,11 +1561,13 @@ int tcp_read_sock(struct sock *sk, read_descriptor_t *desc,
209     if (!copied)
210     copied = used;
211     break;
212     - } else if (used <= len) {
213     - seq += used;
214     - copied += used;
215     - offset += used;
216     }
217     + if (WARN_ON_ONCE(used > len))
218     + used = len;
219     + seq += used;
220     + copied += used;
221     + offset += used;
222     +
223     /* If recv_actor drops the lock (e.g. TCP splice
224     * receive) the skb pointer might be invalid when
225     * getting here: tcp_collapse might have deleted it
226     diff --git a/net/packet/af_packet.c b/net/packet/af_packet.c
227     index 8e62b05efe297..e79d6881a97eb 100644
228     --- a/net/packet/af_packet.c
229     +++ b/net/packet/af_packet.c
230     @@ -2244,8 +2244,11 @@ static int tpacket_rcv(struct sk_buff *skb, struct net_device *dev,
231     copy_skb = skb_get(skb);
232     skb_head = skb->data;
233     }
234     - if (copy_skb)
235     + if (copy_skb) {
236     + memset(&PACKET_SKB_CB(copy_skb)->sa.ll, 0,
237     + sizeof(PACKET_SKB_CB(copy_skb)->sa.ll));
238     skb_set_owner_r(copy_skb, sk);
239     + }
240     }
241     snaplen = po->rx_ring.frame_size - macoff;
242     if ((int)snaplen < 0) {
243     @@ -3422,6 +3425,8 @@ static int packet_recvmsg(struct socket *sock, struct msghdr *msg, size_t len,
244     sock_recv_ts_and_drops(msg, sk, skb);
245    
246     if (msg->msg_name) {
247     + const size_t max_len = min(sizeof(skb->cb),
248     + sizeof(struct sockaddr_storage));
249     int copy_len;
250    
251     /* If the address length field is there to be filled
252     @@ -3444,6 +3449,10 @@ static int packet_recvmsg(struct socket *sock, struct msghdr *msg, size_t len,
253     msg->msg_namelen = sizeof(struct sockaddr_ll);
254     }
255     }
256     + if (WARN_ON_ONCE(copy_len > max_len)) {
257     + copy_len = max_len;
258     + msg->msg_namelen = copy_len;
259     + }
260     memcpy(msg->msg_name, &PACKET_SKB_CB(skb)->sa, copy_len);
261     }
262    
263     diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c
264     index ab8bca39afa3f..562e138deba28 100644
265     --- a/net/wireless/nl80211.c
266     +++ b/net/wireless/nl80211.c
267     @@ -14068,7 +14068,8 @@ void cfg80211_ch_switch_notify(struct net_device *dev,
268     wdev->chandef = *chandef;
269     wdev->preset_chandef = *chandef;
270    
271     - if (wdev->iftype == NL80211_IFTYPE_STATION &&
272     + if ((wdev->iftype == NL80211_IFTYPE_STATION ||
273     + wdev->iftype == NL80211_IFTYPE_P2P_CLIENT) &&
274     !WARN_ON(!wdev->current_bss))
275     wdev->current_bss->pub.channel = chandef->chan;
276    
277     diff --git a/net/xfrm/xfrm_state.c b/net/xfrm/xfrm_state.c
278     index 4d19f2ff6e052..73b4e7c0d3368 100644
279     --- a/net/xfrm/xfrm_state.c
280     +++ b/net/xfrm/xfrm_state.c
281     @@ -1238,9 +1238,6 @@ static struct xfrm_state *xfrm_state_clone(struct xfrm_state *orig)
282    
283     memcpy(&x->mark, &orig->mark, sizeof(x->mark));
284    
285     - if (xfrm_init_state(x) < 0)
286     - goto error;
287     -
288     x->props.flags = orig->props.flags;
289     x->props.extra_flags = orig->props.extra_flags;
290    
291     @@ -1317,6 +1314,11 @@ struct xfrm_state *xfrm_state_migrate(struct xfrm_state *x,
292     if (!xc)
293     return NULL;
294    
295     + xc->props.family = m->new_family;
296     +
297     + if (xfrm_init_state(xc) < 0)
298     + goto error;
299     +
300     memcpy(&xc->id.daddr, &m->new_daddr, sizeof(xc->id.daddr));
301     memcpy(&xc->props.saddr, &m->new_saddr, sizeof(xc->props.saddr));
302    
303     diff --git a/tools/testing/selftests/vm/userfaultfd.c b/tools/testing/selftests/vm/userfaultfd.c
304     index d77ed41b20941..1f89d3dd82953 100644
305     --- a/tools/testing/selftests/vm/userfaultfd.c
306     +++ b/tools/testing/selftests/vm/userfaultfd.c
307     @@ -60,6 +60,7 @@
308     #include <signal.h>
309     #include <poll.h>
310     #include <string.h>
311     +#include <linux/mman.h>
312     #include <sys/mman.h>
313     #include <sys/syscall.h>
314     #include <sys/ioctl.h>