Magellan Linux

Contents of /trunk/kernel-alx-legacy/patches-4.9/0378-4.9.279-all-fixes.patch

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3680 - (show annotations) (download)
Mon Oct 24 14:07:56 2022 UTC (19 months ago) by niro
File size: 5829 byte(s)
-linux-4.9.279
1 diff --git a/Makefile b/Makefile
2 index 82fc1c7475926..b88bc8d14ca38 100644
3 --- a/Makefile
4 +++ b/Makefile
5 @@ -1,6 +1,6 @@
6 VERSION = 4
7 PATCHLEVEL = 9
8 -SUBLEVEL = 278
9 +SUBLEVEL = 279
10 EXTRAVERSION =
11 NAME = Roaring Lionus
12
13 diff --git a/drivers/net/usb/r8152.c b/drivers/net/usb/r8152.c
14 index 64fdea3328861..96f6edcb00627 100644
15 --- a/drivers/net/usb/r8152.c
16 +++ b/drivers/net/usb/r8152.c
17 @@ -3347,9 +3347,10 @@ static int rtl8152_close(struct net_device *netdev)
18 tp->rtl_ops.down(tp);
19
20 mutex_unlock(&tp->control);
21 + }
22
23 + if (!res)
24 usb_autopm_put_interface(tp->intf);
25 - }
26
27 free_all_mem(tp);
28
29 diff --git a/drivers/spi/spi-mt65xx.c b/drivers/spi/spi-mt65xx.c
30 index 419aecb942749..dd0bf25d45502 100644
31 --- a/drivers/spi/spi-mt65xx.c
32 +++ b/drivers/spi/spi-mt65xx.c
33 @@ -337,24 +337,15 @@ static int mtk_spi_fifo_transfer(struct spi_master *master,
34 mtk_spi_prepare_transfer(master, xfer);
35 mtk_spi_setup_packet(master);
36
37 - cnt = xfer->len / 4;
38 - if (xfer->tx_buf)
39 + if (xfer->tx_buf) {
40 + cnt = xfer->len / 4;
41 iowrite32_rep(mdata->base + SPI_TX_DATA_REG, xfer->tx_buf, cnt);
42 -
43 - if (xfer->rx_buf)
44 - ioread32_rep(mdata->base + SPI_RX_DATA_REG, xfer->rx_buf, cnt);
45 -
46 - remainder = xfer->len % 4;
47 - if (remainder > 0) {
48 - reg_val = 0;
49 - if (xfer->tx_buf) {
50 + remainder = xfer->len % 4;
51 + if (remainder > 0) {
52 + reg_val = 0;
53 memcpy(&reg_val, xfer->tx_buf + (cnt * 4), remainder);
54 writel(reg_val, mdata->base + SPI_TX_DATA_REG);
55 }
56 - if (xfer->rx_buf) {
57 - reg_val = readl(mdata->base + SPI_RX_DATA_REG);
58 - memcpy(xfer->rx_buf + (cnt * 4), &reg_val, remainder);
59 - }
60 }
61
62 mtk_spi_enable_transfer(master);
63 diff --git a/fs/btrfs/compression.c b/fs/btrfs/compression.c
64 index d4d8b7e36b2ff..2534e44cfd40e 100644
65 --- a/fs/btrfs/compression.c
66 +++ b/fs/btrfs/compression.c
67 @@ -290,7 +290,7 @@ static void end_compressed_bio_write(struct bio *bio)
68 cb->start,
69 cb->start + cb->len - 1,
70 NULL,
71 - bio->bi_error ? 0 : 1);
72 + !cb->errors);
73 cb->compressed_pages[0]->mapping = NULL;
74
75 end_compressed_writeback(inode, cb);
76 diff --git a/include/linux/mfd/rt5033-private.h b/include/linux/mfd/rt5033-private.h
77 index 1b63fc2f42d1c..52d53d134f72c 100644
78 --- a/include/linux/mfd/rt5033-private.h
79 +++ b/include/linux/mfd/rt5033-private.h
80 @@ -203,13 +203,13 @@ enum rt5033_reg {
81 #define RT5033_REGULATOR_BUCK_VOLTAGE_MIN 1000000U
82 #define RT5033_REGULATOR_BUCK_VOLTAGE_MAX 3000000U
83 #define RT5033_REGULATOR_BUCK_VOLTAGE_STEP 100000U
84 -#define RT5033_REGULATOR_BUCK_VOLTAGE_STEP_NUM 32
85 +#define RT5033_REGULATOR_BUCK_VOLTAGE_STEP_NUM 21
86
87 /* RT5033 regulator LDO output voltage uV */
88 #define RT5033_REGULATOR_LDO_VOLTAGE_MIN 1200000U
89 #define RT5033_REGULATOR_LDO_VOLTAGE_MAX 3000000U
90 #define RT5033_REGULATOR_LDO_VOLTAGE_STEP 100000U
91 -#define RT5033_REGULATOR_LDO_VOLTAGE_STEP_NUM 32
92 +#define RT5033_REGULATOR_LDO_VOLTAGE_STEP_NUM 19
93
94 /* RT5033 regulator SAFE LDO output voltage uV */
95 #define RT5033_REGULATOR_SAFE_LDO_VOLTAGE 4900000U
96 diff --git a/net/bluetooth/hci_core.c b/net/bluetooth/hci_core.c
97 index 50b9a0bbe5dff..839c534bdcdb9 100644
98 --- a/net/bluetooth/hci_core.c
99 +++ b/net/bluetooth/hci_core.c
100 @@ -1533,6 +1533,14 @@ int hci_dev_do_close(struct hci_dev *hdev)
101
102 BT_DBG("%s %p", hdev->name, hdev);
103
104 + if (!hci_dev_test_flag(hdev, HCI_UNREGISTER) &&
105 + !hci_dev_test_flag(hdev, HCI_USER_CHANNEL) &&
106 + test_bit(HCI_UP, &hdev->flags)) {
107 + /* Execute vendor specific shutdown routine */
108 + if (hdev->shutdown)
109 + hdev->shutdown(hdev);
110 + }
111 +
112 cancel_delayed_work(&hdev->power_off);
113
114 hci_request_cancel_all(hdev);
115 @@ -1600,14 +1608,6 @@ int hci_dev_do_close(struct hci_dev *hdev)
116 clear_bit(HCI_INIT, &hdev->flags);
117 }
118
119 - if (!hci_dev_test_flag(hdev, HCI_UNREGISTER) &&
120 - !hci_dev_test_flag(hdev, HCI_USER_CHANNEL) &&
121 - test_bit(HCI_UP, &hdev->flags)) {
122 - /* Execute vendor specific shutdown routine */
123 - if (hdev->shutdown)
124 - hdev->shutdown(hdev);
125 - }
126 -
127 /* flush cmd work */
128 flush_work(&hdev->cmd_work);
129
130 diff --git a/net/can/raw.c b/net/can/raw.c
131 index 2bb50b1535c2f..082965c8dcaf6 100644
132 --- a/net/can/raw.c
133 +++ b/net/can/raw.c
134 @@ -541,10 +541,18 @@ static int raw_setsockopt(struct socket *sock, int level, int optname,
135 return -EFAULT;
136 }
137
138 + rtnl_lock();
139 lock_sock(sk);
140
141 - if (ro->bound && ro->ifindex)
142 + if (ro->bound && ro->ifindex) {
143 dev = dev_get_by_index(&init_net, ro->ifindex);
144 + if (!dev) {
145 + if (count > 1)
146 + kfree(filter);
147 + err = -ENODEV;
148 + goto out_fil;
149 + }
150 + }
151
152 if (ro->bound) {
153 /* (try to) register the new filters */
154 @@ -581,6 +589,7 @@ static int raw_setsockopt(struct socket *sock, int level, int optname,
155 dev_put(dev);
156
157 release_sock(sk);
158 + rtnl_unlock();
159
160 break;
161
162 @@ -593,10 +602,16 @@ static int raw_setsockopt(struct socket *sock, int level, int optname,
163
164 err_mask &= CAN_ERR_MASK;
165
166 + rtnl_lock();
167 lock_sock(sk);
168
169 - if (ro->bound && ro->ifindex)
170 + if (ro->bound && ro->ifindex) {
171 dev = dev_get_by_index(&init_net, ro->ifindex);
172 + if (!dev) {
173 + err = -ENODEV;
174 + goto out_err;
175 + }
176 + }
177
178 /* remove current error mask */
179 if (ro->bound) {
180 @@ -618,6 +633,7 @@ static int raw_setsockopt(struct socket *sock, int level, int optname,
181 dev_put(dev);
182
183 release_sock(sk);
184 + rtnl_unlock();
185
186 break;
187
188 diff --git a/net/core/skbuff.c b/net/core/skbuff.c
189 index 076444dac96d1..0e34f5ad62162 100644
190 --- a/net/core/skbuff.c
191 +++ b/net/core/skbuff.c
192 @@ -2288,8 +2288,11 @@ skb_zerocopy_headlen(const struct sk_buff *from)
193
194 if (!from->head_frag ||
195 skb_headlen(from) < L1_CACHE_BYTES ||
196 - skb_shinfo(from)->nr_frags >= MAX_SKB_FRAGS)
197 + skb_shinfo(from)->nr_frags >= MAX_SKB_FRAGS) {
198 hlen = skb_headlen(from);
199 + if (!hlen)
200 + hlen = from->len;
201 + }
202
203 if (skb_has_frag_list(from))
204 hlen = from->len;