Gentoo Archives: gentoo-commits

From: Mike Pagano <mpagano@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/linux-patches:4.9 commit in: /
Date: Wed, 29 Dec 2021 13:13:21
Message-Id: 1640783573.be71210efddb7773ab2fe4e943ab5f73fcf3933c.mpagano@gentoo
1 commit: be71210efddb7773ab2fe4e943ab5f73fcf3933c
2 Author: Mike Pagano <mpagano <AT> gentoo <DOT> org>
3 AuthorDate: Wed Dec 29 13:12:53 2021 +0000
4 Commit: Mike Pagano <mpagano <AT> gentoo <DOT> org>
5 CommitDate: Wed Dec 29 13:12:53 2021 +0000
6 URL: https://gitweb.gentoo.org/proj/linux-patches.git/commit/?id=be71210e
7
8 Linux patch 4.9.295
9
10 Signed-off-by: Mike Pagano <mpagano <AT> gentoo.org>
11
12 0000_README | 4 +
13 1294_linux-4.9.295.patch | 465 +++++++++++++++++++++++++++++++++++++++++++++++
14 2 files changed, 469 insertions(+)
15
16 diff --git a/0000_README b/0000_README
17 index fc3f1cd2..e5a21f07 100644
18 --- a/0000_README
19 +++ b/0000_README
20 @@ -1219,6 +1219,10 @@ Patch: 1293_linux-4.9.294.patch
21 From: http://www.kernel.org
22 Desc: Linux 4.9.294
23
24 +Patch: 1294_linux-4.9.295.patch
25 +From: http://www.kernel.org
26 +Desc: Linux 4.9.295
27 +
28 Patch: 1500_XATTR_USER_PREFIX.patch
29 From: https://bugs.gentoo.org/show_bug.cgi?id=470644
30 Desc: Support for namespace user.pax.* on tmpfs.
31
32 diff --git a/1294_linux-4.9.295.patch b/1294_linux-4.9.295.patch
33 new file mode 100644
34 index 00000000..f13f60ae
35 --- /dev/null
36 +++ b/1294_linux-4.9.295.patch
37 @@ -0,0 +1,465 @@
38 +diff --git a/Documentation/networking/bonding.txt b/Documentation/networking/bonding.txt
39 +index 57f52cdce32e4..07b53b2b13df8 100644
40 +--- a/Documentation/networking/bonding.txt
41 ++++ b/Documentation/networking/bonding.txt
42 +@@ -191,11 +191,12 @@ ad_actor_sys_prio
43 + ad_actor_system
44 +
45 + In an AD system, this specifies the mac-address for the actor in
46 +- protocol packet exchanges (LACPDUs). The value cannot be NULL or
47 +- multicast. It is preferred to have the local-admin bit set for this
48 +- mac but driver does not enforce it. If the value is not given then
49 +- system defaults to using the masters' mac address as actors' system
50 +- address.
51 ++ protocol packet exchanges (LACPDUs). The value cannot be a multicast
52 ++ address. If the all-zeroes MAC is specified, bonding will internally
53 ++ use the MAC of the bond itself. It is preferred to have the
54 ++ local-admin bit set for this mac but driver does not enforce it. If
55 ++ the value is not given then system defaults to using the masters'
56 ++ mac address as actors' system address.
57 +
58 + This parameter has effect only in 802.3ad mode and is available through
59 + SysFs interface.
60 +diff --git a/Makefile b/Makefile
61 +index 6f3b4e1e9a144..b5afdb8a75219 100644
62 +--- a/Makefile
63 ++++ b/Makefile
64 +@@ -1,6 +1,6 @@
65 + VERSION = 4
66 + PATCHLEVEL = 9
67 +-SUBLEVEL = 294
68 ++SUBLEVEL = 295
69 + EXTRAVERSION =
70 + NAME = Roaring Lionus
71 +
72 +diff --git a/arch/arm/kernel/entry-armv.S b/arch/arm/kernel/entry-armv.S
73 +index 9f157e7c51e75..2cac25a69a85d 100644
74 +--- a/arch/arm/kernel/entry-armv.S
75 ++++ b/arch/arm/kernel/entry-armv.S
76 +@@ -631,11 +631,9 @@ call_fpe:
77 + tstne r0, #0x04000000 @ bit 26 set on both ARM and Thumb-2
78 + reteq lr
79 + and r8, r0, #0x00000f00 @ mask out CP number
80 +- THUMB( lsr r8, r8, #8 )
81 + mov r7, #1
82 +- add r6, r10, #TI_USED_CP
83 +- ARM( strb r7, [r6, r8, lsr #8] ) @ set appropriate used_cp[]
84 +- THUMB( strb r7, [r6, r8] ) @ set appropriate used_cp[]
85 ++ add r6, r10, r8, lsr #8 @ add used_cp[] array offset first
86 ++ strb r7, [r6, #TI_USED_CP] @ set appropriate used_cp[]
87 + #ifdef CONFIG_IWMMXT
88 + @ Test if we need to give access to iWMMXt coprocessors
89 + ldr r5, [r10, #TI_FLAGS]
90 +@@ -644,7 +642,7 @@ call_fpe:
91 + bcs iwmmxt_task_enable
92 + #endif
93 + ARM( add pc, pc, r8, lsr #6 )
94 +- THUMB( lsl r8, r8, #2 )
95 ++ THUMB( lsr r8, r8, #6 )
96 + THUMB( add pc, r8 )
97 + nop
98 +
99 +diff --git a/arch/x86/include/asm/pgtable.h b/arch/x86/include/asm/pgtable.h
100 +index e638e3bc3cb8a..6c40afcfe5b16 100644
101 +--- a/arch/x86/include/asm/pgtable.h
102 ++++ b/arch/x86/include/asm/pgtable.h
103 +@@ -1028,8 +1028,8 @@ static inline pte_t pte_swp_clear_soft_dirty(pte_t pte)
104 + }
105 + #endif
106 +
107 +-#define PKRU_AD_BIT 0x1
108 +-#define PKRU_WD_BIT 0x2
109 ++#define PKRU_AD_BIT 0x1u
110 ++#define PKRU_WD_BIT 0x2u
111 + #define PKRU_BITS_PER_PKEY 2
112 +
113 + static inline bool __pkru_allows_read(u32 pkru, u16 pkey)
114 +diff --git a/drivers/hid/hid-holtek-mouse.c b/drivers/hid/hid-holtek-mouse.c
115 +index 27c08ddab0e1a..96db7e96fcea9 100644
116 +--- a/drivers/hid/hid-holtek-mouse.c
117 ++++ b/drivers/hid/hid-holtek-mouse.c
118 +@@ -68,8 +68,23 @@ static __u8 *holtek_mouse_report_fixup(struct hid_device *hdev, __u8 *rdesc,
119 + static int holtek_mouse_probe(struct hid_device *hdev,
120 + const struct hid_device_id *id)
121 + {
122 ++ int ret;
123 ++
124 + if (!hid_is_usb(hdev))
125 + return -EINVAL;
126 ++
127 ++ ret = hid_parse(hdev);
128 ++ if (ret) {
129 ++ hid_err(hdev, "hid parse failed: %d\n", ret);
130 ++ return ret;
131 ++ }
132 ++
133 ++ ret = hid_hw_start(hdev, HID_CONNECT_DEFAULT);
134 ++ if (ret) {
135 ++ hid_err(hdev, "hw start failed: %d\n", ret);
136 ++ return ret;
137 ++ }
138 ++
139 + return 0;
140 + }
141 +
142 +diff --git a/drivers/hwmon/lm90.c b/drivers/hwmon/lm90.c
143 +index 293d1184976b3..1e9f029a328a6 100644
144 +--- a/drivers/hwmon/lm90.c
145 ++++ b/drivers/hwmon/lm90.c
146 +@@ -196,6 +196,7 @@ enum chips { lm90, adm1032, lm99, lm86, max6657, max6659, adt7461, max6680,
147 + #define LM90_STATUS_RHIGH (1 << 4) /* remote high temp limit tripped */
148 + #define LM90_STATUS_LLOW (1 << 5) /* local low temp limit tripped */
149 + #define LM90_STATUS_LHIGH (1 << 6) /* local high temp limit tripped */
150 ++#define LM90_STATUS_BUSY (1 << 7) /* conversion is ongoing */
151 +
152 + #define MAX6696_STATUS2_R2THRM (1 << 1) /* remote2 THERM limit tripped */
153 + #define MAX6696_STATUS2_R2OPEN (1 << 2) /* remote2 is an open circuit */
154 +@@ -692,7 +693,7 @@ static int lm90_update_device(struct device *dev)
155 + val = lm90_read_reg(client, LM90_REG_R_STATUS);
156 + if (val < 0)
157 + return val;
158 +- data->alarms = val; /* lower 8 bit of alarms */
159 ++ data->alarms = val & ~LM90_STATUS_BUSY;
160 +
161 + if (data->kind == max6696) {
162 + val = lm90_select_remote_channel(client, data, 1);
163 +@@ -1345,12 +1346,11 @@ static int lm90_detect(struct i2c_client *client,
164 + if (man_id < 0 || chip_id < 0 || config1 < 0 || convrate < 0)
165 + return -ENODEV;
166 +
167 +- if (man_id == 0x01 || man_id == 0x5C || man_id == 0x41) {
168 ++ if (man_id == 0x01 || man_id == 0x5C || man_id == 0xA1) {
169 + config2 = i2c_smbus_read_byte_data(client, LM90_REG_R_CONFIG2);
170 + if (config2 < 0)
171 + return -ENODEV;
172 +- } else
173 +- config2 = 0; /* Make compiler happy */
174 ++ }
175 +
176 + if ((address == 0x4C || address == 0x4D)
177 + && man_id == 0x01) { /* National Semiconductor */
178 +diff --git a/drivers/infiniband/hw/qib/qib_user_sdma.c b/drivers/infiniband/hw/qib/qib_user_sdma.c
179 +index 0dc15f95e7626..2d0b992579d6f 100644
180 +--- a/drivers/infiniband/hw/qib/qib_user_sdma.c
181 ++++ b/drivers/infiniband/hw/qib/qib_user_sdma.c
182 +@@ -946,7 +946,7 @@ static int qib_user_sdma_queue_pkts(const struct qib_devdata *dd,
183 + &addrlimit) ||
184 + addrlimit > type_max(typeof(pkt->addrlimit))) {
185 + ret = -EINVAL;
186 +- goto free_pbc;
187 ++ goto free_pkt;
188 + }
189 + pkt->addrlimit = addrlimit;
190 +
191 +diff --git a/drivers/net/bonding/bond_options.c b/drivers/net/bonding/bond_options.c
192 +index 258cb3999b0e3..5c6a962363096 100644
193 +--- a/drivers/net/bonding/bond_options.c
194 ++++ b/drivers/net/bonding/bond_options.c
195 +@@ -1408,7 +1408,7 @@ static int bond_option_ad_actor_system_set(struct bonding *bond,
196 + mac = (u8 *)&newval->value;
197 + }
198 +
199 +- if (!is_valid_ether_addr(mac))
200 ++ if (is_multicast_ether_addr(mac))
201 + goto err;
202 +
203 + netdev_info(bond->dev, "Setting ad_actor_system to %pM\n", mac);
204 +diff --git a/drivers/net/can/usb/kvaser_usb.c b/drivers/net/can/usb/kvaser_usb.c
205 +index 792a1afabf5d1..5ab088d02fbad 100644
206 +--- a/drivers/net/can/usb/kvaser_usb.c
207 ++++ b/drivers/net/can/usb/kvaser_usb.c
208 +@@ -31,7 +31,10 @@
209 + #define USB_SEND_TIMEOUT 1000 /* msecs */
210 + #define USB_RECV_TIMEOUT 1000 /* msecs */
211 + #define RX_BUFFER_SIZE 3072
212 +-#define CAN_USB_CLOCK 8000000
213 ++#define KVASER_USB_CAN_CLOCK_8MHZ 8000000
214 ++#define KVASER_USB_CAN_CLOCK_16MHZ 16000000
215 ++#define KVASER_USB_CAN_CLOCK_24MHZ 24000000
216 ++#define KVASER_USB_CAN_CLOCK_32MHZ 32000000
217 + #define MAX_NET_DEVICES 3
218 + #define MAX_USBCAN_NET_DEVICES 2
219 +
220 +@@ -142,6 +145,12 @@ static inline bool kvaser_is_usbcan(const struct usb_device_id *id)
221 + #define CMD_LEAF_USB_THROTTLE 77
222 + #define CMD_LEAF_LOG_MESSAGE 106
223 +
224 ++/* Leaf frequency options */
225 ++#define KVASER_USB_LEAF_SWOPTION_FREQ_MASK 0x60
226 ++#define KVASER_USB_LEAF_SWOPTION_FREQ_16_MHZ_CLK 0
227 ++#define KVASER_USB_LEAF_SWOPTION_FREQ_32_MHZ_CLK BIT(5)
228 ++#define KVASER_USB_LEAF_SWOPTION_FREQ_24_MHZ_CLK BIT(6)
229 ++
230 + /* error factors */
231 + #define M16C_EF_ACKE BIT(0)
232 + #define M16C_EF_CRCE BIT(1)
233 +@@ -472,6 +481,8 @@ struct kvaser_usb {
234 + bool rxinitdone;
235 + void *rxbuf[MAX_RX_URBS];
236 + dma_addr_t rxbuf_dma[MAX_RX_URBS];
237 ++
238 ++ struct can_clock clock;
239 + };
240 +
241 + struct kvaser_usb_net_priv {
242 +@@ -652,6 +663,27 @@ static int kvaser_usb_send_simple_msg(const struct kvaser_usb *dev,
243 + return rc;
244 + }
245 +
246 ++static void kvaser_usb_get_software_info_leaf(struct kvaser_usb *dev,
247 ++ const struct leaf_msg_softinfo *softinfo)
248 ++{
249 ++ u32 sw_options = le32_to_cpu(softinfo->sw_options);
250 ++
251 ++ dev->fw_version = le32_to_cpu(softinfo->fw_version);
252 ++ dev->max_tx_urbs = le16_to_cpu(softinfo->max_outstanding_tx);
253 ++
254 ++ switch (sw_options & KVASER_USB_LEAF_SWOPTION_FREQ_MASK) {
255 ++ case KVASER_USB_LEAF_SWOPTION_FREQ_16_MHZ_CLK:
256 ++ dev->clock.freq = KVASER_USB_CAN_CLOCK_16MHZ;
257 ++ break;
258 ++ case KVASER_USB_LEAF_SWOPTION_FREQ_24_MHZ_CLK:
259 ++ dev->clock.freq = KVASER_USB_CAN_CLOCK_24MHZ;
260 ++ break;
261 ++ case KVASER_USB_LEAF_SWOPTION_FREQ_32_MHZ_CLK:
262 ++ dev->clock.freq = KVASER_USB_CAN_CLOCK_32MHZ;
263 ++ break;
264 ++ }
265 ++}
266 ++
267 + static int kvaser_usb_get_software_info(struct kvaser_usb *dev)
268 + {
269 + struct kvaser_msg msg;
270 +@@ -667,14 +699,13 @@ static int kvaser_usb_get_software_info(struct kvaser_usb *dev)
271 +
272 + switch (dev->family) {
273 + case KVASER_LEAF:
274 +- dev->fw_version = le32_to_cpu(msg.u.leaf.softinfo.fw_version);
275 +- dev->max_tx_urbs =
276 +- le16_to_cpu(msg.u.leaf.softinfo.max_outstanding_tx);
277 ++ kvaser_usb_get_software_info_leaf(dev, &msg.u.leaf.softinfo);
278 + break;
279 + case KVASER_USBCAN:
280 + dev->fw_version = le32_to_cpu(msg.u.usbcan.softinfo.fw_version);
281 + dev->max_tx_urbs =
282 + le16_to_cpu(msg.u.usbcan.softinfo.max_outstanding_tx);
283 ++ dev->clock.freq = KVASER_USB_CAN_CLOCK_8MHZ;
284 + break;
285 + }
286 +
287 +@@ -1926,7 +1957,7 @@ static int kvaser_usb_init_one(struct usb_interface *intf,
288 + kvaser_usb_reset_tx_urb_contexts(priv);
289 +
290 + priv->can.state = CAN_STATE_STOPPED;
291 +- priv->can.clock.freq = CAN_USB_CLOCK;
292 ++ priv->can.clock.freq = dev->clock.freq;
293 + priv->can.bittiming_const = &kvaser_usb_bittiming_const;
294 + priv->can.do_set_bittiming = kvaser_usb_set_bittiming;
295 + priv->can.do_set_mode = kvaser_usb_set_mode;
296 +diff --git a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_sriov.h b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_sriov.h
297 +index 5f327659efa7a..85b688f60b876 100644
298 +--- a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_sriov.h
299 ++++ b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_sriov.h
300 +@@ -202,7 +202,7 @@ int qlcnic_sriov_get_vf_vport_info(struct qlcnic_adapter *,
301 + struct qlcnic_info *, u16);
302 + int qlcnic_sriov_cfg_vf_guest_vlan(struct qlcnic_adapter *, u16, u8);
303 + void qlcnic_sriov_free_vlans(struct qlcnic_adapter *);
304 +-void qlcnic_sriov_alloc_vlans(struct qlcnic_adapter *);
305 ++int qlcnic_sriov_alloc_vlans(struct qlcnic_adapter *);
306 + bool qlcnic_sriov_check_any_vlan(struct qlcnic_vf_info *);
307 + void qlcnic_sriov_del_vlan_id(struct qlcnic_sriov *,
308 + struct qlcnic_vf_info *, u16);
309 +diff --git a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_sriov_common.c b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_sriov_common.c
310 +index c58180f408448..44caa7c2077ec 100644
311 +--- a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_sriov_common.c
312 ++++ b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_sriov_common.c
313 +@@ -433,7 +433,7 @@ static int qlcnic_sriov_set_guest_vlan_mode(struct qlcnic_adapter *adapter,
314 + struct qlcnic_cmd_args *cmd)
315 + {
316 + struct qlcnic_sriov *sriov = adapter->ahw->sriov;
317 +- int i, num_vlans;
318 ++ int i, num_vlans, ret;
319 + u16 *vlans;
320 +
321 + if (sriov->allowed_vlans)
322 +@@ -444,7 +444,9 @@ static int qlcnic_sriov_set_guest_vlan_mode(struct qlcnic_adapter *adapter,
323 + dev_info(&adapter->pdev->dev, "Number of allowed Guest VLANs = %d\n",
324 + sriov->num_allowed_vlans);
325 +
326 +- qlcnic_sriov_alloc_vlans(adapter);
327 ++ ret = qlcnic_sriov_alloc_vlans(adapter);
328 ++ if (ret)
329 ++ return ret;
330 +
331 + if (!sriov->any_vlan)
332 + return 0;
333 +@@ -2164,7 +2166,7 @@ static int qlcnic_sriov_vf_resume(struct qlcnic_adapter *adapter)
334 + return err;
335 + }
336 +
337 +-void qlcnic_sriov_alloc_vlans(struct qlcnic_adapter *adapter)
338 ++int qlcnic_sriov_alloc_vlans(struct qlcnic_adapter *adapter)
339 + {
340 + struct qlcnic_sriov *sriov = adapter->ahw->sriov;
341 + struct qlcnic_vf_info *vf;
342 +@@ -2174,7 +2176,11 @@ void qlcnic_sriov_alloc_vlans(struct qlcnic_adapter *adapter)
343 + vf = &sriov->vf_info[i];
344 + vf->sriov_vlans = kcalloc(sriov->num_allowed_vlans,
345 + sizeof(*vf->sriov_vlans), GFP_KERNEL);
346 ++ if (!vf->sriov_vlans)
347 ++ return -ENOMEM;
348 + }
349 ++
350 ++ return 0;
351 + }
352 +
353 + void qlcnic_sriov_free_vlans(struct qlcnic_adapter *adapter)
354 +diff --git a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_sriov_pf.c b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_sriov_pf.c
355 +index 50eaafa3eaba3..c9f2cd2462230 100644
356 +--- a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_sriov_pf.c
357 ++++ b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_sriov_pf.c
358 +@@ -598,7 +598,9 @@ static int __qlcnic_pci_sriov_enable(struct qlcnic_adapter *adapter,
359 + if (err)
360 + goto del_flr_queue;
361 +
362 +- qlcnic_sriov_alloc_vlans(adapter);
363 ++ err = qlcnic_sriov_alloc_vlans(adapter);
364 ++ if (err)
365 ++ goto del_flr_queue;
366 +
367 + return err;
368 +
369 +diff --git a/drivers/net/ethernet/smsc/smc911x.c b/drivers/net/ethernet/smsc/smc911x.c
370 +index d0cf971aa4ebe..4237bd311e0e6 100644
371 +--- a/drivers/net/ethernet/smsc/smc911x.c
372 ++++ b/drivers/net/ethernet/smsc/smc911x.c
373 +@@ -2088,6 +2088,11 @@ static int smc911x_drv_probe(struct platform_device *pdev)
374 +
375 + ndev->dma = (unsigned char)-1;
376 + ndev->irq = platform_get_irq(pdev, 0);
377 ++ if (ndev->irq < 0) {
378 ++ ret = ndev->irq;
379 ++ goto release_both;
380 ++ }
381 ++
382 + lp = netdev_priv(ndev);
383 + lp->netdev = ndev;
384 + #ifdef SMC_DYNAMIC_BUS_CONFIG
385 +diff --git a/drivers/net/fjes/fjes_main.c b/drivers/net/fjes/fjes_main.c
386 +index 440047a239f57..26bb43a675131 100644
387 +--- a/drivers/net/fjes/fjes_main.c
388 ++++ b/drivers/net/fjes/fjes_main.c
389 +@@ -1219,6 +1219,11 @@ static int fjes_probe(struct platform_device *plat_dev)
390 + hw->hw_res.start = res->start;
391 + hw->hw_res.size = resource_size(res);
392 + hw->hw_res.irq = platform_get_irq(plat_dev, 0);
393 ++ if (hw->hw_res.irq < 0) {
394 ++ err = hw->hw_res.irq;
395 ++ goto err_free_control_wq;
396 ++ }
397 ++
398 + err = fjes_hw_init(&adapter->hw);
399 + if (err)
400 + goto err_free_control_wq;
401 +diff --git a/drivers/net/hamradio/mkiss.c b/drivers/net/hamradio/mkiss.c
402 +index 76340bc3cf445..8d85cedb4bf5b 100644
403 +--- a/drivers/net/hamradio/mkiss.c
404 ++++ b/drivers/net/hamradio/mkiss.c
405 +@@ -803,13 +803,14 @@ static void mkiss_close(struct tty_struct *tty)
406 + */
407 + netif_stop_queue(ax->dev);
408 +
409 +- /* Free all AX25 frame buffers. */
410 ++ unregister_netdev(ax->dev);
411 ++
412 ++ /* Free all AX25 frame buffers after unreg. */
413 + kfree(ax->rbuff);
414 + kfree(ax->xbuff);
415 +
416 + ax->tty = NULL;
417 +
418 +- unregister_netdev(ax->dev);
419 + free_netdev(ax->dev);
420 + }
421 +
422 +diff --git a/drivers/net/usb/lan78xx.c b/drivers/net/usb/lan78xx.c
423 +index 7752cc09a1da5..580c1e7666a45 100644
424 +--- a/drivers/net/usb/lan78xx.c
425 ++++ b/drivers/net/usb/lan78xx.c
426 +@@ -67,6 +67,8 @@
427 + #define LAN7850_USB_PRODUCT_ID (0x7850)
428 + #define LAN78XX_EEPROM_MAGIC (0x78A5)
429 + #define LAN78XX_OTP_MAGIC (0x78F3)
430 ++#define AT29M2AF_USB_VENDOR_ID (0x07C9)
431 ++#define AT29M2AF_USB_PRODUCT_ID (0x0012)
432 +
433 + #define MII_READ 1
434 + #define MII_WRITE 0
435 +@@ -3756,6 +3758,10 @@ static const struct usb_device_id products[] = {
436 + /* LAN7850 USB Gigabit Ethernet Device */
437 + USB_DEVICE(LAN78XX_USB_VENDOR_ID, LAN7850_USB_PRODUCT_ID),
438 + },
439 ++ {
440 ++ /* ATM2-AF USB Gigabit Ethernet Device */
441 ++ USB_DEVICE(AT29M2AF_USB_VENDOR_ID, AT29M2AF_USB_PRODUCT_ID),
442 ++ },
443 + {},
444 + };
445 + MODULE_DEVICE_TABLE(usb, products);
446 +diff --git a/net/ax25/af_ax25.c b/net/ax25/af_ax25.c
447 +index 64fede18aa33f..f4c8567e91b38 100644
448 +--- a/net/ax25/af_ax25.c
449 ++++ b/net/ax25/af_ax25.c
450 +@@ -88,8 +88,10 @@ static void ax25_kill_by_device(struct net_device *dev)
451 + again:
452 + ax25_for_each(s, &ax25_list) {
453 + if (s->ax25_dev == ax25_dev) {
454 +- s->ax25_dev = NULL;
455 + spin_unlock_bh(&ax25_list_lock);
456 ++ lock_sock(s->sk);
457 ++ s->ax25_dev = NULL;
458 ++ release_sock(s->sk);
459 + ax25_disconnect(s, ENETUNREACH);
460 + spin_lock_bh(&ax25_list_lock);
461 +
462 +diff --git a/net/phonet/pep.c b/net/phonet/pep.c
463 +index f6aa532bcbf64..1e7945df39928 100644
464 +--- a/net/phonet/pep.c
465 ++++ b/net/phonet/pep.c
466 +@@ -956,6 +956,8 @@ static int pep_ioctl(struct sock *sk, int cmd, unsigned long arg)
467 + ret = -EBUSY;
468 + else if (sk->sk_state == TCP_ESTABLISHED)
469 + ret = -EISCONN;
470 ++ else if (!pn->pn_sk.sobject)
471 ++ ret = -EADDRNOTAVAIL;
472 + else
473 + ret = pep_sock_enable(sk, NULL, 0);
474 + release_sock(sk);
475 +diff --git a/sound/core/jack.c b/sound/core/jack.c
476 +index f652e90efd7e7..5ddf81f091fa9 100644
477 +--- a/sound/core/jack.c
478 ++++ b/sound/core/jack.c
479 +@@ -234,6 +234,10 @@ int snd_jack_new(struct snd_card *card, const char *id, int type,
480 + return -ENOMEM;
481 +
482 + jack->id = kstrdup(id, GFP_KERNEL);
483 ++ if (jack->id == NULL) {
484 ++ kfree(jack);
485 ++ return -ENOMEM;
486 ++ }
487 +
488 + /* don't creat input device for phantom jack */
489 + if (!phantom_jack) {
490 +diff --git a/sound/drivers/opl3/opl3_midi.c b/sound/drivers/opl3/opl3_midi.c
491 +index 7821b07415a78..ff67c4b67e264 100644
492 +--- a/sound/drivers/opl3/opl3_midi.c
493 ++++ b/sound/drivers/opl3/opl3_midi.c
494 +@@ -415,7 +415,7 @@ void snd_opl3_note_on(void *p, int note, int vel, struct snd_midi_channel *chan)
495 + }
496 + if (instr_4op) {
497 + vp2 = &opl3->voices[voice + 3];
498 +- if (vp->state > 0) {
499 ++ if (vp2->state > 0) {
500 + opl3_reg = reg_side | (OPL3_REG_KEYON_BLOCK +
501 + voice_offset + 3);
502 + reg_val = vp->keyon_reg & ~OPL3_KEYON_BIT;