Magellan Linux

Annotation of /trunk/kernel-alx/patches-3.10/0147-3.10.48-all-fixes.patch

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2635 - (hide annotations) (download)
Tue Jul 21 16:20:19 2015 UTC (8 years, 10 months ago) by niro
File size: 51406 byte(s)
-linux-3.10.48
1 niro 2635 diff --git a/Makefile b/Makefile
2     index 6a3b46d1863c..f7e5680740f9 100644
3     --- a/Makefile
4     +++ b/Makefile
5     @@ -1,6 +1,6 @@
6     VERSION = 3
7     PATCHLEVEL = 10
8     -SUBLEVEL = 47
9     +SUBLEVEL = 48
10     EXTRAVERSION =
11     NAME = TOSSUG Baby Fish
12    
13     diff --git a/arch/arm/mach-omap2/mux.c b/arch/arm/mach-omap2/mux.c
14     index f82cf878d6af..94c2f6d17dae 100644
15     --- a/arch/arm/mach-omap2/mux.c
16     +++ b/arch/arm/mach-omap2/mux.c
17     @@ -183,8 +183,10 @@ static int __init _omap_mux_get_by_name(struct omap_mux_partition *partition,
18     m0_entry = mux->muxnames[0];
19    
20     /* First check for full name in mode0.muxmode format */
21     - if (mode0_len && strncmp(muxname, m0_entry, mode0_len))
22     - continue;
23     + if (mode0_len)
24     + if (strncmp(muxname, m0_entry, mode0_len) ||
25     + (strlen(m0_entry) != mode0_len))
26     + continue;
27    
28     /* Then check for muxmode only */
29     for (i = 0; i < OMAP_MUX_NR_MODES; i++) {
30     diff --git a/arch/arm64/kernel/entry.S b/arch/arm64/kernel/entry.S
31     index 6ad781b21c08..7cd589ebca2a 100644
32     --- a/arch/arm64/kernel/entry.S
33     +++ b/arch/arm64/kernel/entry.S
34     @@ -275,7 +275,6 @@ el1_sp_pc:
35     * Stack or PC alignment exception handling
36     */
37     mrs x0, far_el1
38     - mov x1, x25
39     mov x2, sp
40     b do_sp_pc_abort
41     el1_undef:
42     diff --git a/arch/unicore32/mm/alignment.c b/arch/unicore32/mm/alignment.c
43     index de7dc5fdd58b..24e836023e6c 100644
44     --- a/arch/unicore32/mm/alignment.c
45     +++ b/arch/unicore32/mm/alignment.c
46     @@ -21,6 +21,7 @@
47     #include <linux/sched.h>
48     #include <linux/uaccess.h>
49    
50     +#include <asm/pgtable.h>
51     #include <asm/tlbflush.h>
52     #include <asm/unaligned.h>
53    
54     diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h
55     index 3741c653767c..8b320722de7a 100644
56     --- a/arch/x86/include/asm/kvm_host.h
57     +++ b/arch/x86/include/asm/kvm_host.h
58     @@ -92,7 +92,7 @@
59     #define KVM_REFILL_PAGES 25
60     #define KVM_MAX_CPUID_ENTRIES 80
61     #define KVM_NR_FIXED_MTRR_REGION 88
62     -#define KVM_NR_VAR_MTRR 8
63     +#define KVM_NR_VAR_MTRR 10
64    
65     #define ASYNC_PF_PER_VCPU 64
66    
67     @@ -445,7 +445,7 @@ struct kvm_vcpu_arch {
68     bool nmi_injected; /* Trying to inject an NMI this entry */
69    
70     struct mtrr_state_type mtrr_state;
71     - u32 pat;
72     + u64 pat;
73    
74     int switch_db_regs;
75     unsigned long db[KVM_NR_DB_REGS];
76     diff --git a/drivers/block/rbd.c b/drivers/block/rbd.c
77     index 1e89a3dd3d51..07caf44d5755 100644
78     --- a/drivers/block/rbd.c
79     +++ b/drivers/block/rbd.c
80     @@ -1385,6 +1385,14 @@ static bool obj_request_exists_test(struct rbd_obj_request *obj_request)
81     return test_bit(OBJ_REQ_EXISTS, &obj_request->flags) != 0;
82     }
83    
84     +static bool obj_request_overlaps_parent(struct rbd_obj_request *obj_request)
85     +{
86     + struct rbd_device *rbd_dev = obj_request->img_request->rbd_dev;
87     +
88     + return obj_request->img_offset <
89     + round_up(rbd_dev->parent_overlap, rbd_obj_bytes(&rbd_dev->header));
90     +}
91     +
92     static void rbd_obj_request_get(struct rbd_obj_request *obj_request)
93     {
94     dout("%s: obj %p (was %d)\n", __func__, obj_request,
95     @@ -1401,6 +1409,13 @@ static void rbd_obj_request_put(struct rbd_obj_request *obj_request)
96     kref_put(&obj_request->kref, rbd_obj_request_destroy);
97     }
98    
99     +static void rbd_img_request_get(struct rbd_img_request *img_request)
100     +{
101     + dout("%s: img %p (was %d)\n", __func__, img_request,
102     + atomic_read(&img_request->kref.refcount));
103     + kref_get(&img_request->kref);
104     +}
105     +
106     static bool img_request_child_test(struct rbd_img_request *img_request);
107     static void rbd_parent_request_destroy(struct kref *kref);
108     static void rbd_img_request_destroy(struct kref *kref);
109     @@ -2154,6 +2169,7 @@ static void rbd_img_obj_callback(struct rbd_obj_request *obj_request)
110     img_request->next_completion = which;
111     out:
112     spin_unlock_irq(&img_request->completion_lock);
113     + rbd_img_request_put(img_request);
114    
115     if (!more)
116     rbd_img_request_complete(img_request);
117     @@ -2250,6 +2266,7 @@ static int rbd_img_request_fill(struct rbd_img_request *img_request,
118     goto out_partial;
119     obj_request->osd_req = osd_req;
120     obj_request->callback = rbd_img_obj_callback;
121     + rbd_img_request_get(img_request);
122    
123     osd_req_op_extent_init(osd_req, 0, opcode, offset, length,
124     0, 0);
125     @@ -2673,7 +2690,7 @@ static int rbd_img_obj_request_submit(struct rbd_obj_request *obj_request)
126     */
127     if (!img_request_write_test(img_request) ||
128     !img_request_layered_test(img_request) ||
129     - rbd_dev->parent_overlap <= obj_request->img_offset ||
130     + !obj_request_overlaps_parent(obj_request) ||
131     ((known = obj_request_known_test(obj_request)) &&
132     obj_request_exists_test(obj_request))) {
133    
134     diff --git a/drivers/gpu/drm/radeon/atombios_crtc.c b/drivers/gpu/drm/radeon/atombios_crtc.c
135     index a56d0199e334..971dd8795b68 100644
136     --- a/drivers/gpu/drm/radeon/atombios_crtc.c
137     +++ b/drivers/gpu/drm/radeon/atombios_crtc.c
138     @@ -839,14 +839,16 @@ static void atombios_crtc_program_pll(struct drm_crtc *crtc,
139     args.v5.ucMiscInfo = 0; /* HDMI depth, etc. */
140     if (ss_enabled && (ss->type & ATOM_EXTERNAL_SS_MASK))
141     args.v5.ucMiscInfo |= PIXEL_CLOCK_V5_MISC_REF_DIV_SRC;
142     - switch (bpc) {
143     - case 8:
144     - default:
145     - args.v5.ucMiscInfo |= PIXEL_CLOCK_V5_MISC_HDMI_24BPP;
146     - break;
147     - case 10:
148     - args.v5.ucMiscInfo |= PIXEL_CLOCK_V5_MISC_HDMI_30BPP;
149     - break;
150     + if (encoder_mode == ATOM_ENCODER_MODE_HDMI) {
151     + switch (bpc) {
152     + case 8:
153     + default:
154     + args.v5.ucMiscInfo |= PIXEL_CLOCK_V5_MISC_HDMI_24BPP;
155     + break;
156     + case 10:
157     + args.v5.ucMiscInfo |= PIXEL_CLOCK_V5_MISC_HDMI_30BPP;
158     + break;
159     + }
160     }
161     args.v5.ucTransmitterID = encoder_id;
162     args.v5.ucEncoderMode = encoder_mode;
163     @@ -861,20 +863,22 @@ static void atombios_crtc_program_pll(struct drm_crtc *crtc,
164     args.v6.ucMiscInfo = 0; /* HDMI depth, etc. */
165     if (ss_enabled && (ss->type & ATOM_EXTERNAL_SS_MASK))
166     args.v6.ucMiscInfo |= PIXEL_CLOCK_V6_MISC_REF_DIV_SRC;
167     - switch (bpc) {
168     - case 8:
169     - default:
170     - args.v6.ucMiscInfo |= PIXEL_CLOCK_V6_MISC_HDMI_24BPP;
171     - break;
172     - case 10:
173     - args.v6.ucMiscInfo |= PIXEL_CLOCK_V6_MISC_HDMI_30BPP;
174     - break;
175     - case 12:
176     - args.v6.ucMiscInfo |= PIXEL_CLOCK_V6_MISC_HDMI_36BPP;
177     - break;
178     - case 16:
179     - args.v6.ucMiscInfo |= PIXEL_CLOCK_V6_MISC_HDMI_48BPP;
180     - break;
181     + if (encoder_mode == ATOM_ENCODER_MODE_HDMI) {
182     + switch (bpc) {
183     + case 8:
184     + default:
185     + args.v6.ucMiscInfo |= PIXEL_CLOCK_V6_MISC_HDMI_24BPP;
186     + break;
187     + case 10:
188     + args.v6.ucMiscInfo |= PIXEL_CLOCK_V6_MISC_HDMI_30BPP;
189     + break;
190     + case 12:
191     + args.v6.ucMiscInfo |= PIXEL_CLOCK_V6_MISC_HDMI_36BPP;
192     + break;
193     + case 16:
194     + args.v6.ucMiscInfo |= PIXEL_CLOCK_V6_MISC_HDMI_48BPP;
195     + break;
196     + }
197     }
198     args.v6.ucTransmitterID = encoder_id;
199     args.v6.ucEncoderMode = encoder_mode;
200     diff --git a/drivers/gpu/drm/radeon/atombios_dp.c b/drivers/gpu/drm/radeon/atombios_dp.c
201     index 16023986d301..4c05f2b015cf 100644
202     --- a/drivers/gpu/drm/radeon/atombios_dp.c
203     +++ b/drivers/gpu/drm/radeon/atombios_dp.c
204     @@ -384,6 +384,19 @@ static int dp_get_max_dp_pix_clock(int link_rate,
205    
206     /***** radeon specific DP functions *****/
207    
208     +static int radeon_dp_get_max_link_rate(struct drm_connector *connector,
209     + u8 dpcd[DP_DPCD_SIZE])
210     +{
211     + int max_link_rate;
212     +
213     + if (radeon_connector_is_dp12_capable(connector))
214     + max_link_rate = min(drm_dp_max_link_rate(dpcd), 540000);
215     + else
216     + max_link_rate = min(drm_dp_max_link_rate(dpcd), 270000);
217     +
218     + return max_link_rate;
219     +}
220     +
221     /* First get the min lane# when low rate is used according to pixel clock
222     * (prefer low rate), second check max lane# supported by DP panel,
223     * if the max lane# < low rate lane# then use max lane# instead.
224     @@ -393,7 +406,7 @@ static int radeon_dp_get_dp_lane_number(struct drm_connector *connector,
225     int pix_clock)
226     {
227     int bpp = convert_bpc_to_bpp(radeon_get_monitor_bpc(connector));
228     - int max_link_rate = drm_dp_max_link_rate(dpcd);
229     + int max_link_rate = radeon_dp_get_max_link_rate(connector, dpcd);
230     int max_lane_num = drm_dp_max_lane_count(dpcd);
231     int lane_num;
232     int max_dp_pix_clock;
233     @@ -431,7 +444,7 @@ static int radeon_dp_get_dp_link_clock(struct drm_connector *connector,
234     return 540000;
235     }
236    
237     - return drm_dp_max_link_rate(dpcd);
238     + return radeon_dp_get_max_link_rate(connector, dpcd);
239     }
240    
241     static u8 radeon_dp_encoder_service(struct radeon_device *rdev,
242     diff --git a/drivers/gpu/drm/radeon/atombios_encoders.c b/drivers/gpu/drm/radeon/atombios_encoders.c
243     index 1f7f3ce875c8..5802d7486354 100644
244     --- a/drivers/gpu/drm/radeon/atombios_encoders.c
245     +++ b/drivers/gpu/drm/radeon/atombios_encoders.c
246     @@ -1877,8 +1877,11 @@ atombios_set_encoder_crtc_source(struct drm_encoder *encoder)
247     args.v2.ucEncodeMode = ATOM_ENCODER_MODE_CRT;
248     else
249     args.v2.ucEncodeMode = atombios_get_encoder_mode(encoder);
250     - } else
251     + } else if (radeon_encoder->devices & (ATOM_DEVICE_LCD_SUPPORT)) {
252     + args.v2.ucEncodeMode = ATOM_ENCODER_MODE_LVDS;
253     + } else {
254     args.v2.ucEncodeMode = atombios_get_encoder_mode(encoder);
255     + }
256     switch (radeon_encoder->encoder_id) {
257     case ENCODER_OBJECT_ID_INTERNAL_UNIPHY:
258     case ENCODER_OBJECT_ID_INTERNAL_UNIPHY1:
259     diff --git a/drivers/gpu/drm/radeon/radeon_connectors.c b/drivers/gpu/drm/radeon/radeon_connectors.c
260     index 5a87c9fc78d3..fc604fc75797 100644
261     --- a/drivers/gpu/drm/radeon/radeon_connectors.c
262     +++ b/drivers/gpu/drm/radeon/radeon_connectors.c
263     @@ -1345,7 +1345,7 @@ bool radeon_connector_is_dp12_capable(struct drm_connector *connector)
264     struct radeon_device *rdev = dev->dev_private;
265    
266     if (ASIC_IS_DCE5(rdev) &&
267     - (rdev->clock.dp_extclk >= 53900) &&
268     + (rdev->clock.default_dispclk >= 53900) &&
269     radeon_connector_encoder_is_hbr2(connector)) {
270     return true;
271     }
272     diff --git a/drivers/gpu/drm/radeon/radeon_cs.c b/drivers/gpu/drm/radeon/radeon_cs.c
273     index fe36f1d9496d..60af3cda587b 100644
274     --- a/drivers/gpu/drm/radeon/radeon_cs.c
275     +++ b/drivers/gpu/drm/radeon/radeon_cs.c
276     @@ -96,6 +96,12 @@ static int radeon_cs_parser_relocs(struct radeon_cs_parser *p)
277     uint32_t domain = r->write_domain ?
278     r->write_domain : r->read_domains;
279    
280     + if (domain & RADEON_GEM_DOMAIN_CPU) {
281     + DRM_ERROR("RADEON_GEM_DOMAIN_CPU is not valid "
282     + "for command submission\n");
283     + return -EINVAL;
284     + }
285     +
286     p->relocs[i].lobj.domain = domain;
287     if (domain == RADEON_GEM_DOMAIN_VRAM)
288     domain |= RADEON_GEM_DOMAIN_GTT;
289     diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_fb.c b/drivers/gpu/drm/vmwgfx/vmwgfx_fb.c
290     index 021b5227e783..1b0f34bd3a03 100644
291     --- a/drivers/gpu/drm/vmwgfx/vmwgfx_fb.c
292     +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_fb.c
293     @@ -179,7 +179,6 @@ static int vmw_fb_set_par(struct fb_info *info)
294     vmw_write(vmw_priv, SVGA_REG_DISPLAY_POSITION_Y, info->var.yoffset);
295     vmw_write(vmw_priv, SVGA_REG_DISPLAY_WIDTH, info->var.xres);
296     vmw_write(vmw_priv, SVGA_REG_DISPLAY_HEIGHT, info->var.yres);
297     - vmw_write(vmw_priv, SVGA_REG_BYTES_PER_LINE, info->fix.line_length);
298     vmw_write(vmw_priv, SVGA_REG_DISPLAY_ID, SVGA_ID_INVALID);
299     }
300    
301     diff --git a/drivers/hwmon/ina2xx.c b/drivers/hwmon/ina2xx.c
302     index 4958b2f89dce..371c1ee233b7 100644
303     --- a/drivers/hwmon/ina2xx.c
304     +++ b/drivers/hwmon/ina2xx.c
305     @@ -147,7 +147,8 @@ static int ina2xx_get_value(struct ina2xx_data *data, u8 reg)
306    
307     switch (reg) {
308     case INA2XX_SHUNT_VOLTAGE:
309     - val = DIV_ROUND_CLOSEST(data->regs[reg],
310     + /* signed register */
311     + val = DIV_ROUND_CLOSEST((s16)data->regs[reg],
312     data->config->shunt_div);
313     break;
314     case INA2XX_BUS_VOLTAGE:
315     @@ -159,8 +160,8 @@ static int ina2xx_get_value(struct ina2xx_data *data, u8 reg)
316     val = data->regs[reg] * data->config->power_lsb;
317     break;
318     case INA2XX_CURRENT:
319     - /* LSB=1mA (selected). Is in mA */
320     - val = data->regs[reg];
321     + /* signed register, LSB=1mA (selected), in mA */
322     + val = (s16)data->regs[reg];
323     break;
324     default:
325     /* programmer goofed */
326     diff --git a/drivers/iio/inkern.c b/drivers/iio/inkern.c
327     index 0cf5f8e06cfc..1e8e94d4db7d 100644
328     --- a/drivers/iio/inkern.c
329     +++ b/drivers/iio/inkern.c
330     @@ -183,7 +183,7 @@ static struct iio_channel *of_iio_channel_get_by_name(struct device_node *np,
331     else if (name && index >= 0) {
332     pr_err("ERROR: could not get IIO channel %s:%s(%i)\n",
333     np->full_name, name ? name : "", index);
334     - return chan;
335     + return NULL;
336     }
337    
338     /*
339     @@ -193,8 +193,9 @@ static struct iio_channel *of_iio_channel_get_by_name(struct device_node *np,
340     */
341     np = np->parent;
342     if (np && !of_get_property(np, "io-channel-ranges", NULL))
343     - break;
344     + return NULL;
345     }
346     +
347     return chan;
348     }
349    
350     @@ -317,6 +318,7 @@ struct iio_channel *iio_channel_get(struct device *dev,
351     if (channel != NULL)
352     return channel;
353     }
354     +
355     return iio_channel_get_sys(name, channel_name);
356     }
357     EXPORT_SYMBOL_GPL(iio_channel_get);
358     diff --git a/drivers/irqchip/spear-shirq.c b/drivers/irqchip/spear-shirq.c
359     index 8527743b5cef..391b9cea73ed 100644
360     --- a/drivers/irqchip/spear-shirq.c
361     +++ b/drivers/irqchip/spear-shirq.c
362     @@ -125,7 +125,7 @@ static struct spear_shirq spear320_shirq_ras2 = {
363     };
364    
365     static struct spear_shirq spear320_shirq_ras3 = {
366     - .irq_nr = 3,
367     + .irq_nr = 7,
368     .irq_bit_off = 0,
369     .invalid_irq = 1,
370     .regs = {
371     diff --git a/drivers/md/dm-thin.c b/drivers/md/dm-thin.c
372     index 7d0ac0a6e724..86a2a5e3b26b 100644
373     --- a/drivers/md/dm-thin.c
374     +++ b/drivers/md/dm-thin.c
375     @@ -2647,7 +2647,8 @@ static void set_discard_limits(struct pool_c *pt, struct queue_limits *limits)
376     */
377     if (pt->adjusted_pf.discard_passdown) {
378     data_limits = &bdev_get_queue(pt->data_dev->bdev)->limits;
379     - limits->discard_granularity = data_limits->discard_granularity;
380     + limits->discard_granularity = max(data_limits->discard_granularity,
381     + pool->sectors_per_block << SECTOR_SHIFT);
382     } else
383     limits->discard_granularity = pool->sectors_per_block << SECTOR_SHIFT;
384     }
385     diff --git a/drivers/md/md.c b/drivers/md/md.c
386     index 963fa59be9b3..aaf77b07bb72 100644
387     --- a/drivers/md/md.c
388     +++ b/drivers/md/md.c
389     @@ -7447,6 +7447,19 @@ void md_do_sync(struct md_thread *thread)
390     rdev->recovery_offset < j)
391     j = rdev->recovery_offset;
392     rcu_read_unlock();
393     +
394     + /* If there is a bitmap, we need to make sure all
395     + * writes that started before we added a spare
396     + * complete before we start doing a recovery.
397     + * Otherwise the write might complete and (via
398     + * bitmap_endwrite) set a bit in the bitmap after the
399     + * recovery has checked that bit and skipped that
400     + * region.
401     + */
402     + if (mddev->bitmap) {
403     + mddev->pers->quiesce(mddev, 1);
404     + mddev->pers->quiesce(mddev, 0);
405     + }
406     }
407    
408     printk(KERN_INFO "md: %s of RAID array %s\n", desc, mdname(mddev));
409     diff --git a/drivers/mmc/host/rtsx_pci_sdmmc.c b/drivers/mmc/host/rtsx_pci_sdmmc.c
410     index ad13f4240c49..7ffb5cba30a9 100644
411     --- a/drivers/mmc/host/rtsx_pci_sdmmc.c
412     +++ b/drivers/mmc/host/rtsx_pci_sdmmc.c
413     @@ -247,6 +247,9 @@ static void sd_send_cmd_get_rsp(struct realtek_pci_sdmmc *host,
414     case MMC_RSP_R1:
415     rsp_type = SD_RSP_TYPE_R1;
416     break;
417     + case MMC_RSP_R1 & ~MMC_RSP_CRC:
418     + rsp_type = SD_RSP_TYPE_R1 | SD_NO_CHECK_CRC7;
419     + break;
420     case MMC_RSP_R1B:
421     rsp_type = SD_RSP_TYPE_R1b;
422     break;
423     diff --git a/drivers/mtd/nand/fsl_elbc_nand.c b/drivers/mtd/nand/fsl_elbc_nand.c
424     index 20657209a472..c31d183820c5 100644
425     --- a/drivers/mtd/nand/fsl_elbc_nand.c
426     +++ b/drivers/mtd/nand/fsl_elbc_nand.c
427     @@ -725,6 +725,19 @@ static int fsl_elbc_write_page(struct mtd_info *mtd, struct nand_chip *chip,
428     return 0;
429     }
430    
431     +/* ECC will be calculated automatically, and errors will be detected in
432     + * waitfunc.
433     + */
434     +static int fsl_elbc_write_subpage(struct mtd_info *mtd, struct nand_chip *chip,
435     + uint32_t offset, uint32_t data_len,
436     + const uint8_t *buf, int oob_required)
437     +{
438     + fsl_elbc_write_buf(mtd, buf, mtd->writesize);
439     + fsl_elbc_write_buf(mtd, chip->oob_poi, mtd->oobsize);
440     +
441     + return 0;
442     +}
443     +
444     static int fsl_elbc_chip_init(struct fsl_elbc_mtd *priv)
445     {
446     struct fsl_lbc_ctrl *ctrl = priv->ctrl;
447     @@ -763,6 +776,7 @@ static int fsl_elbc_chip_init(struct fsl_elbc_mtd *priv)
448    
449     chip->ecc.read_page = fsl_elbc_read_page;
450     chip->ecc.write_page = fsl_elbc_write_page;
451     + chip->ecc.write_subpage = fsl_elbc_write_subpage;
452    
453     /* If CS Base Register selects full hardware ECC then use it */
454     if ((in_be32(&lbc->bank[priv->bank].br) & BR_DECC) ==
455     diff --git a/drivers/mtd/nand/omap2.c b/drivers/mtd/nand/omap2.c
456     index 81b80af55872..8c4eb287bbdb 100644
457     --- a/drivers/mtd/nand/omap2.c
458     +++ b/drivers/mtd/nand/omap2.c
459     @@ -1463,7 +1463,7 @@ static int omap_elm_correct_data(struct mtd_info *mtd, u_char *data,
460    
461     /* Check if any error reported */
462     if (!is_error_reported)
463     - return 0;
464     + return stat;
465    
466     /* Decode BCH error using ELM module */
467     elm_decode_bch_error_page(info->elm_dev, ecc_vec, err_vec);
468     diff --git a/drivers/net/wireless/b43/xmit.c b/drivers/net/wireless/b43/xmit.c
469     index e85d34b76039..ebcce00ce067 100644
470     --- a/drivers/net/wireless/b43/xmit.c
471     +++ b/drivers/net/wireless/b43/xmit.c
472     @@ -810,9 +810,13 @@ void b43_rx(struct b43_wldev *dev, struct sk_buff *skb, const void *_rxhdr)
473     break;
474     case B43_PHYTYPE_G:
475     status.band = IEEE80211_BAND_2GHZ;
476     - /* chanid is the radio channel cookie value as used
477     - * to tune the radio. */
478     - status.freq = chanid + 2400;
479     + /* Somewhere between 478.104 and 508.1084 firmware for G-PHY
480     + * has been modified to be compatible with N-PHY and others.
481     + */
482     + if (dev->fw.rev >= 508)
483     + status.freq = ieee80211_channel_to_frequency(chanid, status.band);
484     + else
485     + status.freq = chanid + 2400;
486     break;
487     case B43_PHYTYPE_N:
488     case B43_PHYTYPE_LP:
489     diff --git a/drivers/net/wireless/iwlwifi/pcie/trans.c b/drivers/net/wireless/iwlwifi/pcie/trans.c
490     index 4088dd5e9244..ff04135d37af 100644
491     --- a/drivers/net/wireless/iwlwifi/pcie/trans.c
492     +++ b/drivers/net/wireless/iwlwifi/pcie/trans.c
493     @@ -339,6 +339,7 @@ static int iwl_pcie_prepare_card_hw(struct iwl_trans *trans)
494     {
495     int ret;
496     int t = 0;
497     + int iter;
498    
499     IWL_DEBUG_INFO(trans, "iwl_trans_prepare_card_hw enter\n");
500    
501     @@ -347,18 +348,23 @@ static int iwl_pcie_prepare_card_hw(struct iwl_trans *trans)
502     if (ret >= 0)
503     return 0;
504    
505     - /* If HW is not ready, prepare the conditions to check again */
506     - iwl_set_bit(trans, CSR_HW_IF_CONFIG_REG,
507     - CSR_HW_IF_CONFIG_REG_PREPARE);
508     + for (iter = 0; iter < 10; iter++) {
509     + /* If HW is not ready, prepare the conditions to check again */
510     + iwl_set_bit(trans, CSR_HW_IF_CONFIG_REG,
511     + CSR_HW_IF_CONFIG_REG_PREPARE);
512     +
513     + do {
514     + ret = iwl_pcie_set_hw_ready(trans);
515     + if (ret >= 0)
516     + return 0;
517    
518     - do {
519     - ret = iwl_pcie_set_hw_ready(trans);
520     - if (ret >= 0)
521     - return 0;
522     + usleep_range(200, 1000);
523     + t += 200;
524     + } while (t < 150000);
525     + msleep(25);
526     + }
527    
528     - usleep_range(200, 1000);
529     - t += 200;
530     - } while (t < 150000);
531     + IWL_DEBUG_INFO(trans, "got NIC after %d iterations\n", iter);
532    
533     return ret;
534     }
535     diff --git a/drivers/net/wireless/rt2x00/rt2500pci.c b/drivers/net/wireless/rt2x00/rt2500pci.c
536     index 77e45b223d15..d582febbfba2 100644
537     --- a/drivers/net/wireless/rt2x00/rt2500pci.c
538     +++ b/drivers/net/wireless/rt2x00/rt2500pci.c
539     @@ -1684,8 +1684,13 @@ static int rt2500pci_init_eeprom(struct rt2x00_dev *rt2x00dev)
540     /*
541     * Detect if this device has an hardware controlled radio.
542     */
543     - if (rt2x00_get_field16(eeprom, EEPROM_ANTENNA_HARDWARE_RADIO))
544     + if (rt2x00_get_field16(eeprom, EEPROM_ANTENNA_HARDWARE_RADIO)) {
545     __set_bit(CAPABILITY_HW_BUTTON, &rt2x00dev->cap_flags);
546     + /*
547     + * On this device RFKILL initialized during probe does not work.
548     + */
549     + __set_bit(REQUIRE_DELAYED_RFKILL, &rt2x00dev->cap_flags);
550     + }
551    
552     /*
553     * Check if the BBP tuning should be enabled.
554     diff --git a/drivers/net/wireless/rt2x00/rt2x00.h b/drivers/net/wireless/rt2x00/rt2x00.h
555     index 7510723a8c37..1e716ff0f19e 100644
556     --- a/drivers/net/wireless/rt2x00/rt2x00.h
557     +++ b/drivers/net/wireless/rt2x00/rt2x00.h
558     @@ -708,6 +708,7 @@ enum rt2x00_capability_flags {
559     REQUIRE_SW_SEQNO,
560     REQUIRE_HT_TX_DESC,
561     REQUIRE_PS_AUTOWAKE,
562     + REQUIRE_DELAYED_RFKILL,
563    
564     /*
565     * Capabilities
566     diff --git a/drivers/net/wireless/rt2x00/rt2x00dev.c b/drivers/net/wireless/rt2x00/rt2x00dev.c
567     index a2889d1cfe37..e22942bc2bb1 100644
568     --- a/drivers/net/wireless/rt2x00/rt2x00dev.c
569     +++ b/drivers/net/wireless/rt2x00/rt2x00dev.c
570     @@ -1128,9 +1128,10 @@ static void rt2x00lib_uninitialize(struct rt2x00_dev *rt2x00dev)
571     return;
572    
573     /*
574     - * Unregister extra components.
575     + * Stop rfkill polling.
576     */
577     - rt2x00rfkill_unregister(rt2x00dev);
578     + if (test_bit(REQUIRE_DELAYED_RFKILL, &rt2x00dev->cap_flags))
579     + rt2x00rfkill_unregister(rt2x00dev);
580    
581     /*
582     * Allow the HW to uninitialize.
583     @@ -1168,6 +1169,12 @@ static int rt2x00lib_initialize(struct rt2x00_dev *rt2x00dev)
584    
585     set_bit(DEVICE_STATE_INITIALIZED, &rt2x00dev->flags);
586    
587     + /*
588     + * Start rfkill polling.
589     + */
590     + if (test_bit(REQUIRE_DELAYED_RFKILL, &rt2x00dev->cap_flags))
591     + rt2x00rfkill_register(rt2x00dev);
592     +
593     return 0;
594     }
595    
596     @@ -1363,7 +1370,12 @@ int rt2x00lib_probe_dev(struct rt2x00_dev *rt2x00dev)
597     rt2x00link_register(rt2x00dev);
598     rt2x00leds_register(rt2x00dev);
599     rt2x00debug_register(rt2x00dev);
600     - rt2x00rfkill_register(rt2x00dev);
601     +
602     + /*
603     + * Start rfkill polling.
604     + */
605     + if (!test_bit(REQUIRE_DELAYED_RFKILL, &rt2x00dev->cap_flags))
606     + rt2x00rfkill_register(rt2x00dev);
607    
608     return 0;
609    
610     @@ -1379,6 +1391,12 @@ void rt2x00lib_remove_dev(struct rt2x00_dev *rt2x00dev)
611     clear_bit(DEVICE_STATE_PRESENT, &rt2x00dev->flags);
612    
613     /*
614     + * Stop rfkill polling.
615     + */
616     + if (!test_bit(REQUIRE_DELAYED_RFKILL, &rt2x00dev->cap_flags))
617     + rt2x00rfkill_unregister(rt2x00dev);
618     +
619     + /*
620     * Disable radio.
621     */
622     rt2x00lib_disable_radio(rt2x00dev);
623     diff --git a/drivers/net/wireless/rt2x00/rt2x00mac.c b/drivers/net/wireless/rt2x00/rt2x00mac.c
624     index 2b724fc4e306..c03748dafd49 100644
625     --- a/drivers/net/wireless/rt2x00/rt2x00mac.c
626     +++ b/drivers/net/wireless/rt2x00/rt2x00mac.c
627     @@ -489,6 +489,8 @@ int rt2x00mac_set_key(struct ieee80211_hw *hw, enum set_key_cmd cmd,
628     crypto.cipher = rt2x00crypto_key_to_cipher(key);
629     if (crypto.cipher == CIPHER_NONE)
630     return -EOPNOTSUPP;
631     + if (crypto.cipher == CIPHER_TKIP && rt2x00_is_usb(rt2x00dev))
632     + return -EOPNOTSUPP;
633    
634     crypto.cmd = cmd;
635    
636     diff --git a/drivers/scsi/ibmvscsi/ibmvscsi.c b/drivers/scsi/ibmvscsi/ibmvscsi.c
637     index d0fa4b6c551f..c62b3e5d44bd 100644
638     --- a/drivers/scsi/ibmvscsi/ibmvscsi.c
639     +++ b/drivers/scsi/ibmvscsi/ibmvscsi.c
640     @@ -185,6 +185,11 @@ static struct viosrp_crq *crq_queue_next_crq(struct crq_queue *queue)
641     if (crq->valid & 0x80) {
642     if (++queue->cur == queue->size)
643     queue->cur = 0;
644     +
645     + /* Ensure the read of the valid bit occurs before reading any
646     + * other bits of the CRQ entry
647     + */
648     + rmb();
649     } else
650     crq = NULL;
651     spin_unlock_irqrestore(&queue->lock, flags);
652     @@ -203,6 +208,11 @@ static int ibmvscsi_send_crq(struct ibmvscsi_host_data *hostdata,
653     {
654     struct vio_dev *vdev = to_vio_dev(hostdata->dev);
655    
656     + /*
657     + * Ensure the command buffer is flushed to memory before handing it
658     + * over to the VIOS to prevent it from fetching any stale data.
659     + */
660     + mb();
661     return plpar_hcall_norets(H_SEND_CRQ, vdev->unit_address, word1, word2);
662     }
663    
664     @@ -794,7 +804,8 @@ static void purge_requests(struct ibmvscsi_host_data *hostdata, int error_code)
665     evt->hostdata->dev);
666     if (evt->cmnd_done)
667     evt->cmnd_done(evt->cmnd);
668     - } else if (evt->done)
669     + } else if (evt->done && evt->crq.format != VIOSRP_MAD_FORMAT &&
670     + evt->iu.srp.login_req.opcode != SRP_LOGIN_REQ)
671     evt->done(evt);
672     free_event_struct(&evt->hostdata->pool, evt);
673     spin_lock_irqsave(hostdata->host->host_lock, flags);
674     diff --git a/drivers/scsi/sym53c8xx_2/sym_hipd.c b/drivers/scsi/sym53c8xx_2/sym_hipd.c
675     index d92fe4037e94..6b349e301869 100644
676     --- a/drivers/scsi/sym53c8xx_2/sym_hipd.c
677     +++ b/drivers/scsi/sym53c8xx_2/sym_hipd.c
678     @@ -3000,7 +3000,11 @@ sym_dequeue_from_squeue(struct sym_hcb *np, int i, int target, int lun, int task
679     if ((target == -1 || cp->target == target) &&
680     (lun == -1 || cp->lun == lun) &&
681     (task == -1 || cp->tag == task)) {
682     +#ifdef SYM_OPT_HANDLE_DEVICE_QUEUEING
683     sym_set_cam_status(cp->cmd, DID_SOFT_ERROR);
684     +#else
685     + sym_set_cam_status(cp->cmd, DID_REQUEUE);
686     +#endif
687     sym_remque(&cp->link_ccbq);
688     sym_insque_tail(&cp->link_ccbq, &np->comp_ccbq);
689     }
690     diff --git a/drivers/scsi/virtio_scsi.c b/drivers/scsi/virtio_scsi.c
691     index 95a5d73e675c..11f5326f449f 100644
692     --- a/drivers/scsi/virtio_scsi.c
693     +++ b/drivers/scsi/virtio_scsi.c
694     @@ -270,6 +270,16 @@ static void virtscsi_req_done(struct virtqueue *vq)
695     virtscsi_vq_done(vscsi, req_vq, virtscsi_complete_cmd);
696     };
697    
698     +static void virtscsi_poll_requests(struct virtio_scsi *vscsi)
699     +{
700     + int i, num_vqs;
701     +
702     + num_vqs = vscsi->num_queues;
703     + for (i = 0; i < num_vqs; i++)
704     + virtscsi_vq_done(vscsi, &vscsi->req_vqs[i],
705     + virtscsi_complete_cmd);
706     +}
707     +
708     static void virtscsi_complete_free(struct virtio_scsi *vscsi, void *buf)
709     {
710     struct virtio_scsi_cmd *cmd = buf;
711     @@ -288,6 +298,8 @@ static void virtscsi_ctrl_done(struct virtqueue *vq)
712     virtscsi_vq_done(vscsi, &vscsi->ctrl_vq, virtscsi_complete_free);
713     };
714    
715     +static void virtscsi_handle_event(struct work_struct *work);
716     +
717     static int virtscsi_kick_event(struct virtio_scsi *vscsi,
718     struct virtio_scsi_event_node *event_node)
719     {
720     @@ -295,6 +307,7 @@ static int virtscsi_kick_event(struct virtio_scsi *vscsi,
721     struct scatterlist sg;
722     unsigned long flags;
723    
724     + INIT_WORK(&event_node->work, virtscsi_handle_event);
725     sg_init_one(&sg, &event_node->event, sizeof(struct virtio_scsi_event));
726    
727     spin_lock_irqsave(&vscsi->event_vq.vq_lock, flags);
728     @@ -412,7 +425,6 @@ static void virtscsi_complete_event(struct virtio_scsi *vscsi, void *buf)
729     {
730     struct virtio_scsi_event_node *event_node = buf;
731    
732     - INIT_WORK(&event_node->work, virtscsi_handle_event);
733     schedule_work(&event_node->work);
734     }
735    
736     @@ -602,6 +614,18 @@ static int virtscsi_tmf(struct virtio_scsi *vscsi, struct virtio_scsi_cmd *cmd)
737     cmd->resp.tmf.response == VIRTIO_SCSI_S_FUNCTION_SUCCEEDED)
738     ret = SUCCESS;
739    
740     + /*
741     + * The spec guarantees that all requests related to the TMF have
742     + * been completed, but the callback might not have run yet if
743     + * we're using independent interrupts (e.g. MSI). Poll the
744     + * virtqueues once.
745     + *
746     + * In the abort case, sc->scsi_done will do nothing, because
747     + * the block layer must have detected a timeout and as a result
748     + * REQ_ATOM_COMPLETE has been set.
749     + */
750     + virtscsi_poll_requests(vscsi);
751     +
752     out:
753     mempool_free(cmd, virtscsi_cmd_pool);
754     return ret;
755     diff --git a/drivers/tty/serial/8250/8250_dw.c b/drivers/tty/serial/8250/8250_dw.c
756     index 5d880917850f..345b5ddcb1a0 100644
757     --- a/drivers/tty/serial/8250/8250_dw.c
758     +++ b/drivers/tty/serial/8250/8250_dw.c
759     @@ -54,58 +54,100 @@
760    
761    
762     struct dw8250_data {
763     - int last_lcr;
764     + int last_mcr;
765     int line;
766     struct clk *clk;
767     };
768    
769     +static inline int dw8250_modify_msr(struct uart_port *p, int offset, int value)
770     +{
771     + struct dw8250_data *d = p->private_data;
772     +
773     + /* If reading MSR, report CTS asserted when auto-CTS/RTS enabled */
774     + if (offset == UART_MSR && d->last_mcr & UART_MCR_AFE) {
775     + value |= UART_MSR_CTS;
776     + value &= ~UART_MSR_DCTS;
777     + }
778     +
779     + return value;
780     +}
781     +
782     +static void dw8250_force_idle(struct uart_port *p)
783     +{
784     + serial8250_clear_and_reinit_fifos(container_of
785     + (p, struct uart_8250_port, port));
786     + (void)p->serial_in(p, UART_RX);
787     +}
788     +
789     static void dw8250_serial_out(struct uart_port *p, int offset, int value)
790     {
791     struct dw8250_data *d = p->private_data;
792    
793     - if (offset == UART_LCR)
794     - d->last_lcr = value;
795     + if (offset == UART_MCR)
796     + d->last_mcr = value;
797     +
798     + writeb(value, p->membase + (offset << p->regshift));
799    
800     - offset <<= p->regshift;
801     - writeb(value, p->membase + offset);
802     + /* Make sure LCR write wasn't ignored */
803     + if (offset == UART_LCR) {
804     + int tries = 1000;
805     + while (tries--) {
806     + unsigned int lcr = p->serial_in(p, UART_LCR);
807     + if ((value & ~UART_LCR_SPAR) == (lcr & ~UART_LCR_SPAR))
808     + return;
809     + dw8250_force_idle(p);
810     + writeb(value, p->membase + (UART_LCR << p->regshift));
811     + }
812     + dev_err(p->dev, "Couldn't set LCR to %d\n", value);
813     + }
814     }
815    
816     static unsigned int dw8250_serial_in(struct uart_port *p, int offset)
817     {
818     - offset <<= p->regshift;
819     + unsigned int value = readb(p->membase + (offset << p->regshift));
820    
821     - return readb(p->membase + offset);
822     + return dw8250_modify_msr(p, offset, value);
823     }
824    
825     static void dw8250_serial_out32(struct uart_port *p, int offset, int value)
826     {
827     struct dw8250_data *d = p->private_data;
828    
829     - if (offset == UART_LCR)
830     - d->last_lcr = value;
831     + if (offset == UART_MCR)
832     + d->last_mcr = value;
833    
834     - offset <<= p->regshift;
835     - writel(value, p->membase + offset);
836     + writel(value, p->membase + (offset << p->regshift));
837     +
838     + /* Make sure LCR write wasn't ignored */
839     + if (offset == UART_LCR) {
840     + int tries = 1000;
841     + while (tries--) {
842     + unsigned int lcr = p->serial_in(p, UART_LCR);
843     + if ((value & ~UART_LCR_SPAR) == (lcr & ~UART_LCR_SPAR))
844     + return;
845     + dw8250_force_idle(p);
846     + writel(value, p->membase + (UART_LCR << p->regshift));
847     + }
848     + dev_err(p->dev, "Couldn't set LCR to %d\n", value);
849     + }
850     }
851    
852     static unsigned int dw8250_serial_in32(struct uart_port *p, int offset)
853     {
854     - offset <<= p->regshift;
855     + unsigned int value = readl(p->membase + (offset << p->regshift));
856    
857     - return readl(p->membase + offset);
858     + return dw8250_modify_msr(p, offset, value);
859     }
860    
861     static int dw8250_handle_irq(struct uart_port *p)
862     {
863     - struct dw8250_data *d = p->private_data;
864     unsigned int iir = p->serial_in(p, UART_IIR);
865    
866     if (serial8250_handle_irq(p, iir)) {
867     return 1;
868     } else if ((iir & UART_IIR_BUSY) == UART_IIR_BUSY) {
869     - /* Clear the USR and write the LCR again. */
870     + /* Clear the USR */
871     (void)p->serial_in(p, DW_UART_USR);
872     - p->serial_out(p, UART_LCR, d->last_lcr);
873    
874     return 1;
875     }
876     diff --git a/drivers/usb/gadget/f_fs.c b/drivers/usb/gadget/f_fs.c
877     index b6e9d917221e..84219f656051 100644
878     --- a/drivers/usb/gadget/f_fs.c
879     +++ b/drivers/usb/gadget/f_fs.c
880     @@ -1389,11 +1389,13 @@ static int functionfs_bind(struct ffs_data *ffs, struct usb_composite_dev *cdev)
881     ffs->ep0req->context = ffs;
882    
883     lang = ffs->stringtabs;
884     - for (lang = ffs->stringtabs; *lang; ++lang) {
885     - struct usb_string *str = (*lang)->strings;
886     - int id = first_id;
887     - for (; str->s; ++id, ++str)
888     - str->id = id;
889     + if (lang) {
890     + for (; *lang; ++lang) {
891     + struct usb_string *str = (*lang)->strings;
892     + int id = first_id;
893     + for (; str->s; ++id, ++str)
894     + str->id = id;
895     + }
896     }
897    
898     ffs->gadget = cdev->gadget;
899     diff --git a/drivers/usb/host/xhci-ring.c b/drivers/usb/host/xhci-ring.c
900     index bcfb08e41eb6..fe42cae6d1ef 100644
901     --- a/drivers/usb/host/xhci-ring.c
902     +++ b/drivers/usb/host/xhci-ring.c
903     @@ -3590,7 +3590,7 @@ static unsigned int xhci_get_burst_count(struct xhci_hcd *xhci,
904     return 0;
905    
906     max_burst = urb->ep->ss_ep_comp.bMaxBurst;
907     - return roundup(total_packet_count, max_burst + 1) - 1;
908     + return DIV_ROUND_UP(total_packet_count, max_burst + 1) - 1;
909     }
910    
911     /*
912     diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c
913     index 4b46de842175..9a7088bc634d 100644
914     --- a/drivers/usb/host/xhci.c
915     +++ b/drivers/usb/host/xhci.c
916     @@ -960,7 +960,7 @@ int xhci_suspend(struct xhci_hcd *xhci)
917     */
918     int xhci_resume(struct xhci_hcd *xhci, bool hibernated)
919     {
920     - u32 command, temp = 0;
921     + u32 command, temp = 0, status;
922     struct usb_hcd *hcd = xhci_to_hcd(xhci);
923     struct usb_hcd *secondary_hcd;
924     int retval = 0;
925     @@ -1084,8 +1084,12 @@ int xhci_resume(struct xhci_hcd *xhci, bool hibernated)
926    
927     done:
928     if (retval == 0) {
929     - usb_hcd_resume_root_hub(hcd);
930     - usb_hcd_resume_root_hub(xhci->shared_hcd);
931     + /* Resume root hubs only when have pending events. */
932     + status = readl(&xhci->op_regs->status);
933     + if (status & STS_EINT) {
934     + usb_hcd_resume_root_hub(hcd);
935     + usb_hcd_resume_root_hub(xhci->shared_hcd);
936     + }
937     }
938    
939     /*
940     diff --git a/drivers/usb/serial/ftdi_sio.c b/drivers/usb/serial/ftdi_sio.c
941     index b9e663ac9a35..3e315de9bbd4 100644
942     --- a/drivers/usb/serial/ftdi_sio.c
943     +++ b/drivers/usb/serial/ftdi_sio.c
944     @@ -1577,14 +1577,17 @@ static void ftdi_set_max_packet_size(struct usb_serial_port *port)
945     struct usb_device *udev = serial->dev;
946    
947     struct usb_interface *interface = serial->interface;
948     - struct usb_endpoint_descriptor *ep_desc = &interface->cur_altsetting->endpoint[1].desc;
949     + struct usb_endpoint_descriptor *ep_desc;
950    
951     unsigned num_endpoints;
952     - int i;
953     + unsigned i;
954    
955     num_endpoints = interface->cur_altsetting->desc.bNumEndpoints;
956     dev_info(&udev->dev, "Number of endpoints %d\n", num_endpoints);
957    
958     + if (!num_endpoints)
959     + return;
960     +
961     /* NOTE: some customers have programmed FT232R/FT245R devices
962     * with an endpoint size of 0 - not good. In this case, we
963     * want to override the endpoint descriptor setting and use a
964     diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c
965     index 70ede84f4f6b..e25e8ca09fe2 100644
966     --- a/drivers/usb/serial/option.c
967     +++ b/drivers/usb/serial/option.c
968     @@ -352,6 +352,9 @@ static void option_instat_callback(struct urb *urb);
969     /* Zoom */
970     #define ZOOM_PRODUCT_4597 0x9607
971    
972     +/* SpeedUp SU9800 usb 3g modem */
973     +#define SPEEDUP_PRODUCT_SU9800 0x9800
974     +
975     /* Haier products */
976     #define HAIER_VENDOR_ID 0x201e
977     #define HAIER_PRODUCT_CE100 0x2009
978     @@ -372,8 +375,12 @@ static void option_instat_callback(struct urb *urb);
979     /* Olivetti products */
980     #define OLIVETTI_VENDOR_ID 0x0b3c
981     #define OLIVETTI_PRODUCT_OLICARD100 0xc000
982     +#define OLIVETTI_PRODUCT_OLICARD120 0xc001
983     +#define OLIVETTI_PRODUCT_OLICARD140 0xc002
984     #define OLIVETTI_PRODUCT_OLICARD145 0xc003
985     +#define OLIVETTI_PRODUCT_OLICARD155 0xc004
986     #define OLIVETTI_PRODUCT_OLICARD200 0xc005
987     +#define OLIVETTI_PRODUCT_OLICARD160 0xc00a
988     #define OLIVETTI_PRODUCT_OLICARD500 0xc00b
989    
990     /* Celot products */
991     @@ -1577,6 +1584,7 @@ static const struct usb_device_id option_ids[] = {
992     { USB_DEVICE(LONGCHEER_VENDOR_ID, FOUR_G_SYSTEMS_PRODUCT_W14),
993     .driver_info = (kernel_ulong_t)&four_g_w14_blacklist
994     },
995     + { USB_DEVICE_INTERFACE_CLASS(LONGCHEER_VENDOR_ID, SPEEDUP_PRODUCT_SU9800, 0xff) },
996     { USB_DEVICE(LONGCHEER_VENDOR_ID, ZOOM_PRODUCT_4597) },
997     { USB_DEVICE(LONGCHEER_VENDOR_ID, IBALL_3_5G_CONNECT) },
998     { USB_DEVICE(HAIER_VENDOR_ID, HAIER_PRODUCT_CE100) },
999     @@ -1611,15 +1619,21 @@ static const struct usb_device_id option_ids[] = {
1000     { USB_DEVICE(SIEMENS_VENDOR_ID, CINTERION_PRODUCT_HC25_MDMNET) },
1001     { USB_DEVICE(SIEMENS_VENDOR_ID, CINTERION_PRODUCT_HC28_MDM) }, /* HC28 enumerates with Siemens or Cinterion VID depending on FW revision */
1002     { USB_DEVICE(SIEMENS_VENDOR_ID, CINTERION_PRODUCT_HC28_MDMNET) },
1003     -
1004     - { USB_DEVICE(OLIVETTI_VENDOR_ID, OLIVETTI_PRODUCT_OLICARD100) },
1005     + { USB_DEVICE(OLIVETTI_VENDOR_ID, OLIVETTI_PRODUCT_OLICARD100),
1006     + .driver_info = (kernel_ulong_t)&net_intf4_blacklist },
1007     + { USB_DEVICE(OLIVETTI_VENDOR_ID, OLIVETTI_PRODUCT_OLICARD120),
1008     + .driver_info = (kernel_ulong_t)&net_intf4_blacklist },
1009     + { USB_DEVICE(OLIVETTI_VENDOR_ID, OLIVETTI_PRODUCT_OLICARD140),
1010     + .driver_info = (kernel_ulong_t)&net_intf4_blacklist },
1011     { USB_DEVICE(OLIVETTI_VENDOR_ID, OLIVETTI_PRODUCT_OLICARD145) },
1012     + { USB_DEVICE(OLIVETTI_VENDOR_ID, OLIVETTI_PRODUCT_OLICARD155),
1013     + .driver_info = (kernel_ulong_t)&net_intf6_blacklist },
1014     { USB_DEVICE(OLIVETTI_VENDOR_ID, OLIVETTI_PRODUCT_OLICARD200),
1015     - .driver_info = (kernel_ulong_t)&net_intf6_blacklist
1016     - },
1017     + .driver_info = (kernel_ulong_t)&net_intf6_blacklist },
1018     + { USB_DEVICE(OLIVETTI_VENDOR_ID, OLIVETTI_PRODUCT_OLICARD160),
1019     + .driver_info = (kernel_ulong_t)&net_intf6_blacklist },
1020     { USB_DEVICE(OLIVETTI_VENDOR_ID, OLIVETTI_PRODUCT_OLICARD500),
1021     - .driver_info = (kernel_ulong_t)&net_intf4_blacklist
1022     - },
1023     + .driver_info = (kernel_ulong_t)&net_intf4_blacklist },
1024     { USB_DEVICE(CELOT_VENDOR_ID, CELOT_PRODUCT_CT680M) }, /* CT-650 CDMA 450 1xEVDO modem */
1025     { USB_DEVICE_AND_INTERFACE_INFO(SAMSUNG_VENDOR_ID, SAMSUNG_PRODUCT_GT_B3730, USB_CLASS_CDC_DATA, 0x00, 0x00) }, /* Samsung GT-B3730 LTE USB modem.*/
1026     { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CEM600) },
1027     diff --git a/drivers/video/fb-puv3.c b/drivers/video/fb-puv3.c
1028     index 27fc956166fa..520112531eb0 100644
1029     --- a/drivers/video/fb-puv3.c
1030     +++ b/drivers/video/fb-puv3.c
1031     @@ -18,8 +18,10 @@
1032     #include <linux/fb.h>
1033     #include <linux/init.h>
1034     #include <linux/console.h>
1035     +#include <linux/mm.h>
1036    
1037     #include <asm/sizes.h>
1038     +#include <asm/pgtable.h>
1039     #include <mach/hardware.h>
1040    
1041     /* Platform_data reserved for unifb registers. */
1042     diff --git a/fs/cifs/cifs_unicode.c b/fs/cifs/cifs_unicode.c
1043     index 0227b45ef00a..15e9505aa35f 100644
1044     --- a/fs/cifs/cifs_unicode.c
1045     +++ b/fs/cifs/cifs_unicode.c
1046     @@ -290,7 +290,8 @@ int
1047     cifsConvertToUTF16(__le16 *target, const char *source, int srclen,
1048     const struct nls_table *cp, int mapChars)
1049     {
1050     - int i, j, charlen;
1051     + int i, charlen;
1052     + int j = 0;
1053     char src_char;
1054     __le16 dst_char;
1055     wchar_t tmp;
1056     @@ -298,12 +299,11 @@ cifsConvertToUTF16(__le16 *target, const char *source, int srclen,
1057     if (!mapChars)
1058     return cifs_strtoUTF16(target, source, PATH_MAX, cp);
1059    
1060     - for (i = 0, j = 0; i < srclen; j++) {
1061     + for (i = 0; i < srclen; j++) {
1062     src_char = source[i];
1063     charlen = 1;
1064     switch (src_char) {
1065     case 0:
1066     - put_unaligned(0, &target[j]);
1067     goto ctoUTF16_out;
1068     case ':':
1069     dst_char = cpu_to_le16(UNI_COLON);
1070     @@ -350,6 +350,7 @@ cifsConvertToUTF16(__le16 *target, const char *source, int srclen,
1071     }
1072    
1073     ctoUTF16_out:
1074     + put_unaligned(0, &target[j]); /* Null terminate target unicode string */
1075     return j;
1076     }
1077    
1078     diff --git a/fs/ext4/indirect.c b/fs/ext4/indirect.c
1079     index b8d5d351e24f..589061469687 100644
1080     --- a/fs/ext4/indirect.c
1081     +++ b/fs/ext4/indirect.c
1082     @@ -390,7 +390,13 @@ static int ext4_alloc_branch(handle_t *handle, struct inode *inode,
1083     return 0;
1084     failed:
1085     for (; i >= 0; i--) {
1086     - if (i != indirect_blks && branch[i].bh)
1087     + /*
1088     + * We want to ext4_forget() only freshly allocated indirect
1089     + * blocks. Buffer for new_blocks[i-1] is at branch[i].bh and
1090     + * buffer at branch[0].bh is indirect block / inode already
1091     + * existing before ext4_alloc_branch() was called.
1092     + */
1093     + if (i > 0 && i != indirect_blks && branch[i].bh)
1094     ext4_forget(handle, 1, inode, branch[i].bh,
1095     branch[i].bh->b_blocknr);
1096     ext4_free_blocks(handle, inode, NULL, new_blocks[i],
1097     @@ -1325,16 +1331,24 @@ static int free_hole_blocks(handle_t *handle, struct inode *inode,
1098     blk = *i_data;
1099     if (level > 0) {
1100     ext4_lblk_t first2;
1101     + ext4_lblk_t count2;
1102     +
1103     bh = sb_bread(inode->i_sb, le32_to_cpu(blk));
1104     if (!bh) {
1105     EXT4_ERROR_INODE_BLOCK(inode, le32_to_cpu(blk),
1106     "Read failure");
1107     return -EIO;
1108     }
1109     - first2 = (first > offset) ? first - offset : 0;
1110     + if (first > offset) {
1111     + first2 = first - offset;
1112     + count2 = count;
1113     + } else {
1114     + first2 = 0;
1115     + count2 = count - (offset - first);
1116     + }
1117     ret = free_hole_blocks(handle, inode, bh,
1118     (__le32 *)bh->b_data, level - 1,
1119     - first2, count - offset,
1120     + first2, count2,
1121     inode->i_sb->s_blocksize >> 2);
1122     if (ret) {
1123     brelse(bh);
1124     diff --git a/fs/nfsd/nfs4proc.c b/fs/nfsd/nfs4proc.c
1125     index f7d7d04674fb..0f9ce13972d0 100644
1126     --- a/fs/nfsd/nfs4proc.c
1127     +++ b/fs/nfsd/nfs4proc.c
1128     @@ -576,15 +576,6 @@ nfsd4_create(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
1129    
1130     switch (create->cr_type) {
1131     case NF4LNK:
1132     - /* ugh! we have to null-terminate the linktext, or
1133     - * vfs_symlink() will choke. it is always safe to
1134     - * null-terminate by brute force, since at worst we
1135     - * will overwrite the first byte of the create namelen
1136     - * in the XDR buffer, which has already been extracted
1137     - * during XDR decode.
1138     - */
1139     - create->cr_linkname[create->cr_linklen] = 0;
1140     -
1141     status = nfsd_symlink(rqstp, &cstate->current_fh,
1142     create->cr_name, create->cr_namelen,
1143     create->cr_linkname, create->cr_linklen,
1144     diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c
1145     index d4890a96421e..9b45f0666cfc 100644
1146     --- a/fs/nfsd/nfs4xdr.c
1147     +++ b/fs/nfsd/nfs4xdr.c
1148     @@ -553,7 +553,18 @@ nfsd4_decode_create(struct nfsd4_compoundargs *argp, struct nfsd4_create *create
1149     READ_BUF(4);
1150     READ32(create->cr_linklen);
1151     READ_BUF(create->cr_linklen);
1152     - SAVEMEM(create->cr_linkname, create->cr_linklen);
1153     + /*
1154     + * The VFS will want a null-terminated string, and
1155     + * null-terminating in place isn't safe since this might
1156     + * end on a page boundary:
1157     + */
1158     + create->cr_linkname =
1159     + kmalloc(create->cr_linklen + 1, GFP_KERNEL);
1160     + if (!create->cr_linkname)
1161     + return nfserr_jukebox;
1162     + memcpy(create->cr_linkname, p, create->cr_linklen);
1163     + create->cr_linkname[create->cr_linklen] = '\0';
1164     + defer_free(argp, kfree, create->cr_linkname);
1165     break;
1166     case NF4BLK:
1167     case NF4CHR:
1168     diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c
1169     index 60f49637b4d5..21920add7972 100644
1170     --- a/kernel/trace/trace.c
1171     +++ b/kernel/trace/trace.c
1172     @@ -1306,7 +1306,6 @@ void tracing_start(void)
1173    
1174     arch_spin_unlock(&ftrace_max_lock);
1175    
1176     - ftrace_start();
1177     out:
1178     raw_spin_unlock_irqrestore(&global_trace.start_lock, flags);
1179     }
1180     @@ -1353,7 +1352,6 @@ void tracing_stop(void)
1181     struct ring_buffer *buffer;
1182     unsigned long flags;
1183    
1184     - ftrace_stop();
1185     raw_spin_lock_irqsave(&global_trace.start_lock, flags);
1186     if (global_trace.stop_count++)
1187     goto out;
1188     diff --git a/mm/hugetlb.c b/mm/hugetlb.c
1189     index de73c9d144e1..dbc949c409c7 100644
1190     --- a/mm/hugetlb.c
1191     +++ b/mm/hugetlb.c
1192     @@ -2328,6 +2328,31 @@ static void set_huge_ptep_writable(struct vm_area_struct *vma,
1193     update_mmu_cache(vma, address, ptep);
1194     }
1195    
1196     +static int is_hugetlb_entry_migration(pte_t pte)
1197     +{
1198     + swp_entry_t swp;
1199     +
1200     + if (huge_pte_none(pte) || pte_present(pte))
1201     + return 0;
1202     + swp = pte_to_swp_entry(pte);
1203     + if (non_swap_entry(swp) && is_migration_entry(swp))
1204     + return 1;
1205     + else
1206     + return 0;
1207     +}
1208     +
1209     +static int is_hugetlb_entry_hwpoisoned(pte_t pte)
1210     +{
1211     + swp_entry_t swp;
1212     +
1213     + if (huge_pte_none(pte) || pte_present(pte))
1214     + return 0;
1215     + swp = pte_to_swp_entry(pte);
1216     + if (non_swap_entry(swp) && is_hwpoison_entry(swp))
1217     + return 1;
1218     + else
1219     + return 0;
1220     +}
1221    
1222     int copy_hugetlb_page_range(struct mm_struct *dst, struct mm_struct *src,
1223     struct vm_area_struct *vma)
1224     @@ -2355,10 +2380,26 @@ int copy_hugetlb_page_range(struct mm_struct *dst, struct mm_struct *src,
1225    
1226     spin_lock(&dst->page_table_lock);
1227     spin_lock_nested(&src->page_table_lock, SINGLE_DEPTH_NESTING);
1228     - if (!huge_pte_none(huge_ptep_get(src_pte))) {
1229     + entry = huge_ptep_get(src_pte);
1230     + if (huge_pte_none(entry)) { /* skip none entry */
1231     + ;
1232     + } else if (unlikely(is_hugetlb_entry_migration(entry) ||
1233     + is_hugetlb_entry_hwpoisoned(entry))) {
1234     + swp_entry_t swp_entry = pte_to_swp_entry(entry);
1235     +
1236     + if (is_write_migration_entry(swp_entry) && cow) {
1237     + /*
1238     + * COW mappings require pages in both
1239     + * parent and child to be set to read.
1240     + */
1241     + make_migration_entry_read(&swp_entry);
1242     + entry = swp_entry_to_pte(swp_entry);
1243     + set_huge_pte_at(src, addr, src_pte, entry);
1244     + }
1245     + set_huge_pte_at(dst, addr, dst_pte, entry);
1246     + } else {
1247     if (cow)
1248     huge_ptep_set_wrprotect(src, addr, src_pte);
1249     - entry = huge_ptep_get(src_pte);
1250     ptepage = pte_page(entry);
1251     get_page(ptepage);
1252     page_dup_rmap(ptepage);
1253     @@ -2373,32 +2414,6 @@ nomem:
1254     return -ENOMEM;
1255     }
1256    
1257     -static int is_hugetlb_entry_migration(pte_t pte)
1258     -{
1259     - swp_entry_t swp;
1260     -
1261     - if (huge_pte_none(pte) || pte_present(pte))
1262     - return 0;
1263     - swp = pte_to_swp_entry(pte);
1264     - if (non_swap_entry(swp) && is_migration_entry(swp))
1265     - return 1;
1266     - else
1267     - return 0;
1268     -}
1269     -
1270     -static int is_hugetlb_entry_hwpoisoned(pte_t pte)
1271     -{
1272     - swp_entry_t swp;
1273     -
1274     - if (huge_pte_none(pte) || pte_present(pte))
1275     - return 0;
1276     - swp = pte_to_swp_entry(pte);
1277     - if (non_swap_entry(swp) && is_hwpoison_entry(swp))
1278     - return 1;
1279     - else
1280     - return 0;
1281     -}
1282     -
1283     void __unmap_hugepage_range(struct mmu_gather *tlb, struct vm_area_struct *vma,
1284     unsigned long start, unsigned long end,
1285     struct page *ref_page)
1286     diff --git a/mm/mempolicy.c b/mm/mempolicy.c
1287     index 6c2dace665aa..1124d5fc06e9 100644
1288     --- a/mm/mempolicy.c
1289     +++ b/mm/mempolicy.c
1290     @@ -608,19 +608,18 @@ static unsigned long change_prot_numa(struct vm_area_struct *vma,
1291     * If pagelist != NULL then isolate pages from the LRU and
1292     * put them on the pagelist.
1293     */
1294     -static struct vm_area_struct *
1295     +static int
1296     check_range(struct mm_struct *mm, unsigned long start, unsigned long end,
1297     const nodemask_t *nodes, unsigned long flags, void *private)
1298     {
1299     - int err;
1300     - struct vm_area_struct *first, *vma, *prev;
1301     -
1302     + int err = 0;
1303     + struct vm_area_struct *vma, *prev;
1304    
1305     - first = find_vma(mm, start);
1306     - if (!first)
1307     - return ERR_PTR(-EFAULT);
1308     + vma = find_vma(mm, start);
1309     + if (!vma)
1310     + return -EFAULT;
1311     prev = NULL;
1312     - for (vma = first; vma && vma->vm_start < end; vma = vma->vm_next) {
1313     + for (; vma && vma->vm_start < end; vma = vma->vm_next) {
1314     unsigned long endvma = vma->vm_end;
1315    
1316     if (endvma > end)
1317     @@ -630,9 +629,9 @@ check_range(struct mm_struct *mm, unsigned long start, unsigned long end,
1318    
1319     if (!(flags & MPOL_MF_DISCONTIG_OK)) {
1320     if (!vma->vm_next && vma->vm_end < end)
1321     - return ERR_PTR(-EFAULT);
1322     + return -EFAULT;
1323     if (prev && prev->vm_end < vma->vm_start)
1324     - return ERR_PTR(-EFAULT);
1325     + return -EFAULT;
1326     }
1327    
1328     if (is_vm_hugetlb_page(vma))
1329     @@ -649,15 +648,13 @@ check_range(struct mm_struct *mm, unsigned long start, unsigned long end,
1330    
1331     err = check_pgd_range(vma, start, endvma, nodes,
1332     flags, private);
1333     - if (err) {
1334     - first = ERR_PTR(err);
1335     + if (err)
1336     break;
1337     - }
1338     }
1339     next:
1340     prev = vma;
1341     }
1342     - return first;
1343     + return err;
1344     }
1345    
1346     /*
1347     @@ -1138,16 +1135,17 @@ out:
1348    
1349     /*
1350     * Allocate a new page for page migration based on vma policy.
1351     - * Start assuming that page is mapped by vma pointed to by @private.
1352     + * Start by assuming the page is mapped by the same vma as contains @start.
1353     * Search forward from there, if not. N.B., this assumes that the
1354     * list of pages handed to migrate_pages()--which is how we get here--
1355     * is in virtual address order.
1356     */
1357     -static struct page *new_vma_page(struct page *page, unsigned long private, int **x)
1358     +static struct page *new_page(struct page *page, unsigned long start, int **x)
1359     {
1360     - struct vm_area_struct *vma = (struct vm_area_struct *)private;
1361     + struct vm_area_struct *vma;
1362     unsigned long uninitialized_var(address);
1363    
1364     + vma = find_vma(current->mm, start);
1365     while (vma) {
1366     address = page_address_in_vma(page, vma);
1367     if (address != -EFAULT)
1368     @@ -1173,7 +1171,7 @@ int do_migrate_pages(struct mm_struct *mm, const nodemask_t *from,
1369     return -ENOSYS;
1370     }
1371    
1372     -static struct page *new_vma_page(struct page *page, unsigned long private, int **x)
1373     +static struct page *new_page(struct page *page, unsigned long start, int **x)
1374     {
1375     return NULL;
1376     }
1377     @@ -1183,7 +1181,6 @@ static long do_mbind(unsigned long start, unsigned long len,
1378     unsigned short mode, unsigned short mode_flags,
1379     nodemask_t *nmask, unsigned long flags)
1380     {
1381     - struct vm_area_struct *vma;
1382     struct mm_struct *mm = current->mm;
1383     struct mempolicy *new;
1384     unsigned long end;
1385     @@ -1249,11 +1246,9 @@ static long do_mbind(unsigned long start, unsigned long len,
1386     if (err)
1387     goto mpol_out;
1388    
1389     - vma = check_range(mm, start, end, nmask,
1390     + err = check_range(mm, start, end, nmask,
1391     flags | MPOL_MF_INVERT, &pagelist);
1392     -
1393     - err = PTR_ERR(vma); /* maybe ... */
1394     - if (!IS_ERR(vma))
1395     + if (!err)
1396     err = mbind_range(mm, start, end, new);
1397    
1398     if (!err) {
1399     @@ -1261,9 +1256,8 @@ static long do_mbind(unsigned long start, unsigned long len,
1400    
1401     if (!list_empty(&pagelist)) {
1402     WARN_ON_ONCE(flags & MPOL_MF_LAZY);
1403     - nr_failed = migrate_pages(&pagelist, new_vma_page,
1404     - (unsigned long)vma,
1405     - MIGRATE_SYNC, MR_MEMPOLICY_MBIND);
1406     + nr_failed = migrate_pages(&pagelist, new_page,
1407     + start, MIGRATE_SYNC, MR_MEMPOLICY_MBIND);
1408     if (nr_failed)
1409     putback_lru_pages(&pagelist);
1410     }
1411     diff --git a/net/bluetooth/hci_conn.c b/net/bluetooth/hci_conn.c
1412     index 4c51c055d00f..8e7290aea8f8 100644
1413     --- a/net/bluetooth/hci_conn.c
1414     +++ b/net/bluetooth/hci_conn.c
1415     @@ -659,7 +659,7 @@ static int hci_conn_auth(struct hci_conn *conn, __u8 sec_level, __u8 auth_type)
1416     /* If we're already encrypted set the REAUTH_PEND flag,
1417     * otherwise set the ENCRYPT_PEND.
1418     */
1419     - if (conn->key_type != 0xff)
1420     + if (conn->link_mode & HCI_LM_ENCRYPT)
1421     set_bit(HCI_CONN_REAUTH_PEND, &conn->flags);
1422     else
1423     set_bit(HCI_CONN_ENCRYPT_PEND, &conn->flags);
1424     diff --git a/net/bluetooth/hci_event.c b/net/bluetooth/hci_event.c
1425     index ab2ec7c414cb..5daf7ab26710 100644
1426     --- a/net/bluetooth/hci_event.c
1427     +++ b/net/bluetooth/hci_event.c
1428     @@ -3218,8 +3218,11 @@ static void hci_user_confirm_request_evt(struct hci_dev *hdev,
1429    
1430     /* If we're not the initiators request authorization to
1431     * proceed from user space (mgmt_user_confirm with
1432     - * confirm_hint set to 1). */
1433     - if (!test_bit(HCI_CONN_AUTH_PEND, &conn->flags)) {
1434     + * confirm_hint set to 1). The exception is if neither
1435     + * side had MITM in which case we do auto-accept.
1436     + */
1437     + if (!test_bit(HCI_CONN_AUTH_PEND, &conn->flags) &&
1438     + (loc_mitm || rem_mitm)) {
1439     BT_DBG("Confirming auto-accept as acceptor");
1440     confirm_hint = 1;
1441     goto confirm;
1442     diff --git a/net/bluetooth/mgmt.c b/net/bluetooth/mgmt.c
1443     index f8ecbc70293d..8208a13a9837 100644
1444     --- a/net/bluetooth/mgmt.c
1445     +++ b/net/bluetooth/mgmt.c
1446     @@ -2333,8 +2333,13 @@ static int user_pairing_resp(struct sock *sk, struct hci_dev *hdev,
1447     }
1448    
1449     if (addr->type == BDADDR_LE_PUBLIC || addr->type == BDADDR_LE_RANDOM) {
1450     - /* Continue with pairing via SMP */
1451     + /* Continue with pairing via SMP. The hdev lock must be
1452     + * released as SMP may try to recquire it for crypto
1453     + * purposes.
1454     + */
1455     + hci_dev_unlock(hdev);
1456     err = smp_user_confirm_reply(conn, mgmt_op, passkey);
1457     + hci_dev_lock(hdev);
1458    
1459     if (!err)
1460     err = cmd_complete(sk, hdev->id, mgmt_op,
1461     diff --git a/net/mac80211/debugfs_netdev.c b/net/mac80211/debugfs_netdev.c
1462     index 14abcf44f974..2d5b4f65c519 100644
1463     --- a/net/mac80211/debugfs_netdev.c
1464     +++ b/net/mac80211/debugfs_netdev.c
1465     @@ -34,8 +34,7 @@ static ssize_t ieee80211_if_read(
1466     ssize_t ret = -EINVAL;
1467    
1468     read_lock(&dev_base_lock);
1469     - if (sdata->dev->reg_state == NETREG_REGISTERED)
1470     - ret = (*format)(sdata, buf, sizeof(buf));
1471     + ret = (*format)(sdata, buf, sizeof(buf));
1472     read_unlock(&dev_base_lock);
1473    
1474     if (ret >= 0)
1475     @@ -62,8 +61,7 @@ static ssize_t ieee80211_if_write(
1476    
1477     ret = -ENODEV;
1478     rtnl_lock();
1479     - if (sdata->dev->reg_state == NETREG_REGISTERED)
1480     - ret = (*write)(sdata, buf, count);
1481     + ret = (*write)(sdata, buf, count);
1482     rtnl_unlock();
1483    
1484     return ret;
1485     diff --git a/net/mac80211/sta_info.c b/net/mac80211/sta_info.c
1486     index 0418777c361f..557a5760f9f6 100644
1487     --- a/net/mac80211/sta_info.c
1488     +++ b/net/mac80211/sta_info.c
1489     @@ -270,6 +270,7 @@ void sta_info_free(struct ieee80211_local *local, struct sta_info *sta)
1490    
1491     sta_dbg(sta->sdata, "Destroyed STA %pM\n", sta->sta.addr);
1492    
1493     + kfree(rcu_dereference_raw(sta->sta.rates));
1494     kfree(sta);
1495     }
1496    
1497     diff --git a/sound/usb/pcm.c b/sound/usb/pcm.c
1498     index 93b6e32cfead..0d7a872dab36 100644
1499     --- a/sound/usb/pcm.c
1500     +++ b/sound/usb/pcm.c
1501     @@ -1420,7 +1420,8 @@ static void retire_playback_urb(struct snd_usb_substream *subs,
1502     * on two reads of a counter updated every ms.
1503     */
1504     if (abs(est_delay - subs->last_delay) * 1000 > runtime->rate * 2)
1505     - snd_printk(KERN_DEBUG "delay: estimated %d, actual %d\n",
1506     + dev_dbg_ratelimited(&subs->dev->dev,
1507     + "delay: estimated %d, actual %d\n",
1508     est_delay, subs->last_delay);
1509    
1510     if (!subs->running) {
1511     diff --git a/tools/usb/ffs-test.c b/tools/usb/ffs-test.c
1512     index fe1e66b6ef40..a87e99f37c52 100644
1513     --- a/tools/usb/ffs-test.c
1514     +++ b/tools/usb/ffs-test.c
1515     @@ -116,8 +116,8 @@ static const struct {
1516     .header = {
1517     .magic = cpu_to_le32(FUNCTIONFS_DESCRIPTORS_MAGIC),
1518     .length = cpu_to_le32(sizeof descriptors),
1519     - .fs_count = 3,
1520     - .hs_count = 3,
1521     + .fs_count = cpu_to_le32(3),
1522     + .hs_count = cpu_to_le32(3),
1523     },
1524     .fs_descs = {
1525     .intf = {