]> git.ipfire.org Git - ipfire-2.x.git/blob - src/patches/suse-2.6.27.39/patches.kernel.org/patch-2.6.27.25-26
Imported linux-2.6.27.39 suse/xen patches.
[ipfire-2.x.git] / src / patches / suse-2.6.27.39 / patches.kernel.org / patch-2.6.27.25-26
1 From: Greg Kroah-Hartman <gregkh@suse.de>
2 Subject: Upstream 2.6.27.26 release from kernel.org
3
4 Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
5
6 diff --git a/Makefile b/Makefile
7 index 1314692..90764ee 100644
8 --- a/Makefile
9 +++ b/Makefile
10 @@ -1,7 +1,7 @@
11 VERSION = 2
12 PATCHLEVEL = 6
13 SUBLEVEL = 27
14 -EXTRAVERSION = .25
15 +EXTRAVERSION = .26
16 NAME = Trembling Tortoise
17
18 # *DOCUMENTATION*
19 diff --git a/arch/x86/kernel/reboot.c b/arch/x86/kernel/reboot.c
20 index dfaa343..1177f10 100644
21 --- a/arch/x86/kernel/reboot.c
22 +++ b/arch/x86/kernel/reboot.c
23 @@ -169,6 +169,24 @@ static struct dmi_system_id __initdata reboot_dmi_table[] = {
24 DMI_MATCH(DMI_BOARD_NAME, "0KW626"),
25 },
26 },
27 + { /* Handle problems with rebooting on Dell Optiplex 360 with 0T656F */
28 + .callback = set_bios_reboot,
29 + .ident = "Dell OptiPlex 360",
30 + .matches = {
31 + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
32 + DMI_MATCH(DMI_PRODUCT_NAME, "OptiPlex 360"),
33 + DMI_MATCH(DMI_BOARD_NAME, "0T656F"),
34 + },
35 + },
36 + { /* Handle problems with rebooting on Dell Optiplex 330 with 0KP561 */
37 + .callback = set_bios_reboot,
38 + .ident = "Dell OptiPlex 330",
39 + .matches = {
40 + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
41 + DMI_MATCH(DMI_PRODUCT_NAME, "OptiPlex 330"),
42 + DMI_MATCH(DMI_BOARD_NAME, "0KP561"),
43 + },
44 + },
45 { /* Handle problems with rebooting on Dell 2400's */
46 .callback = set_bios_reboot,
47 .ident = "Dell PowerEdge 2400",
48 diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c
49 index 2781331..f0b164b 100644
50 --- a/arch/x86/kernel/setup.c
51 +++ b/arch/x86/kernel/setup.c
52 @@ -250,15 +250,13 @@ static inline void copy_edd(void)
53
54 #ifdef CONFIG_BLK_DEV_INITRD
55
56 -#ifdef CONFIG_X86_32
57 -
58 #define MAX_MAP_CHUNK (NR_FIX_BTMAPS << PAGE_SHIFT)
59 static void __init relocate_initrd(void)
60 {
61
62 u64 ramdisk_image = boot_params.hdr.ramdisk_image;
63 u64 ramdisk_size = boot_params.hdr.ramdisk_size;
64 - u64 end_of_lowmem = max_low_pfn << PAGE_SHIFT;
65 + u64 end_of_lowmem = max_low_pfn_mapped << PAGE_SHIFT;
66 u64 ramdisk_here;
67 unsigned long slop, clen, mapaddr;
68 char *p, *q;
69 @@ -314,14 +312,13 @@ static void __init relocate_initrd(void)
70 ramdisk_image, ramdisk_image + ramdisk_size - 1,
71 ramdisk_here, ramdisk_here + ramdisk_size - 1);
72 }
73 -#endif
74
75 static void __init reserve_initrd(void)
76 {
77 u64 ramdisk_image = boot_params.hdr.ramdisk_image;
78 u64 ramdisk_size = boot_params.hdr.ramdisk_size;
79 u64 ramdisk_end = ramdisk_image + ramdisk_size;
80 - u64 end_of_lowmem = max_low_pfn << PAGE_SHIFT;
81 + u64 end_of_lowmem = max_low_pfn_mapped << PAGE_SHIFT;
82
83 if (!boot_params.hdr.type_of_loader ||
84 !ramdisk_image || !ramdisk_size)
85 @@ -351,14 +348,8 @@ static void __init reserve_initrd(void)
86 return;
87 }
88
89 -#ifdef CONFIG_X86_32
90 relocate_initrd();
91 -#else
92 - printk(KERN_ERR "initrd extends beyond end of memory "
93 - "(0x%08llx > 0x%08llx)\ndisabling initrd\n",
94 - ramdisk_end, end_of_lowmem);
95 - initrd_start = 0;
96 -#endif
97 +
98 free_early(ramdisk_image, ramdisk_end);
99 }
100 #else
101 diff --git a/drivers/block/floppy.c b/drivers/block/floppy.c
102 index 395f8ea..615fcd3 100644
103 --- a/drivers/block/floppy.c
104 +++ b/drivers/block/floppy.c
105 @@ -177,6 +177,7 @@ static int print_unex = 1;
106 #include <linux/interrupt.h>
107 #include <linux/init.h>
108 #include <linux/platform_device.h>
109 +#include <linux/mod_devicetable.h>
110 #include <linux/buffer_head.h> /* for invalidate_buffers() */
111 #include <linux/mutex.h>
112
113 @@ -551,6 +552,8 @@ static void process_fd_request(void);
114 static void recalibrate_floppy(void);
115 static void floppy_shutdown(unsigned long);
116
117 +static int floppy_request_regions(int);
118 +static void floppy_release_regions(int);
119 static int floppy_grab_irq_and_dma(void);
120 static void floppy_release_irq_and_dma(void);
121
122 @@ -4273,8 +4276,7 @@ static int __init floppy_init(void)
123 FDCS->rawcmd = 2;
124 if (user_reset_fdc(-1, FD_RESET_ALWAYS, 0)) {
125 /* free ioports reserved by floppy_grab_irq_and_dma() */
126 - release_region(FDCS->address + 2, 4);
127 - release_region(FDCS->address + 7, 1);
128 + floppy_release_regions(fdc);
129 FDCS->address = -1;
130 FDCS->version = FDC_NONE;
131 continue;
132 @@ -4283,8 +4285,7 @@ static int __init floppy_init(void)
133 FDCS->version = get_fdc_version();
134 if (FDCS->version == FDC_NONE) {
135 /* free ioports reserved by floppy_grab_irq_and_dma() */
136 - release_region(FDCS->address + 2, 4);
137 - release_region(FDCS->address + 7, 1);
138 + floppy_release_regions(fdc);
139 FDCS->address = -1;
140 continue;
141 }
142 @@ -4357,6 +4358,47 @@ out_put_disk:
143
144 static DEFINE_SPINLOCK(floppy_usage_lock);
145
146 +static const struct io_region {
147 + int offset;
148 + int size;
149 +} io_regions[] = {
150 + { 2, 1 },
151 + /* address + 3 is sometimes reserved by pnp bios for motherboard */
152 + { 4, 2 },
153 + /* address + 6 is reserved, and may be taken by IDE.
154 + * Unfortunately, Adaptec doesn't know this :-(, */
155 + { 7, 1 },
156 +};
157 +
158 +static void floppy_release_allocated_regions(int fdc, const struct io_region *p)
159 +{
160 + while (p != io_regions) {
161 + p--;
162 + release_region(FDCS->address + p->offset, p->size);
163 + }
164 +}
165 +
166 +#define ARRAY_END(X) (&((X)[ARRAY_SIZE(X)]))
167 +
168 +static int floppy_request_regions(int fdc)
169 +{
170 + const struct io_region *p;
171 +
172 + for (p = io_regions; p < ARRAY_END(io_regions); p++) {
173 + if (!request_region(FDCS->address + p->offset, p->size, "floppy")) {
174 + DPRINT("Floppy io-port 0x%04lx in use\n", FDCS->address + p->offset);
175 + floppy_release_allocated_regions(fdc, p);
176 + return -EBUSY;
177 + }
178 + }
179 + return 0;
180 +}
181 +
182 +static void floppy_release_regions(int fdc)
183 +{
184 + floppy_release_allocated_regions(fdc, ARRAY_END(io_regions));
185 +}
186 +
187 static int floppy_grab_irq_and_dma(void)
188 {
189 unsigned long flags;
190 @@ -4398,18 +4440,8 @@ static int floppy_grab_irq_and_dma(void)
191
192 for (fdc = 0; fdc < N_FDC; fdc++) {
193 if (FDCS->address != -1) {
194 - if (!request_region(FDCS->address + 2, 4, "floppy")) {
195 - DPRINT("Floppy io-port 0x%04lx in use\n",
196 - FDCS->address + 2);
197 - goto cleanup1;
198 - }
199 - if (!request_region(FDCS->address + 7, 1, "floppy DIR")) {
200 - DPRINT("Floppy io-port 0x%04lx in use\n",
201 - FDCS->address + 7);
202 - goto cleanup2;
203 - }
204 - /* address + 6 is reserved, and may be taken by IDE.
205 - * Unfortunately, Adaptec doesn't know this :-(, */
206 + if (floppy_request_regions(fdc))
207 + goto cleanup;
208 }
209 }
210 for (fdc = 0; fdc < N_FDC; fdc++) {
211 @@ -4431,15 +4463,11 @@ static int floppy_grab_irq_and_dma(void)
212 fdc = 0;
213 irqdma_allocated = 1;
214 return 0;
215 -cleanup2:
216 - release_region(FDCS->address + 2, 4);
217 -cleanup1:
218 +cleanup:
219 fd_free_irq();
220 fd_free_dma();
221 - while (--fdc >= 0) {
222 - release_region(FDCS->address + 2, 4);
223 - release_region(FDCS->address + 7, 1);
224 - }
225 + while (--fdc >= 0)
226 + floppy_release_regions(fdc);
227 spin_lock_irqsave(&floppy_usage_lock, flags);
228 usage_count--;
229 spin_unlock_irqrestore(&floppy_usage_lock, flags);
230 @@ -4500,10 +4528,8 @@ static void floppy_release_irq_and_dma(void)
231 #endif
232 old_fdc = fdc;
233 for (fdc = 0; fdc < N_FDC; fdc++)
234 - if (FDCS->address != -1) {
235 - release_region(FDCS->address + 2, 4);
236 - release_region(FDCS->address + 7, 1);
237 - }
238 + if (FDCS->address != -1)
239 + floppy_release_regions(fdc);
240 fdc = old_fdc;
241 }
242
243 @@ -4572,6 +4598,13 @@ MODULE_AUTHOR("Alain L. Knaff");
244 MODULE_SUPPORTED_DEVICE("fd");
245 MODULE_LICENSE("GPL");
246
247 +/* This doesn't actually get used other than for module information */
248 +static const struct pnp_device_id floppy_pnpids[] = {
249 + { "PNP0700", 0 },
250 + { }
251 +};
252 +MODULE_DEVICE_TABLE(pnp, floppy_pnpids);
253 +
254 #else
255
256 __setup("floppy=", floppy_setup);
257 diff --git a/drivers/char/moxa.c b/drivers/char/moxa.c
258 index d3d7864..729be5e 100644
259 --- a/drivers/char/moxa.c
260 +++ b/drivers/char/moxa.c
261 @@ -1158,6 +1158,11 @@ static int moxa_open(struct tty_struct *tty, struct file *filp)
262 return -ENODEV;
263 }
264
265 + if (port % MAX_PORTS_PER_BOARD >= brd->numPorts) {
266 + retval = -ENODEV;
267 + goto out_unlock;
268 + }
269 +
270 ch = &brd->ports[port % MAX_PORTS_PER_BOARD];
271 ch->port.count++;
272 tty->driver_data = ch;
273 @@ -1182,8 +1187,8 @@ static int moxa_open(struct tty_struct *tty, struct file *filp)
274 moxa_close_port(ch);
275 } else
276 ch->port.flags |= ASYNC_NORMAL_ACTIVE;
277 +out_unlock:
278 mutex_unlock(&moxa_openlock);
279 -
280 return retval;
281 }
282
283 diff --git a/drivers/char/mxser.c b/drivers/char/mxser.c
284 index b638403..ebda9a8 100644
285 --- a/drivers/char/mxser.c
286 +++ b/drivers/char/mxser.c
287 @@ -2790,7 +2790,7 @@ static int __init mxser_module_init(void)
288 continue;
289
290 brd = &mxser_boards[m];
291 - retval = mxser_get_ISA_conf(!ioaddr[b], brd);
292 + retval = mxser_get_ISA_conf(ioaddr[b], brd);
293 if (retval <= 0) {
294 brd->info = NULL;
295 continue;
296 diff --git a/drivers/char/pcmcia/cm4000_cs.c b/drivers/char/pcmcia/cm4000_cs.c
297 index f070ae7..0b255b9 100644
298 --- a/drivers/char/pcmcia/cm4000_cs.c
299 +++ b/drivers/char/pcmcia/cm4000_cs.c
300 @@ -1575,7 +1575,8 @@ static long cmm_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
301 clear_bit(LOCK_IO, &dev->flags);
302 wake_up_interruptible(&dev->ioq);
303
304 - return 0;
305 + rc = 0;
306 + break;
307 case CM_IOCSPTS:
308 {
309 struct ptsreq krnptsreq;
310 diff --git a/drivers/firmware/memmap.c b/drivers/firmware/memmap.c
311 index 3bf8ee1..a36e9aa 100644
312 --- a/drivers/firmware/memmap.c
313 +++ b/drivers/firmware/memmap.c
314 @@ -31,8 +31,12 @@
315 * information is necessary as for the resource tree.
316 */
317 struct firmware_map_entry {
318 - resource_size_t start; /* start of the memory range */
319 - resource_size_t end; /* end of the memory range (incl.) */
320 + /*
321 + * start and end must be u64 rather than resource_size_t, because e820
322 + * resources can lie at addresses above 4G.
323 + */
324 + u64 start; /* start of the memory range */
325 + u64 end; /* end of the memory range (incl.) */
326 const char *type; /* type of the memory range */
327 struct list_head list; /* entry for the linked list */
328 struct kobject kobj; /* kobject for each entry */
329 @@ -101,7 +105,7 @@ static LIST_HEAD(map_entries);
330 * Common implementation of firmware_map_add() and firmware_map_add_early()
331 * which expects a pre-allocated struct firmware_map_entry.
332 **/
333 -static int firmware_map_add_entry(resource_size_t start, resource_size_t end,
334 +static int firmware_map_add_entry(u64 start, u64 end,
335 const char *type,
336 struct firmware_map_entry *entry)
337 {
338 @@ -132,8 +136,7 @@ static int firmware_map_add_entry(resource_size_t start, resource_size_t end,
339 *
340 * Returns 0 on success, or -ENOMEM if no memory could be allocated.
341 **/
342 -int firmware_map_add(resource_size_t start, resource_size_t end,
343 - const char *type)
344 +int firmware_map_add(u64 start, u64 end, const char *type)
345 {
346 struct firmware_map_entry *entry;
347
348 @@ -157,8 +160,7 @@ int firmware_map_add(resource_size_t start, resource_size_t end,
349 *
350 * Returns 0 on success, or -ENOMEM if no memory could be allocated.
351 **/
352 -int __init firmware_map_add_early(resource_size_t start, resource_size_t end,
353 - const char *type)
354 +int __init firmware_map_add_early(u64 start, u64 end, const char *type)
355 {
356 struct firmware_map_entry *entry;
357
358 diff --git a/drivers/infiniband/hw/mlx4/qp.c b/drivers/infiniband/hw/mlx4/qp.c
359 index 9559248..8c844a1 100644
360 --- a/drivers/infiniband/hw/mlx4/qp.c
361 +++ b/drivers/infiniband/hw/mlx4/qp.c
362 @@ -1563,12 +1563,16 @@ int mlx4_ib_post_send(struct ib_qp *ibqp, struct ib_send_wr *wr,
363 break;
364
365 case IB_WR_LOCAL_INV:
366 + ctrl->srcrb_flags |=
367 + cpu_to_be32(MLX4_WQE_CTRL_STRONG_ORDER);
368 set_local_inv_seg(wqe, wr->ex.invalidate_rkey);
369 wqe += sizeof (struct mlx4_wqe_local_inval_seg);
370 size += sizeof (struct mlx4_wqe_local_inval_seg) / 16;
371 break;
372
373 case IB_WR_FAST_REG_MR:
374 + ctrl->srcrb_flags |=
375 + cpu_to_be32(MLX4_WQE_CTRL_STRONG_ORDER);
376 set_fmr_seg(wqe, wr);
377 wqe += sizeof (struct mlx4_wqe_fmr_seg);
378 size += sizeof (struct mlx4_wqe_fmr_seg) / 16;
379 diff --git a/drivers/isdn/hisax/hfc_pci.c b/drivers/isdn/hisax/hfc_pci.c
380 index f126566..3d337d9 100644
381 --- a/drivers/isdn/hisax/hfc_pci.c
382 +++ b/drivers/isdn/hisax/hfc_pci.c
383 @@ -82,8 +82,9 @@ release_io_hfcpci(struct IsdnCardState *cs)
384 Write_hfc(cs, HFCPCI_INT_M2, cs->hw.hfcpci.int_m2);
385 pci_write_config_word(cs->hw.hfcpci.dev, PCI_COMMAND, 0); /* disable memory mapped ports + busmaster */
386 del_timer(&cs->hw.hfcpci.timer);
387 - kfree(cs->hw.hfcpci.share_start);
388 - cs->hw.hfcpci.share_start = NULL;
389 + pci_free_consistent(cs->hw.hfcpci.dev, 0x8000,
390 + cs->hw.hfcpci.fifos, cs->hw.hfcpci.dma);
391 + cs->hw.hfcpci.fifos = NULL;
392 iounmap((void *)cs->hw.hfcpci.pci_io);
393 }
394
395 @@ -1663,8 +1664,19 @@ setup_hfcpci(struct IsdnCard *card)
396 dev_hfcpci);
397 i++;
398 if (tmp_hfcpci) {
399 + dma_addr_t dma_mask = DMA_BIT_MASK(32) & ~0x7fffUL;
400 if (pci_enable_device(tmp_hfcpci))
401 continue;
402 + if (pci_set_dma_mask(tmp_hfcpci, dma_mask)) {
403 + printk(KERN_WARNING
404 + "HiSax hfc_pci: No suitable DMA available.\n");
405 + continue;
406 + }
407 + if (pci_set_consistent_dma_mask(tmp_hfcpci, dma_mask)) {
408 + printk(KERN_WARNING
409 + "HiSax hfc_pci: No suitable consistent DMA available.\n");
410 + continue;
411 + }
412 pci_set_master(tmp_hfcpci);
413 if ((card->para[0]) && (card->para[0] != (tmp_hfcpci->resource[ 0].start & PCI_BASE_ADDRESS_IO_MASK)))
414 continue;
415 @@ -1693,22 +1705,29 @@ setup_hfcpci(struct IsdnCard *card)
416 printk(KERN_WARNING "HFC-PCI: No IO-Mem for PCI card found\n");
417 return (0);
418 }
419 +
420 /* Allocate memory for FIFOS */
421 - /* Because the HFC-PCI needs a 32K physical alignment, we */
422 - /* need to allocate the double mem and align the address */
423 - if (!(cs->hw.hfcpci.share_start = kmalloc(65536, GFP_KERNEL))) {
424 - printk(KERN_WARNING "HFC-PCI: Error allocating memory for FIFO!\n");
425 + cs->hw.hfcpci.fifos = pci_alloc_consistent(cs->hw.hfcpci.dev,
426 + 0x8000, &cs->hw.hfcpci.dma);
427 + if (!cs->hw.hfcpci.fifos) {
428 + printk(KERN_WARNING "HFC-PCI: Error allocating FIFO memory!\n");
429 + return 0;
430 + }
431 + if (cs->hw.hfcpci.dma & 0x7fff) {
432 + printk(KERN_WARNING
433 + "HFC-PCI: Error DMA memory not on 32K boundary (%lx)\n",
434 + (u_long)cs->hw.hfcpci.dma);
435 + pci_free_consistent(cs->hw.hfcpci.dev, 0x8000,
436 + cs->hw.hfcpci.fifos, cs->hw.hfcpci.dma);
437 return 0;
438 }
439 - cs->hw.hfcpci.fifos = (void *)
440 - (((ulong) cs->hw.hfcpci.share_start) & ~0x7FFF) + 0x8000;
441 - pci_write_config_dword(cs->hw.hfcpci.dev, 0x80, (u_int) virt_to_bus(cs->hw.hfcpci.fifos));
442 + pci_write_config_dword(cs->hw.hfcpci.dev, 0x80, (u32)cs->hw.hfcpci.dma);
443 cs->hw.hfcpci.pci_io = ioremap((ulong) cs->hw.hfcpci.pci_io, 256);
444 printk(KERN_INFO
445 - "HFC-PCI: defined at mem %p fifo %p(%#x) IRQ %d HZ %d\n",
446 + "HFC-PCI: defined at mem %p fifo %p(%lx) IRQ %d HZ %d\n",
447 cs->hw.hfcpci.pci_io,
448 cs->hw.hfcpci.fifos,
449 - (u_int) virt_to_bus(cs->hw.hfcpci.fifos),
450 + (u_long)cs->hw.hfcpci.dma,
451 cs->irq, HZ);
452
453 spin_lock_irqsave(&cs->lock, flags);
454 diff --git a/drivers/isdn/hisax/hisax.h b/drivers/isdn/hisax/hisax.h
455 index e8d429f..f1a828b 100644
456 --- a/drivers/isdn/hisax/hisax.h
457 +++ b/drivers/isdn/hisax/hisax.h
458 @@ -694,7 +694,7 @@ struct hfcPCI_hw {
459 int nt_timer;
460 struct pci_dev *dev;
461 unsigned char *pci_io; /* start of PCI IO memory */
462 - void *share_start; /* shared memory for Fifos start */
463 + dma_addr_t dma; /* dma handle for Fifos */
464 void *fifos; /* FIFO memory */
465 int last_bfifo_cnt[2]; /* marker saving last b-fifo frame count */
466 struct timer_list timer;
467 diff --git a/drivers/md/dm-mpath.c b/drivers/md/dm-mpath.c
468 index 61f5753..7830b01 100644
469 --- a/drivers/md/dm-mpath.c
470 +++ b/drivers/md/dm-mpath.c
471 @@ -540,6 +540,12 @@ static int parse_path_selector(struct arg_set *as, struct priority_group *pg,
472 return -EINVAL;
473 }
474
475 + if (ps_argc > as->argc) {
476 + dm_put_path_selector(pst);
477 + ti->error = "not enough arguments for path selector";
478 + return -EINVAL;
479 + }
480 +
481 r = pst->create(&pg->ps, ps_argc, as->argv);
482 if (r) {
483 dm_put_path_selector(pst);
484 @@ -684,6 +690,11 @@ static int parse_hw_handler(struct arg_set *as, struct multipath *m)
485 if (!hw_argc)
486 return 0;
487
488 + if (hw_argc > as->argc) {
489 + ti->error = "not enough arguments for hardware handler";
490 + return -EINVAL;
491 + }
492 +
493 m->hw_handler_name = kstrdup(shift(as), GFP_KERNEL);
494 request_module("scsi_dh_%s", m->hw_handler_name);
495 if (scsi_dh_handler_exist(m->hw_handler_name) == 0) {
496 diff --git a/drivers/md/dm.c b/drivers/md/dm.c
497 index ace998c..925efaf 100644
498 --- a/drivers/md/dm.c
499 +++ b/drivers/md/dm.c
500 @@ -265,6 +265,10 @@ static int dm_blk_open(struct inode *inode, struct file *file)
501 goto out;
502 }
503
504 + if (test_bit(DMF_FREEING, &md->flags) ||
505 + test_bit(DMF_DELETING, &md->flags))
506 + return NULL;
507 +
508 dm_get(md);
509 atomic_inc(&md->open_count);
510
511 diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c
512 index 224de02..562ab63 100644
513 --- a/drivers/md/raid5.c
514 +++ b/drivers/md/raid5.c
515 @@ -3431,6 +3431,7 @@ static int make_request(struct request_queue *q, struct bio * bi)
516 spin_unlock_irq(&conf->device_lock);
517 if (must_retry) {
518 release_stripe(sh);
519 + schedule();
520 goto retry;
521 }
522 }
523 diff --git a/drivers/net/bonding/bond_sysfs.c b/drivers/net/bonding/bond_sysfs.c
524 index 3bdb473..f164239 100644
525 --- a/drivers/net/bonding/bond_sysfs.c
526 +++ b/drivers/net/bonding/bond_sysfs.c
527 @@ -1464,6 +1464,7 @@ int bond_create_sysfs(void)
528 printk(KERN_ERR
529 "network device named %s already exists in sysfs",
530 class_attr_bonding_masters.attr.name);
531 + ret = 0;
532 }
533
534 return ret;
535 diff --git a/drivers/net/r8169.c b/drivers/net/r8169.c
536 index a98d31a..5952522 100644
537 --- a/drivers/net/r8169.c
538 +++ b/drivers/net/r8169.c
539 @@ -65,7 +65,6 @@ static const int multicast_filter_limit = 32;
540 #define RX_DMA_BURST 6 /* Maximum PCI burst, '6' is 1024 */
541 #define TX_DMA_BURST 6 /* Maximum PCI burst, '6' is 1024 */
542 #define EarlyTxThld 0x3F /* 0x3F means NO early transmit */
543 -#define RxPacketMaxSize 0x3FE8 /* 16K - 1 - ETH_HLEN - VLAN - CRC... */
544 #define SafeMtu 0x1c20 /* ... actually life sucks beyond ~7k */
545 #define InterFrameGap 0x03 /* 3 means InterFrameGap = the shortest one */
546
547 @@ -1976,10 +1975,10 @@ static u16 rtl_rw_cpluscmd(void __iomem *ioaddr)
548 return cmd;
549 }
550
551 -static void rtl_set_rx_max_size(void __iomem *ioaddr)
552 +static void rtl_set_rx_max_size(void __iomem *ioaddr, unsigned int rx_buf_sz)
553 {
554 /* Low hurts. Let's disable the filtering. */
555 - RTL_W16(RxMaxSize, 16383);
556 + RTL_W16(RxMaxSize, rx_buf_sz);
557 }
558
559 static void rtl8169_set_magic_reg(void __iomem *ioaddr, unsigned mac_version)
560 @@ -2026,7 +2025,7 @@ static void rtl_hw_start_8169(struct net_device *dev)
561
562 RTL_W8(EarlyTxThres, EarlyTxThld);
563
564 - rtl_set_rx_max_size(ioaddr);
565 + rtl_set_rx_max_size(ioaddr, tp->rx_buf_sz);
566
567 if ((tp->mac_version == RTL_GIGA_MAC_VER_01) ||
568 (tp->mac_version == RTL_GIGA_MAC_VER_02) ||
569 @@ -2090,7 +2089,7 @@ static void rtl_hw_start_8168(struct net_device *dev)
570
571 RTL_W8(EarlyTxThres, EarlyTxThld);
572
573 - rtl_set_rx_max_size(ioaddr);
574 + rtl_set_rx_max_size(ioaddr, tp->rx_buf_sz);
575
576 rtl_set_rx_tx_config_registers(tp);
577
578 @@ -2142,7 +2141,7 @@ static void rtl_hw_start_8101(struct net_device *dev)
579
580 RTL_W8(EarlyTxThres, EarlyTxThld);
581
582 - rtl_set_rx_max_size(ioaddr);
583 + rtl_set_rx_max_size(ioaddr, tp->rx_buf_sz);
584
585 tp->cp_cmd |= rtl_rw_cpluscmd(ioaddr) | PCIMulRW;
586
587 diff --git a/drivers/parport/parport_pc.c b/drivers/parport/parport_pc.c
588 index 8a846ad..7f0c60c 100644
589 --- a/drivers/parport/parport_pc.c
590 +++ b/drivers/parport/parport_pc.c
591 @@ -1413,11 +1413,13 @@ static void __devinit decode_smsc(int efer, int key, int devid, int devrev)
592
593 static void __devinit winbond_check(int io, int key)
594 {
595 - int devid,devrev,oldid,x_devid,x_devrev,x_oldid;
596 + int origval, devid, devrev, oldid, x_devid, x_devrev, x_oldid;
597
598 if (!request_region(io, 3, __func__))
599 return;
600
601 + origval = inb(io); /* Save original value */
602 +
603 /* First probe without key */
604 outb(0x20,io);
605 x_devid=inb(io+1);
606 @@ -1437,6 +1439,8 @@ static void __devinit winbond_check(int io, int key)
607 oldid=inb(io+1);
608 outb(0xaa,io); /* Magic Seal */
609
610 + outb(origval, io); /* in case we poked some entirely different hardware */
611 +
612 if ((x_devid == devid) && (x_devrev == devrev) && (x_oldid == oldid))
613 goto out; /* protection against false positives */
614
615 @@ -1447,11 +1451,15 @@ out:
616
617 static void __devinit winbond_check2(int io,int key)
618 {
619 - int devid,devrev,oldid,x_devid,x_devrev,x_oldid;
620 + int origval[3], devid, devrev, oldid, x_devid, x_devrev, x_oldid;
621
622 if (!request_region(io, 3, __func__))
623 return;
624
625 + origval[0] = inb(io); /* Save original values */
626 + origval[1] = inb(io + 1);
627 + origval[2] = inb(io + 2);
628 +
629 /* First probe without the key */
630 outb(0x20,io+2);
631 x_devid=inb(io+2);
632 @@ -1470,6 +1478,10 @@ static void __devinit winbond_check2(int io,int key)
633 oldid=inb(io+2);
634 outb(0xaa,io); /* Magic Seal */
635
636 + outb(origval[0], io); /* in case we poked some entirely different hardware */
637 + outb(origval[1], io + 1);
638 + outb(origval[2], io + 2);
639 +
640 if ((x_devid == devid) && (x_devrev == devrev) && (x_oldid == oldid))
641 goto out; /* protection against false positives */
642
643 @@ -1480,11 +1492,13 @@ out:
644
645 static void __devinit smsc_check(int io, int key)
646 {
647 - int id,rev,oldid,oldrev,x_id,x_rev,x_oldid,x_oldrev;
648 + int origval, id, rev, oldid, oldrev, x_id, x_rev, x_oldid, x_oldrev;
649
650 if (!request_region(io, 3, __func__))
651 return;
652
653 + origval = inb(io); /* Save original value */
654 +
655 /* First probe without the key */
656 outb(0x0d,io);
657 x_oldid=inb(io+1);
658 @@ -1508,6 +1522,8 @@ static void __devinit smsc_check(int io, int key)
659 rev=inb(io+1);
660 outb(0xaa,io); /* Magic Seal */
661
662 + outb(origval, io); /* in case we poked some entirely different hardware */
663 +
664 if ((x_id == id) && (x_oldrev == oldrev) &&
665 (x_oldid == oldid) && (x_rev == rev))
666 goto out; /* protection against false positives */
667 @@ -1544,11 +1560,12 @@ static void __devinit detect_and_report_smsc (void)
668 static void __devinit detect_and_report_it87(void)
669 {
670 u16 dev;
671 - u8 r;
672 + u8 origval, r;
673 if (verbose_probing)
674 printk(KERN_DEBUG "IT8705 Super-IO detection, now testing port 2E ...\n");
675 - if (!request_region(0x2e, 1, __func__))
676 + if (!request_region(0x2e, 2, __func__))
677 return;
678 + origval = inb(0x2e); /* Save original value */
679 outb(0x87, 0x2e);
680 outb(0x01, 0x2e);
681 outb(0x55, 0x2e);
682 @@ -1568,8 +1585,10 @@ static void __devinit detect_and_report_it87(void)
683 outb(r | 8, 0x2F);
684 outb(0x02, 0x2E); /* Lock */
685 outb(0x02, 0x2F);
686 + } else {
687 + outb(origval, 0x2e); /* Oops, sorry to disturb */
688 }
689 - release_region(0x2e, 1);
690 + release_region(0x2e, 2);
691 }
692 #endif /* CONFIG_PARPORT_PC_SUPERIO */
693
694 @@ -2192,6 +2211,9 @@ struct parport *parport_pc_probe_port (unsigned long int base,
695 if (IS_ERR(pdev))
696 return NULL;
697 dev = &pdev->dev;
698 +
699 + dev->coherent_dma_mask = DMA_BIT_MASK(24);
700 + dev->dma_mask = &dev->coherent_dma_mask;
701 }
702
703 ops = kmalloc(sizeof (struct parport_operations), GFP_KERNEL);
704 diff --git a/drivers/parport/parport_serial.c b/drivers/parport/parport_serial.c
705 index 032db81..f349211 100644
706 --- a/drivers/parport/parport_serial.c
707 +++ b/drivers/parport/parport_serial.c
708 @@ -30,6 +30,7 @@ enum parport_pc_pci_cards {
709 titan_210l,
710 netmos_9xx5_combo,
711 netmos_9855,
712 + netmos_9855_2p,
713 avlab_1s1p,
714 avlab_1s2p,
715 avlab_2s1p,
716 @@ -62,7 +63,7 @@ struct parport_pc_pci {
717 struct parport_pc_pci *card, int failed);
718 };
719
720 -static int __devinit netmos_parallel_init(struct pci_dev *dev, struct parport_pc_pci *card, int autoirq, int autodma)
721 +static int __devinit netmos_parallel_init(struct pci_dev *dev, struct parport_pc_pci *par, int autoirq, int autodma)
722 {
723 /* the rule described below doesn't hold for this device */
724 if (dev->device == PCI_DEVICE_ID_NETMOS_9835 &&
725 @@ -74,9 +75,17 @@ static int __devinit netmos_parallel_init(struct pci_dev *dev, struct parport_pc
726 * and serial ports. The form is 0x00PS, where <P> is the number of
727 * parallel ports and <S> is the number of serial ports.
728 */
729 - card->numports = (dev->subsystem_device & 0xf0) >> 4;
730 - if (card->numports > ARRAY_SIZE(card->addr))
731 - card->numports = ARRAY_SIZE(card->addr);
732 + par->numports = (dev->subsystem_device & 0xf0) >> 4;
733 + if (par->numports > ARRAY_SIZE(par->addr))
734 + par->numports = ARRAY_SIZE(par->addr);
735 + /*
736 + * This function is currently only called for cards with up to
737 + * one parallel port.
738 + * Parallel port BAR is either before or after serial ports BARS;
739 + * hence, lo should be either 0 or equal to the number of serial ports.
740 + */
741 + if (par->addr[0].lo != 0)
742 + par->addr[0].lo = dev->subsystem_device & 0xf;
743 return 0;
744 }
745
746 @@ -84,7 +93,8 @@ static struct parport_pc_pci cards[] __devinitdata = {
747 /* titan_110l */ { 1, { { 3, -1 }, } },
748 /* titan_210l */ { 1, { { 3, -1 }, } },
749 /* netmos_9xx5_combo */ { 1, { { 2, -1 }, }, netmos_parallel_init },
750 - /* netmos_9855 */ { 1, { { 2, -1 }, }, netmos_parallel_init },
751 + /* netmos_9855 */ { 1, { { 0, -1 }, }, netmos_parallel_init },
752 + /* netmos_9855_2p */ { 2, { { 0, -1 }, { 2, -1 }, } },
753 /* avlab_1s1p */ { 1, { { 1, 2}, } },
754 /* avlab_1s2p */ { 2, { { 1, 2}, { 3, 4 },} },
755 /* avlab_2s1p */ { 1, { { 2, 3}, } },
756 @@ -110,6 +120,10 @@ static struct pci_device_id parport_serial_pci_tbl[] = {
757 { PCI_VENDOR_ID_NETMOS, PCI_DEVICE_ID_NETMOS_9845,
758 PCI_ANY_ID, PCI_ANY_ID, 0, 0, netmos_9xx5_combo },
759 { PCI_VENDOR_ID_NETMOS, PCI_DEVICE_ID_NETMOS_9855,
760 + 0x1000, 0x0020, 0, 0, netmos_9855_2p },
761 + { PCI_VENDOR_ID_NETMOS, PCI_DEVICE_ID_NETMOS_9855,
762 + 0x1000, 0x0022, 0, 0, netmos_9855_2p },
763 + { PCI_VENDOR_ID_NETMOS, PCI_DEVICE_ID_NETMOS_9855,
764 PCI_ANY_ID, PCI_ANY_ID, 0, 0, netmos_9855 },
765 /* PCI_VENDOR_ID_AVLAB/Intek21 has another bunch of cards ...*/
766 { PCI_VENDOR_ID_AFAVLAB, 0x2110,
767 @@ -192,6 +206,12 @@ static struct pciserial_board pci_parport_serial_boards[] __devinitdata = {
768 .uart_offset = 8,
769 },
770 [netmos_9855] = {
771 + .flags = FL_BASE2 | FL_BASE_BARS,
772 + .num_ports = 1,
773 + .base_baud = 115200,
774 + .uart_offset = 8,
775 + },
776 + [netmos_9855_2p] = {
777 .flags = FL_BASE4 | FL_BASE_BARS,
778 .num_ports = 1,
779 .base_baud = 115200,
780 diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
781 index 409e00e..33cc148 100644
782 --- a/drivers/pci/pci.c
783 +++ b/drivers/pci/pci.c
784 @@ -473,6 +473,8 @@ pci_raw_set_power_state(struct pci_dev *dev, pci_power_t state)
785 pmcsr &= ~PCI_PM_CTRL_STATE_MASK;
786 pmcsr |= state;
787 break;
788 + case PCI_D3hot:
789 + case PCI_D3cold:
790 case PCI_UNKNOWN: /* Boot-up */
791 if ((pmcsr & PCI_PM_CTRL_STATE_MASK) == PCI_D3hot
792 && !(pmcsr & PCI_PM_CTRL_NO_SOFT_RESET))
793 @@ -1184,15 +1186,14 @@ pci_power_t pci_target_state(struct pci_dev *dev)
794 default:
795 target_state = state;
796 }
797 + } else if (!dev->pm_cap) {
798 + target_state = PCI_D0;
799 } else if (device_may_wakeup(&dev->dev)) {
800 /*
801 * Find the deepest state from which the device can generate
802 * wake-up events, make it the target state and enable device
803 * to generate PME#.
804 */
805 - if (!dev->pm_cap)
806 - return PCI_POWER_ERROR;
807 -
808 if (dev->pme_support) {
809 while (target_state
810 && !(dev->pme_support & (1 << target_state)))
811 diff --git a/drivers/pci/pcie/aspm.c b/drivers/pci/pcie/aspm.c
812 index e4df84b..def3398 100644
813 --- a/drivers/pci/pcie/aspm.c
814 +++ b/drivers/pci/pcie/aspm.c
815 @@ -633,6 +633,10 @@ void pcie_aspm_init_link_state(struct pci_dev *pdev)
816 if (pdev->pcie_type != PCI_EXP_TYPE_ROOT_PORT &&
817 pdev->pcie_type != PCI_EXP_TYPE_DOWNSTREAM)
818 return;
819 + /* VIA has a strange chipset, root port is under a bridge */
820 + if (pdev->pcie_type == PCI_EXP_TYPE_ROOT_PORT &&
821 + pdev->bus->self)
822 + return;
823 down_read(&pci_bus_sem);
824 if (list_empty(&pdev->subordinate->devices))
825 goto out;
826 diff --git a/drivers/video/atmel_lcdfb.c b/drivers/video/atmel_lcdfb.c
827 index 75dac57..3105bdc 100644
828 --- a/drivers/video/atmel_lcdfb.c
829 +++ b/drivers/video/atmel_lcdfb.c
830 @@ -29,14 +29,8 @@
831
832 /* configurable parameters */
833 #define ATMEL_LCDC_CVAL_DEFAULT 0xc8
834 -#define ATMEL_LCDC_DMA_BURST_LEN 8
835 -
836 -#if defined(CONFIG_ARCH_AT91SAM9263) || defined(CONFIG_ARCH_AT91CAP9) || \
837 - defined(CONFIG_ARCH_AT91SAM9RL)
838 -#define ATMEL_LCDC_FIFO_SIZE 2048
839 -#else
840 -#define ATMEL_LCDC_FIFO_SIZE 512
841 -#endif
842 +#define ATMEL_LCDC_DMA_BURST_LEN 8 /* words */
843 +#define ATMEL_LCDC_FIFO_SIZE 512 /* words */
844
845 #if defined(CONFIG_ARCH_AT91)
846 #define ATMEL_LCDFB_FBINFO_DEFAULT (FBINFO_DEFAULT \
847 diff --git a/fs/jbd/commit.c b/fs/jbd/commit.c
848 index ae08c05..558088d 100644
849 --- a/fs/jbd/commit.c
850 +++ b/fs/jbd/commit.c
851 @@ -238,7 +238,7 @@ write_out_data:
852 spin_lock(&journal->j_list_lock);
853 }
854 /* Someone already cleaned up the buffer? */
855 - if (!buffer_jbd(bh)
856 + if (!buffer_jbd(bh) || bh2jh(bh) != jh
857 || jh->b_transaction != commit_transaction
858 || jh->b_jlist != BJ_SyncData) {
859 jbd_unlock_bh_state(bh);
860 @@ -463,7 +463,9 @@ void journal_commit_transaction(journal_t *journal)
861 spin_lock(&journal->j_list_lock);
862 continue;
863 }
864 - if (buffer_jbd(bh) && jh->b_jlist == BJ_Locked) {
865 + if (buffer_jbd(bh) && bh2jh(bh) == jh &&
866 + jh->b_transaction == commit_transaction &&
867 + jh->b_jlist == BJ_Locked) {
868 __journal_unfile_buffer(jh);
869 jbd_unlock_bh_state(bh);
870 journal_remove_journal_head(bh);
871 diff --git a/include/linux/firmware-map.h b/include/linux/firmware-map.h
872 index 6e199c8..67e88a6 100644
873 --- a/include/linux/firmware-map.h
874 +++ b/include/linux/firmware-map.h
875 @@ -24,21 +24,17 @@
876 */
877 #ifdef CONFIG_FIRMWARE_MEMMAP
878
879 -int firmware_map_add(resource_size_t start, resource_size_t end,
880 - const char *type);
881 -int firmware_map_add_early(resource_size_t start, resource_size_t end,
882 - const char *type);
883 +int firmware_map_add(u64 start, u64 end, const char *type);
884 +int firmware_map_add_early(u64 start, u64 end, const char *type);
885
886 #else /* CONFIG_FIRMWARE_MEMMAP */
887
888 -static inline int firmware_map_add(resource_size_t start, resource_size_t end,
889 - const char *type)
890 +static inline int firmware_map_add(u64 start, u64 end, const char *type)
891 {
892 return 0;
893 }
894
895 -static inline int firmware_map_add_early(resource_size_t start,
896 - resource_size_t end, const char *type)
897 +static inline int firmware_map_add_early(u64 start, u64 end, const char *type)
898 {
899 return 0;
900 }
901 diff --git a/include/linux/mlx4/qp.h b/include/linux/mlx4/qp.h
902 index bf8f119..9f29d86 100644
903 --- a/include/linux/mlx4/qp.h
904 +++ b/include/linux/mlx4/qp.h
905 @@ -165,6 +165,7 @@ enum {
906 MLX4_WQE_CTRL_IP_CSUM = 1 << 4,
907 MLX4_WQE_CTRL_TCP_UDP_CSUM = 1 << 5,
908 MLX4_WQE_CTRL_INS_VLAN = 1 << 6,
909 + MLX4_WQE_CTRL_STRONG_ORDER = 1 << 7,
910 };
911
912 struct mlx4_wqe_ctrl_seg {
913 diff --git a/kernel/acct.c b/kernel/acct.c
914 index a272f53..2dac228 100644
915 --- a/kernel/acct.c
916 +++ b/kernel/acct.c
917 @@ -215,6 +215,7 @@ static void acct_file_reopen(struct bsd_acct_struct *acct, struct file *file,
918 static int acct_on(char *name)
919 {
920 struct file *file;
921 + struct vfsmount *mnt;
922 int error;
923 struct pid_namespace *ns;
924 struct bsd_acct_struct *acct = NULL;
925 @@ -256,11 +257,12 @@ static int acct_on(char *name)
926 acct = NULL;
927 }
928
929 - mnt_pin(file->f_path.mnt);
930 + mnt = file->f_path.mnt;
931 + mnt_pin(mnt);
932 acct_file_reopen(ns->bacct, file, ns);
933 spin_unlock(&acct_lock);
934
935 - mntput(file->f_path.mnt); /* it's pinned, now give up active reference */
936 + mntput(mnt); /* it's pinned, now give up active reference */
937 kfree(acct);
938
939 return 0;
940 diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug
941 index 0b50481..d3dce7c 100644
942 --- a/lib/Kconfig.debug
943 +++ b/lib/Kconfig.debug
944 @@ -394,7 +394,7 @@ config LOCKDEP
945 bool
946 depends on DEBUG_KERNEL && TRACE_IRQFLAGS_SUPPORT && STACKTRACE_SUPPORT && LOCKDEP_SUPPORT
947 select STACKTRACE
948 - select FRAME_POINTER if !X86 && !MIPS && !PPC
949 + select FRAME_POINTER if !MIPS && !PPC
950 select KALLSYMS
951 select KALLSYMS_ALL
952
953 diff --git a/mm/page_alloc.c b/mm/page_alloc.c
954 index 4205f7f..85799e8 100644
955 --- a/mm/page_alloc.c
956 +++ b/mm/page_alloc.c
957 @@ -2764,7 +2764,7 @@ bad:
958 if (dzone == zone)
959 break;
960 kfree(zone_pcp(dzone, cpu));
961 - zone_pcp(dzone, cpu) = NULL;
962 + zone_pcp(dzone, cpu) = &boot_pageset[cpu];
963 }
964 return -ENOMEM;
965 }
966 @@ -2779,7 +2779,7 @@ static inline void free_zone_pagesets(int cpu)
967 /* Free per_cpu_pageset if it is slab allocated */
968 if (pset != &boot_pageset[cpu])
969 kfree(pset);
970 - zone_pcp(zone, cpu) = NULL;
971 + zone_pcp(zone, cpu) = &boot_pageset[cpu];
972 }
973 }
974
975 @@ -4409,6 +4409,8 @@ int percpu_pagelist_fraction_sysctl_handler(ctl_table *table, int write,
976 if (!write || (ret == -EINVAL))
977 return ret;
978 for_each_zone(zone) {
979 + if (!populated_zone(zone))
980 + continue;
981 for_each_online_cpu(cpu) {
982 unsigned long high;
983 high = zone->present_pages / percpu_pagelist_fraction;
984 diff --git a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c
985 index 011478e..0b3c404 100644
986 --- a/net/ipv4/tcp_ipv4.c
987 +++ b/net/ipv4/tcp_ipv4.c
988 @@ -1364,6 +1364,10 @@ struct sock *tcp_v4_syn_recv_sock(struct sock *sk, struct sk_buff *skb,
989 tcp_mtup_init(newsk);
990 tcp_sync_mss(newsk, dst_mtu(dst));
991 newtp->advmss = dst_metric(dst, RTAX_ADVMSS);
992 + if (tcp_sk(sk)->rx_opt.user_mss &&
993 + tcp_sk(sk)->rx_opt.user_mss < newtp->advmss)
994 + newtp->advmss = tcp_sk(sk)->rx_opt.user_mss;
995 +
996 tcp_initialize_rcv_mss(newsk);
997
998 #ifdef CONFIG_TCP_MD5SIG
999 diff --git a/net/ipv4/tcp_output.c b/net/ipv4/tcp_output.c
1000 index d083f9a..c89cd75 100644
1001 --- a/net/ipv4/tcp_output.c
1002 +++ b/net/ipv4/tcp_output.c
1003 @@ -2252,6 +2252,7 @@ struct sk_buff *tcp_make_synack(struct sock *sk, struct dst_entry *dst,
1004 struct sk_buff *skb;
1005 struct tcp_md5sig_key *md5;
1006 __u8 *md5_hash_location;
1007 + int mss;
1008
1009 skb = sock_wmalloc(sk, MAX_TCP_HEADER + 15, 1, GFP_ATOMIC);
1010 if (skb == NULL)
1011 @@ -2262,13 +2263,17 @@ struct sk_buff *tcp_make_synack(struct sock *sk, struct dst_entry *dst,
1012
1013 skb->dst = dst_clone(dst);
1014
1015 + mss = dst_metric(dst, RTAX_ADVMSS);
1016 + if (tp->rx_opt.user_mss && tp->rx_opt.user_mss < mss)
1017 + mss = tp->rx_opt.user_mss;
1018 +
1019 if (req->rcv_wnd == 0) { /* ignored for retransmitted syns */
1020 __u8 rcv_wscale;
1021 /* Set this up on the first call only */
1022 req->window_clamp = tp->window_clamp ? : dst_metric(dst, RTAX_WINDOW);
1023 /* tcp_full_space because it is guaranteed to be the first packet */
1024 tcp_select_initial_window(tcp_full_space(sk),
1025 - dst_metric(dst, RTAX_ADVMSS) - (ireq->tstamp_ok ? TCPOLEN_TSTAMP_ALIGNED : 0),
1026 + mss - (ireq->tstamp_ok ? TCPOLEN_TSTAMP_ALIGNED : 0),
1027 &req->rcv_wnd,
1028 &req->window_clamp,
1029 ireq->wscale_ok,
1030 @@ -2283,8 +2288,7 @@ struct sk_buff *tcp_make_synack(struct sock *sk, struct dst_entry *dst,
1031 else
1032 #endif
1033 TCP_SKB_CB(skb)->when = tcp_time_stamp;
1034 - tcp_header_size = tcp_synack_options(sk, req,
1035 - dst_metric(dst, RTAX_ADVMSS),
1036 + tcp_header_size = tcp_synack_options(sk, req, mss,
1037 skb, &opts, &md5) +
1038 sizeof(struct tcphdr);
1039
1040 @@ -2353,6 +2357,9 @@ static void tcp_connect_init(struct sock *sk)
1041 if (!tp->window_clamp)
1042 tp->window_clamp = dst_metric(dst, RTAX_WINDOW);
1043 tp->advmss = dst_metric(dst, RTAX_ADVMSS);
1044 + if (tp->rx_opt.user_mss && tp->rx_opt.user_mss < tp->advmss)
1045 + tp->advmss = tp->rx_opt.user_mss;
1046 +
1047 tcp_initialize_rcv_mss(sk);
1048
1049 tcp_select_initial_window(tcp_full_space(sk),
1050 diff --git a/scripts/unifdef.c b/scripts/unifdef.c
1051 index 552025e..05a31a6 100644
1052 --- a/scripts/unifdef.c
1053 +++ b/scripts/unifdef.c
1054 @@ -206,7 +206,7 @@ static void done(void);
1055 static void error(const char *);
1056 static int findsym(const char *);
1057 static void flushline(bool);
1058 -static Linetype getline(void);
1059 +static Linetype get_line(void);
1060 static Linetype ifeval(const char **);
1061 static void ignoreoff(void);
1062 static void ignoreon(void);
1063 @@ -512,7 +512,7 @@ process(void)
1064
1065 for (;;) {
1066 linenum++;
1067 - lineval = getline();
1068 + lineval = get_line();
1069 trans_table[ifstate[depth]][lineval]();
1070 debug("process %s -> %s depth %d",
1071 linetype_name[lineval],
1072 @@ -526,7 +526,7 @@ process(void)
1073 * help from skipcomment().
1074 */
1075 static Linetype
1076 -getline(void)
1077 +get_line(void)
1078 {
1079 const char *cp;
1080 int cursym;
1081 diff --git a/sound/core/seq/seq_midi_event.c b/sound/core/seq/seq_midi_event.c
1082 index 8284f17..b5d6ea4 100644
1083 --- a/sound/core/seq/seq_midi_event.c
1084 +++ b/sound/core/seq/seq_midi_event.c
1085 @@ -504,10 +504,10 @@ static int extra_decode_xrpn(struct snd_midi_event *dev, unsigned char *buf,
1086 if (dev->nostat && count < 12)
1087 return -ENOMEM;
1088 cmd = MIDI_CMD_CONTROL|(ev->data.control.channel & 0x0f);
1089 - bytes[0] = ev->data.control.param & 0x007f;
1090 - bytes[1] = (ev->data.control.param & 0x3f80) >> 7;
1091 - bytes[2] = ev->data.control.value & 0x007f;
1092 - bytes[3] = (ev->data.control.value & 0x3f80) >> 7;
1093 + bytes[0] = (ev->data.control.param & 0x3f80) >> 7;
1094 + bytes[1] = ev->data.control.param & 0x007f;
1095 + bytes[2] = (ev->data.control.value & 0x3f80) >> 7;
1096 + bytes[3] = ev->data.control.value & 0x007f;
1097 if (cmd != dev->lastcmd && !dev->nostat) {
1098 if (count < 9)
1099 return -ENOMEM;
1100 diff --git a/sound/pci/ca0106/ca0106_mixer.c b/sound/pci/ca0106/ca0106_mixer.c
1101 index 3025ed1..c0f4718 100644
1102 --- a/sound/pci/ca0106/ca0106_mixer.c
1103 +++ b/sound/pci/ca0106/ca0106_mixer.c
1104 @@ -761,6 +761,9 @@ int __devinit snd_ca0106_mixer(struct snd_ca0106 *emu)
1105 snd_ca0106_master_db_scale);
1106 if (!vmaster)
1107 return -ENOMEM;
1108 + err = snd_ctl_add(card, vmaster);
1109 + if (err < 0)
1110 + return err;
1111 add_slaves(card, vmaster, slave_vols);
1112
1113 if (emu->details->spi_dac == 1) {
1114 @@ -768,6 +771,9 @@ int __devinit snd_ca0106_mixer(struct snd_ca0106 *emu)
1115 NULL);
1116 if (!vmaster)
1117 return -ENOMEM;
1118 + err = snd_ctl_add(card, vmaster);
1119 + if (err < 0)
1120 + return err;
1121 add_slaves(card, vmaster, slave_sws);
1122 }
1123 return 0;