Magellan Linux

Contents of /trunk/kernel-lts/patches-3.4/0168-3.4.69-all-fixes.patch

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2323 - (show annotations) (download)
Mon Nov 18 12:00:18 2013 UTC (10 years, 5 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(&regs->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, &regs->mcr);
159
160 @@ -744,6 +746,10 @@ static int flexcan_chip_start(struct net_device *dev)
161 &regs->cantxfg[i].can_ctrl);
162 }
163
164 + /* Abort any pending TX, mark Mailbox as INACTIVE */
165 + flexcan_write(FLEXCAN_MB_CNT_CODE(0x4),
166 + &regs->cantxfg[FLEXCAN_TX_BUF_ID].can_ctrl);
167 +
168 /* acceptance mask/acceptance code (accept everything) */
169 flexcan_write(0x0, &regs->rxgmask);
170 flexcan_write(0x0, &regs->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)