Contents of /trunk/kernel-lts/patches-3.4/0168-3.4.69-all-fixes.patch
Parent Directory | Revision Log
Revision 2323 -
(show annotations)
(download)
Mon Nov 18 12:00:18 2013 UTC (10 years, 10 months ago) by niro
File size: 37214 byte(s)
Mon Nov 18 12:00:18 2013 UTC (10 years, 10 months ago) by niro
File size: 37214 byte(s)
-linux-3.4.69
1 | diff --git a/arch/parisc/kernel/head.S b/arch/parisc/kernel/head.S |
2 | index 37aabd772fbb..d2d58258aea6 100644 |
3 | --- a/arch/parisc/kernel/head.S |
4 | +++ b/arch/parisc/kernel/head.S |
5 | @@ -195,6 +195,8 @@ common_stext: |
6 | ldw MEM_PDC_HI(%r0),%r6 |
7 | depd %r6, 31, 32, %r3 /* move to upper word */ |
8 | |
9 | + mfctl %cr30,%r6 /* PCX-W2 firmware bug */ |
10 | + |
11 | ldo PDC_PSW(%r0),%arg0 /* 21 */ |
12 | ldo PDC_PSW_SET_DEFAULTS(%r0),%arg1 /* 2 */ |
13 | ldo PDC_PSW_WIDE_BIT(%r0),%arg2 /* 2 */ |
14 | @@ -203,6 +205,8 @@ common_stext: |
15 | copy %r0,%arg3 |
16 | |
17 | stext_pdc_ret: |
18 | + mtctl %r6,%cr30 /* restore task thread info */ |
19 | + |
20 | /* restore rfi target address*/ |
21 | ldd TI_TASK-THREAD_SZ_ALGN(%sp), %r10 |
22 | tophys_r1 %r10 |
23 | diff --git a/arch/um/kernel/exitcode.c b/arch/um/kernel/exitcode.c |
24 | index 829df49dee99..41ebbfebb333 100644 |
25 | --- a/arch/um/kernel/exitcode.c |
26 | +++ b/arch/um/kernel/exitcode.c |
27 | @@ -40,9 +40,11 @@ static ssize_t exitcode_proc_write(struct file *file, |
28 | const char __user *buffer, size_t count, loff_t *pos) |
29 | { |
30 | char *end, buf[sizeof("nnnnn\0")]; |
31 | + size_t size; |
32 | int tmp; |
33 | |
34 | - if (copy_from_user(buf, buffer, count)) |
35 | + size = min(count, sizeof(buf)); |
36 | + if (copy_from_user(buf, buffer, size)) |
37 | return -EFAULT; |
38 | |
39 | tmp = simple_strtol(buf, &end, 0); |
40 | diff --git a/arch/xtensa/kernel/signal.c b/arch/xtensa/kernel/signal.c |
41 | index d78869a00b11..b08caaa59813 100644 |
42 | --- a/arch/xtensa/kernel/signal.c |
43 | +++ b/arch/xtensa/kernel/signal.c |
44 | @@ -343,7 +343,7 @@ static int setup_frame(int sig, struct k_sigaction *ka, siginfo_t *info, |
45 | |
46 | sp = regs->areg[1]; |
47 | |
48 | - if ((ka->sa.sa_flags & SA_ONSTACK) != 0 && ! on_sig_stack(sp)) { |
49 | + if ((ka->sa.sa_flags & SA_ONSTACK) != 0 && sas_ss_flags(sp) == 0) { |
50 | sp = current->sas_ss_sp + current->sas_ss_size; |
51 | } |
52 | |
53 | diff --git a/drivers/ata/libata-eh.c b/drivers/ata/libata-eh.c |
54 | index e47c224d7c28..37fb4d6069a2 100644 |
55 | --- a/drivers/ata/libata-eh.c |
56 | +++ b/drivers/ata/libata-eh.c |
57 | @@ -1287,14 +1287,14 @@ void ata_eh_qc_complete(struct ata_queued_cmd *qc) |
58 | * should be retried. To be used from EH. |
59 | * |
60 | * SCSI midlayer limits the number of retries to scmd->allowed. |
61 | - * scmd->retries is decremented for commands which get retried |
62 | + * scmd->allowed is incremented for commands which get retried |
63 | * due to unrelated failures (qc->err_mask is zero). |
64 | */ |
65 | void ata_eh_qc_retry(struct ata_queued_cmd *qc) |
66 | { |
67 | struct scsi_cmnd *scmd = qc->scsicmd; |
68 | - if (!qc->err_mask && scmd->retries) |
69 | - scmd->retries--; |
70 | + if (!qc->err_mask) |
71 | + scmd->allowed++; |
72 | __ata_eh_qc_complete(qc); |
73 | } |
74 | |
75 | diff --git a/drivers/gpu/drm/drm_drv.c b/drivers/gpu/drm/drm_drv.c |
76 | index 6116e3b75393..e9f1ef5d9340 100644 |
77 | --- a/drivers/gpu/drm/drm_drv.c |
78 | +++ b/drivers/gpu/drm/drm_drv.c |
79 | @@ -420,9 +420,16 @@ long drm_ioctl(struct file *filp, |
80 | asize = drv_size; |
81 | } |
82 | else if ((nr >= DRM_COMMAND_END) || (nr < DRM_COMMAND_BASE)) { |
83 | + u32 drv_size; |
84 | + |
85 | ioctl = &drm_ioctls[nr]; |
86 | - cmd = ioctl->cmd; |
87 | + |
88 | + drv_size = _IOC_SIZE(ioctl->cmd); |
89 | usize = asize = _IOC_SIZE(cmd); |
90 | + if (drv_size > asize) |
91 | + asize = drv_size; |
92 | + |
93 | + cmd = ioctl->cmd; |
94 | } else |
95 | goto err_i1; |
96 | |
97 | diff --git a/drivers/gpu/drm/radeon/atombios_encoders.c b/drivers/gpu/drm/radeon/atombios_encoders.c |
98 | index 2f755e2aeb86..6f4627fe24a1 100644 |
99 | --- a/drivers/gpu/drm/radeon/atombios_encoders.c |
100 | +++ b/drivers/gpu/drm/radeon/atombios_encoders.c |
101 | @@ -1430,7 +1430,7 @@ radeon_atom_encoder_dpms_dig(struct drm_encoder *encoder, int mode) |
102 | * does the same thing and more. |
103 | */ |
104 | if ((rdev->family != CHIP_RV710) && (rdev->family != CHIP_RV730) && |
105 | - (rdev->family != CHIP_RS880)) |
106 | + (rdev->family != CHIP_RS780) && (rdev->family != CHIP_RS880)) |
107 | atombios_dig_transmitter_setup(encoder, ATOM_TRANSMITTER_ACTION_ENABLE_OUTPUT, 0, 0); |
108 | } |
109 | if (ENCODER_MODE_IS_DP(atombios_get_encoder_mode(encoder)) && connector) { |
110 | diff --git a/drivers/md/raid1.c b/drivers/md/raid1.c |
111 | index ce5f0449e1b6..75e66c612505 100644 |
112 | --- a/drivers/md/raid1.c |
113 | +++ b/drivers/md/raid1.c |
114 | @@ -1357,6 +1357,7 @@ static int raid1_spare_active(struct mddev *mddev) |
115 | } |
116 | } |
117 | if (rdev |
118 | + && rdev->recovery_offset == MaxSector |
119 | && !test_bit(Faulty, &rdev->flags) |
120 | && !test_and_set_bit(In_sync, &rdev->flags)) { |
121 | count++; |
122 | diff --git a/drivers/md/raid10.c b/drivers/md/raid10.c |
123 | index f7febd8e3720..99a102d186ce 100644 |
124 | --- a/drivers/md/raid10.c |
125 | +++ b/drivers/md/raid10.c |
126 | @@ -1534,6 +1534,7 @@ static int raid10_spare_active(struct mddev *mddev) |
127 | } |
128 | sysfs_notify_dirent_safe(tmp->replacement->sysfs_state); |
129 | } else if (tmp->rdev |
130 | + && tmp->rdev->recovery_offset == MaxSector |
131 | && !test_bit(Faulty, &tmp->rdev->flags) |
132 | && !test_and_set_bit(In_sync, &tmp->rdev->flags)) { |
133 | count++; |
134 | diff --git a/drivers/net/can/flexcan.c b/drivers/net/can/flexcan.c |
135 | index 00baa7e094f4..e2131ca64a5f 100644 |
136 | --- a/drivers/net/can/flexcan.c |
137 | +++ b/drivers/net/can/flexcan.c |
138 | @@ -60,7 +60,7 @@ |
139 | #define FLEXCAN_MCR_BCC BIT(16) |
140 | #define FLEXCAN_MCR_LPRIO_EN BIT(13) |
141 | #define FLEXCAN_MCR_AEN BIT(12) |
142 | -#define FLEXCAN_MCR_MAXMB(x) ((x) & 0xf) |
143 | +#define FLEXCAN_MCR_MAXMB(x) ((x) & 0x1f) |
144 | #define FLEXCAN_MCR_IDAM_A (0 << 8) |
145 | #define FLEXCAN_MCR_IDAM_B (1 << 8) |
146 | #define FLEXCAN_MCR_IDAM_C (2 << 8) |
147 | @@ -701,9 +701,11 @@ static int flexcan_chip_start(struct net_device *dev) |
148 | * |
149 | */ |
150 | reg_mcr = flexcan_read(®s->mcr); |
151 | + reg_mcr &= ~FLEXCAN_MCR_MAXMB(0xff); |
152 | reg_mcr |= FLEXCAN_MCR_FRZ | FLEXCAN_MCR_FEN | FLEXCAN_MCR_HALT | |
153 | FLEXCAN_MCR_SUPV | FLEXCAN_MCR_WRN_EN | |
154 | - FLEXCAN_MCR_IDAM_C | FLEXCAN_MCR_SRX_DIS; |
155 | + FLEXCAN_MCR_IDAM_C | FLEXCAN_MCR_SRX_DIS | |
156 | + FLEXCAN_MCR_MAXMB(FLEXCAN_TX_BUF_ID); |
157 | netdev_dbg(dev, "%s: writing mcr=0x%08x", __func__, reg_mcr); |
158 | flexcan_write(reg_mcr, ®s->mcr); |
159 | |
160 | @@ -744,6 +746,10 @@ static int flexcan_chip_start(struct net_device *dev) |
161 | ®s->cantxfg[i].can_ctrl); |
162 | } |
163 | |
164 | + /* Abort any pending TX, mark Mailbox as INACTIVE */ |
165 | + flexcan_write(FLEXCAN_MB_CNT_CODE(0x4), |
166 | + ®s->cantxfg[FLEXCAN_TX_BUF_ID].can_ctrl); |
167 | + |
168 | /* acceptance mask/acceptance code (accept everything) */ |
169 | flexcan_write(0x0, ®s->rxgmask); |
170 | flexcan_write(0x0, ®s->rx14mask); |
171 | diff --git a/drivers/net/wireless/rtlwifi/rtl8192cu/trx.c b/drivers/net/wireless/rtlwifi/rtl8192cu/trx.c |
172 | index 21bc827c5fa6..9adb21a1133e 100644 |
173 | --- a/drivers/net/wireless/rtlwifi/rtl8192cu/trx.c |
174 | +++ b/drivers/net/wireless/rtlwifi/rtl8192cu/trx.c |
175 | @@ -343,7 +343,8 @@ bool rtl92cu_rx_query_desc(struct ieee80211_hw *hw, |
176 | (bool)GET_RX_DESC_PAGGR(pdesc)); |
177 | rx_status->mactime = GET_RX_DESC_TSFL(pdesc); |
178 | if (phystatus) { |
179 | - p_drvinfo = (struct rx_fwinfo_92c *)(pdesc + RTL_RX_DESC_SIZE); |
180 | + p_drvinfo = (struct rx_fwinfo_92c *)(skb->data + |
181 | + stats->rx_bufshift); |
182 | rtl92c_translate_rx_signal_stuff(hw, skb, stats, pdesc, |
183 | p_drvinfo); |
184 | } |
185 | diff --git a/drivers/scsi/aacraid/linit.c b/drivers/scsi/aacraid/linit.c |
186 | index 0d279c445a30..e9313f85bc70 100644 |
187 | --- a/drivers/scsi/aacraid/linit.c |
188 | +++ b/drivers/scsi/aacraid/linit.c |
189 | @@ -777,6 +777,8 @@ static long aac_compat_do_ioctl(struct aac_dev *dev, unsigned cmd, unsigned long |
190 | static int aac_compat_ioctl(struct scsi_device *sdev, int cmd, void __user *arg) |
191 | { |
192 | struct aac_dev *dev = (struct aac_dev *)sdev->host->hostdata; |
193 | + if (!capable(CAP_SYS_RAWIO)) |
194 | + return -EPERM; |
195 | return aac_compat_do_ioctl(dev, cmd, (unsigned long)arg); |
196 | } |
197 | |
198 | diff --git a/drivers/staging/bcm/Bcmchar.c b/drivers/staging/bcm/Bcmchar.c |
199 | index cf3059216958..c0d612ff8519 100644 |
200 | --- a/drivers/staging/bcm/Bcmchar.c |
201 | +++ b/drivers/staging/bcm/Bcmchar.c |
202 | @@ -1957,6 +1957,7 @@ cntrlEnd: |
203 | |
204 | BCM_DEBUG_PRINT(Adapter, DBG_TYPE_OTHERS, OSAL_DBG, DBG_LVL_ALL, "Called IOCTL_BCM_GET_DEVICE_DRIVER_INFO\n"); |
205 | |
206 | + memset(&DevInfo, 0, sizeof(DevInfo)); |
207 | DevInfo.MaxRDMBufferSize = BUFFER_4K; |
208 | DevInfo.u32DSDStartOffset = EEPROM_CALPARAM_START; |
209 | DevInfo.u32RxAlignmentCorrection = 0; |
210 | diff --git a/drivers/staging/ozwpan/ozcdev.c b/drivers/staging/ozwpan/ozcdev.c |
211 | index 1c380d687963..1c9245119567 100644 |
212 | --- a/drivers/staging/ozwpan/ozcdev.c |
213 | +++ b/drivers/staging/ozwpan/ozcdev.c |
214 | @@ -153,6 +153,9 @@ ssize_t oz_cdev_write(struct file *filp, const char __user *buf, size_t count, |
215 | struct oz_app_hdr *app_hdr; |
216 | struct oz_serial_ctx *ctx; |
217 | |
218 | + if (count > sizeof(ei->data) - sizeof(*elt) - sizeof(*app_hdr)) |
219 | + return -EINVAL; |
220 | + |
221 | spin_lock_bh(&g_cdev.lock); |
222 | pd = g_cdev.active_pd; |
223 | if (pd) |
224 | diff --git a/drivers/usb/core/quirks.c b/drivers/usb/core/quirks.c |
225 | index 8659cd94639a..f6904d819ca8 100644 |
226 | --- a/drivers/usb/core/quirks.c |
227 | +++ b/drivers/usb/core/quirks.c |
228 | @@ -119,6 +119,9 @@ static const struct usb_device_id usb_quirk_list[] = { |
229 | /* Alcor Micro Corp. Hub */ |
230 | { USB_DEVICE(0x058f, 0x9254), .driver_info = USB_QUIRK_RESET_RESUME }, |
231 | |
232 | + /* MicroTouch Systems touchscreen */ |
233 | + { USB_DEVICE(0x0596, 0x051e), .driver_info = USB_QUIRK_RESET_RESUME }, |
234 | + |
235 | /* appletouch */ |
236 | { USB_DEVICE(0x05ac, 0x021a), .driver_info = USB_QUIRK_RESET_RESUME }, |
237 | |
238 | @@ -152,6 +155,9 @@ static const struct usb_device_id usb_quirk_list[] = { |
239 | /* Broadcom BCM92035DGROM BT dongle */ |
240 | { USB_DEVICE(0x0a5c, 0x2021), .driver_info = USB_QUIRK_RESET_RESUME }, |
241 | |
242 | + /* MAYA44USB sound device */ |
243 | + { USB_DEVICE(0x0a92, 0x0091), .driver_info = USB_QUIRK_RESET_RESUME }, |
244 | + |
245 | /* Action Semiconductor flash disk */ |
246 | { USB_DEVICE(0x10d6, 0x2200), .driver_info = |
247 | USB_QUIRK_STRING_FETCH_255 }, |
248 | diff --git a/drivers/usb/serial/ftdi_sio.c b/drivers/usb/serial/ftdi_sio.c |
249 | index 3e4c27dd1590..904e8341b2c9 100644 |
250 | --- a/drivers/usb/serial/ftdi_sio.c |
251 | +++ b/drivers/usb/serial/ftdi_sio.c |
252 | @@ -916,6 +916,7 @@ static struct usb_device_id id_table_combined [] = { |
253 | { USB_DEVICE(FTDI_VID, FTDI_LUMEL_PD12_PID) }, |
254 | /* Crucible Devices */ |
255 | { USB_DEVICE(FTDI_VID, FTDI_CT_COMET_PID) }, |
256 | + { USB_DEVICE(FTDI_VID, FTDI_Z3X_PID) }, |
257 | { }, /* Optional parameter entry */ |
258 | { } /* Terminating entry */ |
259 | }; |
260 | diff --git a/drivers/usb/serial/ftdi_sio_ids.h b/drivers/usb/serial/ftdi_sio_ids.h |
261 | index 1b8af461b522..a7019d1e3058 100644 |
262 | --- a/drivers/usb/serial/ftdi_sio_ids.h |
263 | +++ b/drivers/usb/serial/ftdi_sio_ids.h |
264 | @@ -1307,3 +1307,9 @@ |
265 | * Manufacturer: Crucible Technologies |
266 | */ |
267 | #define FTDI_CT_COMET_PID 0x8e08 |
268 | + |
269 | +/* |
270 | + * Product: Z3X Box |
271 | + * Manufacturer: Smart GSM Team |
272 | + */ |
273 | +#define FTDI_Z3X_PID 0x0011 |
274 | diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c |
275 | index b3440c66a995..57277bccb9ef 100644 |
276 | --- a/drivers/usb/serial/option.c |
277 | +++ b/drivers/usb/serial/option.c |
278 | @@ -707,6 +707,222 @@ static const struct usb_device_id option_ids[] = { |
279 | { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x02, 0x7A) }, |
280 | { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x02, 0x7B) }, |
281 | { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x02, 0x7C) }, |
282 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x03, 0x01) }, |
283 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x03, 0x02) }, |
284 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x03, 0x03) }, |
285 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x03, 0x04) }, |
286 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x03, 0x05) }, |
287 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x03, 0x06) }, |
288 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x03, 0x0A) }, |
289 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x03, 0x0B) }, |
290 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x03, 0x0D) }, |
291 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x03, 0x0E) }, |
292 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x03, 0x0F) }, |
293 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x03, 0x10) }, |
294 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x03, 0x12) }, |
295 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x03, 0x13) }, |
296 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x03, 0x14) }, |
297 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x03, 0x15) }, |
298 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x03, 0x17) }, |
299 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x03, 0x18) }, |
300 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x03, 0x19) }, |
301 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x03, 0x1A) }, |
302 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x03, 0x1B) }, |
303 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x03, 0x1C) }, |
304 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x03, 0x31) }, |
305 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x03, 0x32) }, |
306 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x03, 0x33) }, |
307 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x03, 0x34) }, |
308 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x03, 0x35) }, |
309 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x03, 0x36) }, |
310 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x03, 0x3A) }, |
311 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x03, 0x3B) }, |
312 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x03, 0x3D) }, |
313 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x03, 0x3E) }, |
314 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x03, 0x3F) }, |
315 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x03, 0x48) }, |
316 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x03, 0x49) }, |
317 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x03, 0x4A) }, |
318 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x03, 0x4B) }, |
319 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x03, 0x4C) }, |
320 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x03, 0x61) }, |
321 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x03, 0x62) }, |
322 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x03, 0x63) }, |
323 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x03, 0x64) }, |
324 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x03, 0x65) }, |
325 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x03, 0x66) }, |
326 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x03, 0x6A) }, |
327 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x03, 0x6B) }, |
328 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x03, 0x6D) }, |
329 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x03, 0x6E) }, |
330 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x03, 0x6F) }, |
331 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x03, 0x78) }, |
332 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x03, 0x79) }, |
333 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x03, 0x7A) }, |
334 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x03, 0x7B) }, |
335 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x03, 0x7C) }, |
336 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x04, 0x01) }, |
337 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x04, 0x02) }, |
338 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x04, 0x03) }, |
339 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x04, 0x04) }, |
340 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x04, 0x05) }, |
341 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x04, 0x06) }, |
342 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x04, 0x0A) }, |
343 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x04, 0x0B) }, |
344 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x04, 0x0D) }, |
345 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x04, 0x0E) }, |
346 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x04, 0x0F) }, |
347 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x04, 0x10) }, |
348 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x04, 0x12) }, |
349 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x04, 0x13) }, |
350 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x04, 0x14) }, |
351 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x04, 0x15) }, |
352 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x04, 0x17) }, |
353 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x04, 0x18) }, |
354 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x04, 0x19) }, |
355 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x04, 0x1A) }, |
356 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x04, 0x1B) }, |
357 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x04, 0x1C) }, |
358 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x04, 0x31) }, |
359 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x04, 0x32) }, |
360 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x04, 0x33) }, |
361 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x04, 0x34) }, |
362 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x04, 0x35) }, |
363 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x04, 0x36) }, |
364 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x04, 0x3A) }, |
365 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x04, 0x3B) }, |
366 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x04, 0x3D) }, |
367 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x04, 0x3E) }, |
368 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x04, 0x3F) }, |
369 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x04, 0x48) }, |
370 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x04, 0x49) }, |
371 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x04, 0x4A) }, |
372 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x04, 0x4B) }, |
373 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x04, 0x4C) }, |
374 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x04, 0x61) }, |
375 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x04, 0x62) }, |
376 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x04, 0x63) }, |
377 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x04, 0x64) }, |
378 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x04, 0x65) }, |
379 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x04, 0x66) }, |
380 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x04, 0x6A) }, |
381 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x04, 0x6B) }, |
382 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x04, 0x6D) }, |
383 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x04, 0x6E) }, |
384 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x04, 0x6F) }, |
385 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x04, 0x78) }, |
386 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x04, 0x79) }, |
387 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x04, 0x7A) }, |
388 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x04, 0x7B) }, |
389 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x04, 0x7C) }, |
390 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x05, 0x01) }, |
391 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x05, 0x02) }, |
392 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x05, 0x03) }, |
393 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x05, 0x04) }, |
394 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x05, 0x05) }, |
395 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x05, 0x06) }, |
396 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x05, 0x0A) }, |
397 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x05, 0x0B) }, |
398 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x05, 0x0D) }, |
399 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x05, 0x0E) }, |
400 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x05, 0x0F) }, |
401 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x05, 0x10) }, |
402 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x05, 0x12) }, |
403 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x05, 0x13) }, |
404 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x05, 0x14) }, |
405 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x05, 0x15) }, |
406 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x05, 0x17) }, |
407 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x05, 0x18) }, |
408 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x05, 0x19) }, |
409 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x05, 0x1A) }, |
410 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x05, 0x1B) }, |
411 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x05, 0x1C) }, |
412 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x05, 0x31) }, |
413 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x05, 0x32) }, |
414 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x05, 0x33) }, |
415 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x05, 0x34) }, |
416 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x05, 0x35) }, |
417 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x05, 0x36) }, |
418 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x05, 0x3A) }, |
419 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x05, 0x3B) }, |
420 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x05, 0x3D) }, |
421 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x05, 0x3E) }, |
422 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x05, 0x3F) }, |
423 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x05, 0x48) }, |
424 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x05, 0x49) }, |
425 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x05, 0x4A) }, |
426 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x05, 0x4B) }, |
427 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x05, 0x4C) }, |
428 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x05, 0x61) }, |
429 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x05, 0x62) }, |
430 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x05, 0x63) }, |
431 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x05, 0x64) }, |
432 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x05, 0x65) }, |
433 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x05, 0x66) }, |
434 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x05, 0x6A) }, |
435 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x05, 0x6B) }, |
436 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x05, 0x6D) }, |
437 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x05, 0x6E) }, |
438 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x05, 0x6F) }, |
439 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x05, 0x78) }, |
440 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x05, 0x79) }, |
441 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x05, 0x7A) }, |
442 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x05, 0x7B) }, |
443 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x05, 0x7C) }, |
444 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x06, 0x01) }, |
445 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x06, 0x02) }, |
446 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x06, 0x03) }, |
447 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x06, 0x04) }, |
448 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x06, 0x05) }, |
449 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x06, 0x06) }, |
450 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x06, 0x0A) }, |
451 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x06, 0x0B) }, |
452 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x06, 0x0D) }, |
453 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x06, 0x0E) }, |
454 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x06, 0x0F) }, |
455 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x06, 0x10) }, |
456 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x06, 0x12) }, |
457 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x06, 0x13) }, |
458 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x06, 0x14) }, |
459 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x06, 0x15) }, |
460 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x06, 0x17) }, |
461 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x06, 0x18) }, |
462 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x06, 0x19) }, |
463 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x06, 0x1A) }, |
464 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x06, 0x1B) }, |
465 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x06, 0x1C) }, |
466 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x06, 0x31) }, |
467 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x06, 0x32) }, |
468 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x06, 0x33) }, |
469 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x06, 0x34) }, |
470 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x06, 0x35) }, |
471 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x06, 0x36) }, |
472 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x06, 0x3A) }, |
473 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x06, 0x3B) }, |
474 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x06, 0x3D) }, |
475 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x06, 0x3E) }, |
476 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x06, 0x3F) }, |
477 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x06, 0x48) }, |
478 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x06, 0x49) }, |
479 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x06, 0x4A) }, |
480 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x06, 0x4B) }, |
481 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x06, 0x4C) }, |
482 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x06, 0x61) }, |
483 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x06, 0x62) }, |
484 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x06, 0x63) }, |
485 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x06, 0x64) }, |
486 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x06, 0x65) }, |
487 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x06, 0x66) }, |
488 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x06, 0x6A) }, |
489 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x06, 0x6B) }, |
490 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x06, 0x6D) }, |
491 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x06, 0x6E) }, |
492 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x06, 0x6F) }, |
493 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x06, 0x78) }, |
494 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x06, 0x79) }, |
495 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x06, 0x7A) }, |
496 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x06, 0x7B) }, |
497 | + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x06, 0x7C) }, |
498 | |
499 | |
500 | { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_V640) }, |
501 | diff --git a/fs/jfs/jfs_inode.c b/fs/jfs/jfs_inode.c |
502 | index c1a3e603279c..7f464c513ba0 100644 |
503 | --- a/fs/jfs/jfs_inode.c |
504 | +++ b/fs/jfs/jfs_inode.c |
505 | @@ -95,7 +95,7 @@ struct inode *ialloc(struct inode *parent, umode_t mode) |
506 | |
507 | if (insert_inode_locked(inode) < 0) { |
508 | rc = -EINVAL; |
509 | - goto fail_unlock; |
510 | + goto fail_put; |
511 | } |
512 | |
513 | inode_init_owner(inode, parent, mode); |
514 | @@ -156,7 +156,6 @@ struct inode *ialloc(struct inode *parent, umode_t mode) |
515 | fail_drop: |
516 | dquot_drop(inode); |
517 | inode->i_flags |= S_NOQUOTA; |
518 | -fail_unlock: |
519 | clear_nlink(inode); |
520 | unlock_new_inode(inode); |
521 | fail_put: |
522 | diff --git a/kernel/time/clockevents.c b/kernel/time/clockevents.c |
523 | index 9cd928f7a7c6..0d37a6fd18af 100644 |
524 | --- a/kernel/time/clockevents.c |
525 | +++ b/kernel/time/clockevents.c |
526 | @@ -30,29 +30,64 @@ static RAW_NOTIFIER_HEAD(clockevents_chain); |
527 | /* Protection for the above */ |
528 | static DEFINE_RAW_SPINLOCK(clockevents_lock); |
529 | |
530 | -/** |
531 | - * clockevents_delta2ns - Convert a latch value (device ticks) to nanoseconds |
532 | - * @latch: value to convert |
533 | - * @evt: pointer to clock event device descriptor |
534 | - * |
535 | - * Math helper, returns latch value converted to nanoseconds (bound checked) |
536 | - */ |
537 | -u64 clockevent_delta2ns(unsigned long latch, struct clock_event_device *evt) |
538 | +static u64 cev_delta2ns(unsigned long latch, struct clock_event_device *evt, |
539 | + bool ismax) |
540 | { |
541 | u64 clc = (u64) latch << evt->shift; |
542 | + u64 rnd; |
543 | |
544 | if (unlikely(!evt->mult)) { |
545 | evt->mult = 1; |
546 | WARN_ON(1); |
547 | } |
548 | + rnd = (u64) evt->mult - 1; |
549 | + |
550 | + /* |
551 | + * Upper bound sanity check. If the backwards conversion is |
552 | + * not equal latch, we know that the above shift overflowed. |
553 | + */ |
554 | + if ((clc >> evt->shift) != (u64)latch) |
555 | + clc = ~0ULL; |
556 | + |
557 | + /* |
558 | + * Scaled math oddities: |
559 | + * |
560 | + * For mult <= (1 << shift) we can safely add mult - 1 to |
561 | + * prevent integer rounding loss. So the backwards conversion |
562 | + * from nsec to device ticks will be correct. |
563 | + * |
564 | + * For mult > (1 << shift), i.e. device frequency is > 1GHz we |
565 | + * need to be careful. Adding mult - 1 will result in a value |
566 | + * which when converted back to device ticks can be larger |
567 | + * than latch by up to (mult - 1) >> shift. For the min_delta |
568 | + * calculation we still want to apply this in order to stay |
569 | + * above the minimum device ticks limit. For the upper limit |
570 | + * we would end up with a latch value larger than the upper |
571 | + * limit of the device, so we omit the add to stay below the |
572 | + * device upper boundary. |
573 | + * |
574 | + * Also omit the add if it would overflow the u64 boundary. |
575 | + */ |
576 | + if ((~0ULL - clc > rnd) && |
577 | + (!ismax || evt->mult <= (1U << evt->shift))) |
578 | + clc += rnd; |
579 | |
580 | do_div(clc, evt->mult); |
581 | - if (clc < 1000) |
582 | - clc = 1000; |
583 | - if (clc > KTIME_MAX) |
584 | - clc = KTIME_MAX; |
585 | |
586 | - return clc; |
587 | + /* Deltas less than 1usec are pointless noise */ |
588 | + return clc > 1000 ? clc : 1000; |
589 | +} |
590 | + |
591 | +/** |
592 | + * clockevents_delta2ns - Convert a latch value (device ticks) to nanoseconds |
593 | + * @latch: value to convert |
594 | + * @evt: pointer to clock event device descriptor |
595 | + * |
596 | + * Math helper, returns latch value converted to nanoseconds (bound checked) |
597 | + */ |
598 | +u64 clockevent_delta2ns(unsigned long latch, struct clock_event_device *evt) |
599 | +{ |
600 | + return cev_delta2ns(latch, evt, false); |
601 | } |
602 | EXPORT_SYMBOL_GPL(clockevent_delta2ns); |
603 | |
604 | @@ -318,8 +353,8 @@ static void clockevents_config(struct clock_event_device *dev, |
605 | sec = 600; |
606 | |
607 | clockevents_calc_mult_shift(dev, freq, sec); |
608 | - dev->min_delta_ns = clockevent_delta2ns(dev->min_delta_ticks, dev); |
609 | - dev->max_delta_ns = clockevent_delta2ns(dev->max_delta_ticks, dev); |
610 | + dev->min_delta_ns = cev_delta2ns(dev->min_delta_ticks, dev, false); |
611 | + dev->max_delta_ns = cev_delta2ns(dev->max_delta_ticks, dev, true); |
612 | } |
613 | |
614 | /** |
615 | diff --git a/lib/scatterlist.c b/lib/scatterlist.c |
616 | index 6096e89bee55..8c2f278e5eb7 100644 |
617 | --- a/lib/scatterlist.c |
618 | +++ b/lib/scatterlist.c |
619 | @@ -419,7 +419,8 @@ void sg_miter_stop(struct sg_mapping_iter *miter) |
620 | if (miter->addr) { |
621 | miter->__offset += miter->consumed; |
622 | |
623 | - if (miter->__flags & SG_MITER_TO_SG) |
624 | + if ((miter->__flags & SG_MITER_TO_SG) && |
625 | + !PageSlab(miter->page)) |
626 | flush_kernel_dcache_page(miter->page); |
627 | |
628 | if (miter->__flags & SG_MITER_ATOMIC) { |
629 | diff --git a/mm/swap.c b/mm/swap.c |
630 | index 5c13f1338972..f689e9a03204 100644 |
631 | --- a/mm/swap.c |
632 | +++ b/mm/swap.c |
633 | @@ -30,6 +30,7 @@ |
634 | #include <linux/backing-dev.h> |
635 | #include <linux/memcontrol.h> |
636 | #include <linux/gfp.h> |
637 | +#include <linux/hugetlb.h> |
638 | |
639 | #include "internal.h" |
640 | |
641 | @@ -68,13 +69,26 @@ static void __put_compound_page(struct page *page) |
642 | { |
643 | compound_page_dtor *dtor; |
644 | |
645 | - __page_cache_release(page); |
646 | + if (!PageHuge(page)) |
647 | + __page_cache_release(page); |
648 | dtor = get_compound_page_dtor(page); |
649 | (*dtor)(page); |
650 | } |
651 | |
652 | static void put_compound_page(struct page *page) |
653 | { |
654 | + /* |
655 | + * hugetlbfs pages cannot be split from under us. If this is a |
656 | + * hugetlbfs page, check refcount on head page and release the page if |
657 | + * the refcount becomes zero. |
658 | + */ |
659 | + if (PageHuge(page)) { |
660 | + page = compound_head(page); |
661 | + if (put_page_testzero(page)) |
662 | + __put_compound_page(page); |
663 | + return; |
664 | + } |
665 | + |
666 | if (unlikely(PageTail(page))) { |
667 | /* __split_huge_page_refcount can run under us */ |
668 | struct page *page_head = compound_trans_head(page); |
669 | @@ -159,8 +173,20 @@ bool __get_page_tail(struct page *page) |
670 | */ |
671 | unsigned long flags; |
672 | bool got = false; |
673 | - struct page *page_head = compound_trans_head(page); |
674 | + struct page *page_head; |
675 | + |
676 | + /* |
677 | + * If this is a hugetlbfs page it cannot be split under us. Simply |
678 | + * increment refcount for the head page. |
679 | + */ |
680 | + if (PageHuge(page)) { |
681 | + page_head = compound_head(page); |
682 | + atomic_inc(&page_head->_count); |
683 | + got = true; |
684 | + goto out; |
685 | + } |
686 | |
687 | + page_head = compound_trans_head(page); |
688 | if (likely(page != page_head && get_page_unless_zero(page_head))) { |
689 | /* |
690 | * page_head wasn't a dangling pointer but it |
691 | @@ -178,6 +204,7 @@ bool __get_page_tail(struct page *page) |
692 | if (unlikely(!got)) |
693 | put_page(page_head); |
694 | } |
695 | +out: |
696 | return got; |
697 | } |
698 | EXPORT_SYMBOL(__get_page_tail); |
699 | diff --git a/net/mac80211/ieee80211_i.h b/net/mac80211/ieee80211_i.h |
700 | index 05160dbeaf44..226be1364ef3 100644 |
701 | --- a/net/mac80211/ieee80211_i.h |
702 | +++ b/net/mac80211/ieee80211_i.h |
703 | @@ -789,12 +789,15 @@ struct tpt_led_trigger { |
704 | * that the scan completed. |
705 | * @SCAN_ABORTED: Set for our scan work function when the driver reported |
706 | * a scan complete for an aborted scan. |
707 | + * @SCAN_HW_CANCELLED: Set for our scan work function when the scan is being |
708 | + * cancelled. |
709 | */ |
710 | enum { |
711 | SCAN_SW_SCANNING, |
712 | SCAN_HW_SCANNING, |
713 | SCAN_COMPLETED, |
714 | SCAN_ABORTED, |
715 | + SCAN_HW_CANCELLED, |
716 | }; |
717 | |
718 | /** |
719 | diff --git a/net/mac80211/scan.c b/net/mac80211/scan.c |
720 | index bcc57f93adc4..9520749bd1e3 100644 |
721 | --- a/net/mac80211/scan.c |
722 | +++ b/net/mac80211/scan.c |
723 | @@ -259,6 +259,9 @@ static bool ieee80211_prep_hw_scan(struct ieee80211_local *local) |
724 | enum ieee80211_band band; |
725 | int i, ielen, n_chans; |
726 | |
727 | + if (test_bit(SCAN_HW_CANCELLED, &local->scanning)) |
728 | + return false; |
729 | + |
730 | do { |
731 | if (local->hw_scan_band == IEEE80211_NUM_BANDS) |
732 | return false; |
733 | @@ -844,7 +847,23 @@ void ieee80211_scan_cancel(struct ieee80211_local *local) |
734 | if (!local->scan_req) |
735 | goto out; |
736 | |
737 | + /* |
738 | + * We have a scan running and the driver already reported completion, |
739 | + * but the worker hasn't run yet or is stuck on the mutex - mark it as |
740 | + * cancelled. |
741 | + */ |
742 | + if (test_bit(SCAN_HW_SCANNING, &local->scanning) && |
743 | + test_bit(SCAN_COMPLETED, &local->scanning)) { |
744 | + set_bit(SCAN_HW_CANCELLED, &local->scanning); |
745 | + goto out; |
746 | + } |
747 | + |
748 | if (test_bit(SCAN_HW_SCANNING, &local->scanning)) { |
749 | + /* |
750 | + * Make sure that __ieee80211_scan_completed doesn't trigger a |
751 | + * scan on another band. |
752 | + */ |
753 | + set_bit(SCAN_HW_CANCELLED, &local->scanning); |
754 | if (local->ops->cancel_hw_scan) |
755 | drv_cancel_hw_scan(local, local->scan_sdata); |
756 | goto out; |
757 | diff --git a/net/mac80211/status.c b/net/mac80211/status.c |
758 | index 47b117f3f567..b992a49fbe08 100644 |
759 | --- a/net/mac80211/status.c |
760 | +++ b/net/mac80211/status.c |
761 | @@ -183,6 +183,9 @@ static void ieee80211_frame_acked(struct sta_info *sta, struct sk_buff *skb) |
762 | struct ieee80211_local *local = sta->local; |
763 | struct ieee80211_sub_if_data *sdata = sta->sdata; |
764 | |
765 | + if (local->hw.flags & IEEE80211_HW_REPORTS_TX_ACK_STATUS) |
766 | + sta->last_rx = jiffies; |
767 | + |
768 | if (ieee80211_is_data_qos(mgmt->frame_control)) { |
769 | struct ieee80211_hdr *hdr = (void *) skb->data; |
770 | u8 *qc = ieee80211_get_qos_ctl(hdr); |
771 | diff --git a/sound/core/pcm.c b/sound/core/pcm.c |
772 | index e30e1be30a21..6355540fdb0d 100644 |
773 | --- a/sound/core/pcm.c |
774 | +++ b/sound/core/pcm.c |
775 | @@ -49,6 +49,8 @@ static struct snd_pcm *snd_pcm_get(struct snd_card *card, int device) |
776 | struct snd_pcm *pcm; |
777 | |
778 | list_for_each_entry(pcm, &snd_pcm_devices, list) { |
779 | + if (pcm->internal) |
780 | + continue; |
781 | if (pcm->card == card && pcm->device == device) |
782 | return pcm; |
783 | } |
784 | @@ -60,6 +62,8 @@ static int snd_pcm_next(struct snd_card *card, int device) |
785 | struct snd_pcm *pcm; |
786 | |
787 | list_for_each_entry(pcm, &snd_pcm_devices, list) { |
788 | + if (pcm->internal) |
789 | + continue; |
790 | if (pcm->card == card && pcm->device > device) |
791 | return pcm->device; |
792 | else if (pcm->card->number > card->number) |
793 | diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c |
794 | index 33abb782a54b..810f1fc2c3f4 100644 |
795 | --- a/sound/pci/hda/patch_realtek.c |
796 | +++ b/sound/pci/hda/patch_realtek.c |
797 | @@ -6833,6 +6833,7 @@ static const struct snd_pci_quirk alc662_fixup_tbl[] = { |
798 | SND_PCI_QUIRK(0x1025, 0x038b, "Acer Aspire 8943G", ALC662_FIXUP_ASPIRE), |
799 | SND_PCI_QUIRK(0x103c, 0x1632, "HP RP5800", ALC662_FIXUP_HP_RP5800), |
800 | SND_PCI_QUIRK(0x1043, 0x1477, "ASUS N56VZ", ALC662_FIXUP_ASUS_MODE4), |
801 | + SND_PCI_QUIRK(0x1043, 0x1bf3, "ASUS N76VZ", ALC662_FIXUP_ASUS_MODE4), |
802 | SND_PCI_QUIRK(0x1043, 0x8469, "ASUS mobo", ALC662_FIXUP_NO_JACK_DETECT), |
803 | SND_PCI_QUIRK(0x105b, 0x0cd6, "Foxconn", ALC662_FIXUP_ASUS_MODE2), |
804 | SND_PCI_QUIRK(0x144d, 0xc051, "Samsung R720", ALC662_FIXUP_IDEAPAD), |
805 | diff --git a/sound/soc/codecs/wm_hubs.c b/sound/soc/codecs/wm_hubs.c |
806 | index 6c028c470601..fec98cf3b2c0 100644 |
807 | --- a/sound/soc/codecs/wm_hubs.c |
808 | +++ b/sound/soc/codecs/wm_hubs.c |
809 | @@ -413,6 +413,7 @@ static int hp_supply_event(struct snd_soc_dapm_widget *w, |
810 | hubs->hp_startup_mode); |
811 | break; |
812 | } |
813 | + break; |
814 | |
815 | case SND_SOC_DAPM_PRE_PMD: |
816 | snd_soc_update_bits(codec, WM8993_CHARGE_PUMP_1, |
817 | diff --git a/sound/soc/soc-dapm.c b/sound/soc/soc-dapm.c |
818 | index 9ae82a4eb71e..e39364b6b080 100644 |
819 | --- a/sound/soc/soc-dapm.c |
820 | +++ b/sound/soc/soc-dapm.c |
821 | @@ -1590,7 +1590,7 @@ static ssize_t dapm_widget_power_read_file(struct file *file, |
822 | w->active ? "active" : "inactive"); |
823 | |
824 | list_for_each_entry(p, &w->sources, list_sink) { |
825 | - if (p->connected && !p->connected(w, p->sink)) |
826 | + if (p->connected && !p->connected(w, p->source)) |
827 | continue; |
828 | |
829 | if (p->connect) |