Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2323 - (hide annotations) (download)
Mon Nov 18 12:00:18 2013 UTC (10 years, 7 months ago) by niro
File size: 37214 byte(s)
-linux-3.4.69
1 niro 2323 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)