Magellan Linux

Annotation of /trunk/kernel26-alx/patches-2.6.27-r3/0138-2.6.27.39-all-fixes.patch

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1176 - (hide annotations) (download)
Thu Oct 14 15:11:06 2010 UTC (13 years, 7 months ago) by niro
File size: 27741 byte(s)
-2.6.27-alx-r3: new magellan 0.5.2 kernel
1 niro 1176 diff --git a/arch/m68k/Kconfig b/arch/m68k/Kconfig
2     index 8c5e1de..5b1ccc2 100644
3     --- a/arch/m68k/Kconfig
4     +++ b/arch/m68k/Kconfig
5     @@ -572,7 +572,7 @@ config HPAPCI
6    
7     config MVME147_SCC
8     bool "SCC support for MVME147 serial ports"
9     - depends on MVME147
10     + depends on MVME147 && BROKEN
11     help
12     This is the driver for the serial ports on the Motorola MVME147
13     boards. Everyone using one of these boards should say Y here.
14     @@ -587,14 +587,14 @@ config SERIAL167
15    
16     config MVME162_SCC
17     bool "SCC support for MVME162 serial ports"
18     - depends on MVME16x
19     + depends on MVME16x && BROKEN
20     help
21     This is the driver for the serial ports on the Motorola MVME162 and
22     172 boards. Everyone using one of these boards should say Y here.
23    
24     config BVME6000_SCC
25     bool "SCC support for BVME6000 serial ports"
26     - depends on BVME6000
27     + depends on BVME6000 && BROKEN
28     help
29     This is the driver for the serial ports on the BVME4000 and BVME6000
30     boards from BVM Ltd. Everyone using one of these boards should say
31     diff --git a/arch/x86/ia32/ia32entry.S b/arch/x86/ia32/ia32entry.S
32     index 09b59b2..5d7f4af 100644
33     --- a/arch/x86/ia32/ia32entry.S
34     +++ b/arch/x86/ia32/ia32entry.S
35     @@ -204,7 +204,7 @@ sysexit_from_sys_call:
36     movl RDI-ARGOFFSET(%rsp),%r8d /* reload 5th syscall arg */
37     .endm
38    
39     - .macro auditsys_exit exit,ebpsave=RBP
40     + .macro auditsys_exit exit
41     testl $(_TIF_ALLWORK_MASK & ~_TIF_SYSCALL_AUDIT),TI_flags(%r10)
42     jnz ia32_ret_from_sys_call
43     TRACE_IRQS_ON
44     @@ -217,7 +217,6 @@ sysexit_from_sys_call:
45     call audit_syscall_exit
46     GET_THREAD_INFO(%r10)
47     movl RAX-ARGOFFSET(%rsp),%eax /* reload syscall return value */
48     - movl \ebpsave-ARGOFFSET(%rsp),%ebp /* reload user register value */
49     movl $(_TIF_ALLWORK_MASK & ~_TIF_SYSCALL_AUDIT),%edi
50     cli
51     TRACE_IRQS_OFF
52     @@ -351,7 +350,7 @@ cstar_auditsys:
53     jmp cstar_dispatch
54    
55     sysretl_audit:
56     - auditsys_exit sysretl_from_sys_call, RCX /* user %ebp in RCX slot */
57     + auditsys_exit sysretl_from_sys_call
58     #endif
59    
60     cstar_tracesys:
61     diff --git a/arch/x86/kernel/amd_iommu_init.c b/arch/x86/kernel/amd_iommu_init.c
62     index 923e682..7d58f32 100644
63     --- a/arch/x86/kernel/amd_iommu_init.c
64     +++ b/arch/x86/kernel/amd_iommu_init.c
65     @@ -230,7 +230,7 @@ static void __init iommu_feature_enable(struct amd_iommu *iommu, u8 bit)
66     writel(ctrl, iommu->mmio_base + MMIO_CONTROL_OFFSET);
67     }
68    
69     -static void __init iommu_feature_disable(struct amd_iommu *iommu, u8 bit)
70     +static void iommu_feature_disable(struct amd_iommu *iommu, u8 bit)
71     {
72     u32 ctrl;
73    
74     @@ -430,6 +430,27 @@ static void set_dev_entry_bit(u16 devid, u8 bit)
75     amd_iommu_dev_table[devid].data[i] |= (1 << _bit);
76     }
77    
78     +static int get_dev_entry_bit(u16 devid, u8 bit)
79     +{
80     + int i = (bit >> 5) & 0x07;
81     + int _bit = bit & 0x1f;
82     +
83     + return (amd_iommu_dev_table[devid].data[i] & (1 << _bit)) >> _bit;
84     +}
85     +
86     +
87     +void amd_iommu_apply_erratum_63(u16 devid)
88     +{
89     + int sysmgt;
90     +
91     + sysmgt = get_dev_entry_bit(devid, DEV_ENTRY_SYSMGT1) |
92     + (get_dev_entry_bit(devid, DEV_ENTRY_SYSMGT2) << 1);
93     +
94     + if (sysmgt == 0x01)
95     + set_dev_entry_bit(devid, DEV_ENTRY_IW);
96     +}
97     +
98     +
99     /* Writes the specific IOMMU for a device into the rlookup table */
100     static void __init set_iommu_for_device(struct amd_iommu *iommu, u16 devid)
101     {
102     @@ -458,6 +479,8 @@ static void __init set_dev_entry_from_acpi(struct amd_iommu *iommu,
103     if (flags & ACPI_DEVFLAG_LINT1)
104     set_dev_entry_bit(devid, DEV_ENTRY_LINT1_PASS);
105    
106     + amd_iommu_apply_erratum_63(devid);
107     +
108     set_iommu_for_device(iommu, devid);
109     }
110    
111     diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
112     index 60ebfd7..bf872f2 100644
113     --- a/arch/x86/kvm/x86.c
114     +++ b/arch/x86/kvm/x86.c
115     @@ -1223,6 +1223,8 @@ static int kvm_dev_ioctl_get_supported_cpuid(struct kvm_cpuid2 *cpuid,
116    
117     if (cpuid->nent < 1)
118     goto out;
119     + if (cpuid->nent > KVM_MAX_CPUID_ENTRIES)
120     + cpuid->nent = KVM_MAX_CPUID_ENTRIES;
121     r = -ENOMEM;
122     cpuid_entries = vmalloc(sizeof(struct kvm_cpuid_entry2) * cpuid->nent);
123     if (!cpuid_entries)
124     diff --git a/drivers/acpi/scan.c b/drivers/acpi/scan.c
125     index afa66f4..0450761 100644
126     --- a/drivers/acpi/scan.c
127     +++ b/drivers/acpi/scan.c
128     @@ -1262,16 +1262,6 @@ acpi_add_single_object(struct acpi_device **child,
129     acpi_device_set_id(device, parent, handle, type);
130    
131     /*
132     - * The ACPI device is attached to acpi handle before getting
133     - * the power/wakeup/peformance flags. Otherwise OS can't get
134     - * the corresponding ACPI device by the acpi handle in the course
135     - * of getting the power/wakeup/performance flags.
136     - */
137     - result = acpi_device_set_context(device, type);
138     - if (result)
139     - goto end;
140     -
141     - /*
142     * Power Management
143     * ----------------
144     */
145     @@ -1301,6 +1291,8 @@ acpi_add_single_object(struct acpi_device **child,
146     goto end;
147     }
148    
149     + if ((result = acpi_device_set_context(device, type)))
150     + goto end;
151    
152     result = acpi_device_register(device, parent);
153    
154     diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
155     index 5cdd821..8afc274 100644
156     --- a/drivers/ata/libata-core.c
157     +++ b/drivers/ata/libata-core.c
158     @@ -4747,12 +4747,14 @@ void ata_qc_complete(struct ata_queued_cmd *qc)
159     qc->flags |= ATA_QCFLAG_FAILED;
160    
161     if (unlikely(qc->flags & ATA_QCFLAG_FAILED)) {
162     - if (!ata_tag_internal(qc->tag)) {
163     - /* always fill result TF for failed qc */
164     - fill_result_tf(qc);
165     + /* always fill result TF for failed qc */
166     + fill_result_tf(qc);
167     +
168     + if (!ata_tag_internal(qc->tag))
169     ata_qc_schedule_eh(qc);
170     - return;
171     - }
172     + else
173     + __ata_qc_complete(qc);
174     + return;
175     }
176    
177     /* read result TF if requested */
178     diff --git a/drivers/base/driver.c b/drivers/base/driver.c
179     index 1e2bda7..296d833 100644
180     --- a/drivers/base/driver.c
181     +++ b/drivers/base/driver.c
182     @@ -227,7 +227,7 @@ int driver_register(struct device_driver *drv)
183     put_driver(other);
184     printk(KERN_ERR "Error: Driver '%s' is already registered, "
185     "aborting...\n", drv->name);
186     - return -EEXIST;
187     + return -EBUSY;
188     }
189    
190     ret = bus_add_driver(drv);
191     diff --git a/drivers/char/Kconfig b/drivers/char/Kconfig
192     index caff851..8b91700 100644
193     --- a/drivers/char/Kconfig
194     +++ b/drivers/char/Kconfig
195     @@ -310,7 +310,7 @@ config SPECIALIX
196    
197     config SX
198     tristate "Specialix SX (and SI) card support"
199     - depends on SERIAL_NONSTANDARD && (PCI || EISA || ISA)
200     + depends on SERIAL_NONSTANDARD && (PCI || EISA || ISA) && BROKEN
201     help
202     This is a driver for the SX and SI multiport serial cards.
203     Please read the file <file:Documentation/sx.txt> for details.
204     @@ -321,7 +321,7 @@ config SX
205    
206     config RIO
207     tristate "Specialix RIO system support"
208     - depends on SERIAL_NONSTANDARD
209     + depends on SERIAL_NONSTANDARD && BROKEN
210     help
211     This is a driver for the Specialix RIO, a smart serial card which
212     drives an outboard box that can support up to 128 ports. Product
213     @@ -382,7 +382,7 @@ config NOZOMI
214    
215     config A2232
216     tristate "Commodore A2232 serial support (EXPERIMENTAL)"
217     - depends on EXPERIMENTAL && ZORRO && BROKEN_ON_SMP
218     + depends on EXPERIMENTAL && ZORRO && BROKEN
219     ---help---
220     This option supports the 2232 7-port serial card shipped with the
221     Amiga 2000 and other Zorro-bus machines, dating from 1989. At
222     diff --git a/drivers/input/mouse/synaptics.c b/drivers/input/mouse/synaptics.c
223     index d349c4a..6bb5157 100644
224     --- a/drivers/input/mouse/synaptics.c
225     +++ b/drivers/input/mouse/synaptics.c
226     @@ -623,6 +623,16 @@ static const struct dmi_system_id toshiba_dmi_table[] = {
227     DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"),
228     DMI_MATCH(DMI_PRODUCT_NAME, "PORTEGE M300"),
229     },
230     +
231     + },
232     + {
233     + .ident = "Toshiba Portege M300",
234     + .matches = {
235     + DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"),
236     + DMI_MATCH(DMI_PRODUCT_NAME, "Portable PC"),
237     + DMI_MATCH(DMI_PRODUCT_VERSION, "Version 1.0"),
238     + },
239     +
240     },
241     { }
242     };
243     diff --git a/drivers/net/appletalk/ipddp.c b/drivers/net/appletalk/ipddp.c
244     index 1071144..6d0107c 100644
245     --- a/drivers/net/appletalk/ipddp.c
246     +++ b/drivers/net/appletalk/ipddp.c
247     @@ -173,8 +173,7 @@ static int ipddp_xmit(struct sk_buff *skb, struct net_device *dev)
248     ((struct net_device_stats *) dev->priv)->tx_packets++;
249     ((struct net_device_stats *) dev->priv)->tx_bytes+=skb->len;
250    
251     - if(aarp_send_ddp(rt->dev, skb, &rt->at, NULL) < 0)
252     - dev_kfree_skb(skb);
253     + aarp_send_ddp(rt->dev, skb, &rt->at, NULL);
254    
255     return 0;
256     }
257     diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c
258     index f9f29c9..5a07b50 100644
259     --- a/drivers/net/bonding/bond_main.c
260     +++ b/drivers/net/bonding/bond_main.c
261     @@ -686,7 +686,7 @@ static int bond_update_speed_duplex(struct slave *slave)
262     */
263     static int bond_check_dev_link(struct bonding *bond, struct net_device *slave_dev, int reporting)
264     {
265     - static int (* ioctl)(struct net_device *, struct ifreq *, int);
266     + int (* ioctl)(struct net_device *, struct ifreq *, int);
267     struct ifreq ifr;
268     struct mii_ioctl_data *mii;
269    
270     diff --git a/drivers/net/wireless/b43/rfkill.c b/drivers/net/wireless/b43/rfkill.c
271     index 34ae125..f9c355e 100644
272     --- a/drivers/net/wireless/b43/rfkill.c
273     +++ b/drivers/net/wireless/b43/rfkill.c
274     @@ -36,7 +36,8 @@ static bool b43_is_hw_radio_enabled(struct b43_wldev *dev)
275     & B43_MMIO_RADIO_HWENABLED_HI_MASK))
276     return 1;
277     } else {
278     - if (b43_read16(dev, B43_MMIO_RADIO_HWENABLED_LO)
279     + if (b43_status(dev) >= B43_STAT_STARTED &&
280     + b43_read16(dev, B43_MMIO_RADIO_HWENABLED_LO)
281     & B43_MMIO_RADIO_HWENABLED_LO_MASK)
282     return 1;
283     }
284     diff --git a/drivers/net/wireless/libertas/if_usb.c b/drivers/net/wireless/libertas/if_usb.c
285     index 632c291..5e37c2f 100644
286     --- a/drivers/net/wireless/libertas/if_usb.c
287     +++ b/drivers/net/wireless/libertas/if_usb.c
288     @@ -443,7 +443,7 @@ static int __if_usb_submit_rx_urb(struct if_usb_card *cardp,
289     /* Fill the receive configuration URB and initialise the Rx call back */
290     usb_fill_bulk_urb(cardp->rx_urb, cardp->udev,
291     usb_rcvbulkpipe(cardp->udev, cardp->ep_in),
292     - (void *) (skb->tail + (size_t) IPFIELD_ALIGN_OFFSET),
293     + skb->data + IPFIELD_ALIGN_OFFSET,
294     MRVDRV_ETH_RX_PACKET_BUFFER_SIZE, callbackfn,
295     cardp);
296    
297     diff --git a/drivers/net/wireless/ray_cs.c b/drivers/net/wireless/ray_cs.c
298     index 963960d..eef4e86 100644
299     --- a/drivers/net/wireless/ray_cs.c
300     +++ b/drivers/net/wireless/ray_cs.c
301     @@ -2758,7 +2758,7 @@ static void raycs_write(const char *name, write_proc_t *w, void *data)
302     static int write_essid(struct file *file, const char __user *buffer, unsigned long count, void *data)
303     {
304     static char proc_essid[33];
305     - int len = count;
306     + unsigned int len = count;
307    
308     if (len > 32)
309     len = 32;
310     diff --git a/drivers/scsi/dpt_i2o.c b/drivers/scsi/dpt_i2o.c
311     index 7716145..b38fe67 100644
312     --- a/drivers/scsi/dpt_i2o.c
313     +++ b/drivers/scsi/dpt_i2o.c
314     @@ -1918,6 +1918,10 @@ static int adpt_i2o_passthru(adpt_hba* pHba, u32 __user *arg)
315     }
316     size = size>>16;
317     size *= 4;
318     + if (size > MAX_MESSAGE_SIZE) {
319     + rcode = -EINVAL;
320     + goto cleanup;
321     + }
322     /* Copy in the user's I2O command */
323     if (copy_from_user (msg, user_msg, size)) {
324     rcode = -EFAULT;
325     diff --git a/drivers/serial/8250_pci.c b/drivers/serial/8250_pci.c
326     index 9f72ad7..3a56f92 100644
327     --- a/drivers/serial/8250_pci.c
328     +++ b/drivers/serial/8250_pci.c
329     @@ -1218,6 +1218,7 @@ enum pci_board_num_t {
330     pbn_exar_XR17C152,
331     pbn_exar_XR17C154,
332     pbn_exar_XR17C158,
333     + pbn_exar_ibm_saturn,
334     pbn_pasemi_1682M,
335     };
336    
337     @@ -1746,6 +1747,13 @@ static struct pciserial_board pci_boards[] __devinitdata = {
338     .base_baud = 921600,
339     .uart_offset = 0x200,
340     },
341     + [pbn_exar_ibm_saturn] = {
342     + .flags = FL_BASE0,
343     + .num_ports = 1,
344     + .base_baud = 921600,
345     + .uart_offset = 0x200,
346     + },
347     +
348     /*
349     * PA Semi PWRficient PA6T-1682M on-chip UART
350     */
351     @@ -2217,6 +2225,9 @@ static struct pci_device_id serial_pci_tbl[] = {
352     PCI_SUBVENDOR_ID_CONNECT_TECH,
353     PCI_SUBDEVICE_ID_CONNECT_TECH_PCI_UART_8_485, 0, 0,
354     pbn_b0_8_1843200_200 },
355     + { PCI_VENDOR_ID_EXAR, PCI_DEVICE_ID_EXAR_XR17C152,
356     + PCI_VENDOR_ID_IBM, PCI_SUBDEVICE_ID_IBM_SATURN_SERIAL_ONE_PORT,
357     + 0, 0, pbn_exar_ibm_saturn },
358    
359     { PCI_VENDOR_ID_SEALEVEL, PCI_DEVICE_ID_SEALEVEL_U530,
360     PCI_ANY_ID, PCI_ANY_ID, 0, 0,
361     diff --git a/fs/hfsplus/wrapper.c b/fs/hfsplus/wrapper.c
362     index 175d08e..bed78ac 100644
363     --- a/fs/hfsplus/wrapper.c
364     +++ b/fs/hfsplus/wrapper.c
365     @@ -99,6 +99,10 @@ int hfsplus_read_wrapper(struct super_block *sb)
366    
367     if (hfsplus_get_last_session(sb, &part_start, &part_size))
368     return -EINVAL;
369     + if ((u64)part_start + part_size > 0x100000000ULL) {
370     + pr_err("hfs: volumes larger than 2TB are not supported yet\n");
371     + return -EINVAL;
372     + }
373     while (1) {
374     bh = sb_bread512(sb, part_start + HFSPLUS_VOLHEAD_SECTOR, vhdr);
375     if (!bh)
376     diff --git a/fs/nfs/client.c b/fs/nfs/client.c
377     index 5ee23e7..9d6a0e4 100644
378     --- a/fs/nfs/client.c
379     +++ b/fs/nfs/client.c
380     @@ -983,7 +983,7 @@ static int nfs4_init_client(struct nfs_client *clp,
381     RPC_CLNT_CREATE_DISCRTRY);
382     if (error < 0)
383     goto error;
384     - memcpy(clp->cl_ipaddr, ip_addr, sizeof(clp->cl_ipaddr));
385     + strlcpy(clp->cl_ipaddr, ip_addr, sizeof(clp->cl_ipaddr));
386    
387     error = nfs_idmap_new(clp);
388     if (error < 0) {
389     diff --git a/fs/nfs/dir.c b/fs/nfs/dir.c
390     index c3fe156..e195f67 100644
391     --- a/fs/nfs/dir.c
392     +++ b/fs/nfs/dir.c
393     @@ -1014,12 +1014,12 @@ static struct dentry *nfs_atomic_lookup(struct inode *dir, struct dentry *dentry
394     res = NULL;
395     goto out;
396     /* This turned out not to be a regular file */
397     - case -EISDIR:
398     case -ENOTDIR:
399     goto no_open;
400     case -ELOOP:
401     if (!(nd->intent.open.flags & O_NOFOLLOW))
402     goto no_open;
403     + /* case -EISDIR: */
404     /* case -EINVAL: */
405     default:
406     goto out;
407     @@ -1526,6 +1526,8 @@ nfs_link(struct dentry *old_dentry, struct inode *dir, struct dentry *dentry)
408     old_dentry->d_parent->d_name.name, old_dentry->d_name.name,
409     dentry->d_parent->d_name.name, dentry->d_name.name);
410    
411     + nfs_inode_return_delegation(inode);
412     +
413     d_drop(dentry);
414     error = NFS_PROTO(dir)->link(inode, dir, &dentry->d_name);
415     if (error == 0) {
416     diff --git a/fs/nfs/direct.c b/fs/nfs/direct.c
417     index 630feb3..8a5c1d5 100644
418     --- a/fs/nfs/direct.c
419     +++ b/fs/nfs/direct.c
420     @@ -454,6 +454,7 @@ static void nfs_direct_write_reschedule(struct nfs_direct_req *dreq)
421     };
422     struct rpc_task_setup task_setup_data = {
423     .rpc_client = NFS_CLIENT(inode),
424     + .rpc_message = &msg,
425     .callback_ops = &nfs_write_direct_ops,
426     .workqueue = nfsiod_workqueue,
427     .flags = RPC_TASK_ASYNC,
428     diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
429     index c910413..ad4e800 100644
430     --- a/fs/nfs/nfs4proc.c
431     +++ b/fs/nfs/nfs4proc.c
432     @@ -71,12 +71,17 @@ static int _nfs4_proc_getattr(struct nfs_server *server, struct nfs_fh *fhandle,
433     /* Prevent leaks of NFSv4 errors into userland */
434     int nfs4_map_errors(int err)
435     {
436     - if (err < -1000) {
437     + if (err >= -1000)
438     + return err;
439     + switch (err) {
440     + case -NFS4ERR_RESOURCE:
441     + return -EREMOTEIO;
442     + default:
443     dprintk("%s could not handle NFSv4 error %d\n",
444     __func__, -err);
445     - return -EIO;
446     + break;
447     }
448     - return err;
449     + return -EIO;
450     }
451    
452     /*
453     @@ -3550,15 +3555,23 @@ nfs4_proc_lock(struct file *filp, int cmd, struct file_lock *request)
454     if (request->fl_start < 0 || request->fl_end < 0)
455     return -EINVAL;
456    
457     - if (IS_GETLK(cmd))
458     - return nfs4_proc_getlk(state, F_GETLK, request);
459     + if (IS_GETLK(cmd)) {
460     + if (state != NULL)
461     + return nfs4_proc_getlk(state, F_GETLK, request);
462     + return 0;
463     + }
464    
465     if (!(IS_SETLK(cmd) || IS_SETLKW(cmd)))
466     return -EINVAL;
467    
468     - if (request->fl_type == F_UNLCK)
469     - return nfs4_proc_unlck(state, cmd, request);
470     + if (request->fl_type == F_UNLCK) {
471     + if (state != NULL)
472     + return nfs4_proc_unlck(state, cmd, request);
473     + return 0;
474     + }
475    
476     + if (state == NULL)
477     + return -ENOLCK;
478     do {
479     status = nfs4_proc_setlk(state, cmd, request);
480     if ((status != -EAGAIN) || IS_SETLK(cmd))
481     diff --git a/fs/nfs/nfs4renewd.c b/fs/nfs/nfs4renewd.c
482     index 3305acb..6ede673 100644
483     --- a/fs/nfs/nfs4renewd.c
484     +++ b/fs/nfs/nfs4renewd.c
485     @@ -125,12 +125,6 @@ nfs4_schedule_state_renewal(struct nfs_client *clp)
486     }
487    
488     void
489     -nfs4_renewd_prepare_shutdown(struct nfs_server *server)
490     -{
491     - cancel_delayed_work(&server->nfs_client->cl_renewd);
492     -}
493     -
494     -void
495     nfs4_kill_renewd(struct nfs_client *clp)
496     {
497     cancel_delayed_work_sync(&clp->cl_renewd);
498     diff --git a/fs/nfs/nfs4xdr.c b/fs/nfs/nfs4xdr.c
499     index b916297..5e26759 100644
500     --- a/fs/nfs/nfs4xdr.c
501     +++ b/fs/nfs/nfs4xdr.c
502     @@ -4671,7 +4671,6 @@ static struct {
503     { NFS4ERR_SERVERFAULT, -ESERVERFAULT },
504     { NFS4ERR_BADTYPE, -EBADTYPE },
505     { NFS4ERR_LOCKED, -EAGAIN },
506     - { NFS4ERR_RESOURCE, -EREMOTEIO },
507     { NFS4ERR_SYMLINK, -ELOOP },
508     { NFS4ERR_OP_ILLEGAL, -EOPNOTSUPP },
509     { NFS4ERR_DEADLOCK, -EDEADLK },
510     diff --git a/fs/nfs/super.c b/fs/nfs/super.c
511     index e9b2017..3da0fa5 100644
512     --- a/fs/nfs/super.c
513     +++ b/fs/nfs/super.c
514     @@ -2398,7 +2398,6 @@ static void nfs4_kill_super(struct super_block *sb)
515     nfs_return_all_delegations(sb);
516     kill_anon_super(sb);
517    
518     - nfs4_renewd_prepare_shutdown(server);
519     nfs_free_server(server);
520     }
521    
522     diff --git a/fs/pipe.c b/fs/pipe.c
523     index 35d2cbb..f91375f 100644
524     --- a/fs/pipe.c
525     +++ b/fs/pipe.c
526     @@ -742,36 +742,55 @@ pipe_rdwr_release(struct inode *inode, struct file *filp)
527     static int
528     pipe_read_open(struct inode *inode, struct file *filp)
529     {
530     - /* We could have perhaps used atomic_t, but this and friends
531     - below are the only places. So it doesn't seem worthwhile. */
532     + int ret = -ENOENT;
533     +
534     mutex_lock(&inode->i_mutex);
535     - inode->i_pipe->readers++;
536     +
537     + if (inode->i_pipe) {
538     + ret = 0;
539     + inode->i_pipe->readers++;
540     + }
541     +
542     mutex_unlock(&inode->i_mutex);
543    
544     - return 0;
545     + return ret;
546     }
547    
548     static int
549     pipe_write_open(struct inode *inode, struct file *filp)
550     {
551     + int ret = -ENOENT;
552     +
553     mutex_lock(&inode->i_mutex);
554     - inode->i_pipe->writers++;
555     +
556     + if (inode->i_pipe) {
557     + ret = 0;
558     + inode->i_pipe->writers++;
559     + }
560     +
561     mutex_unlock(&inode->i_mutex);
562    
563     - return 0;
564     + return ret;
565     }
566    
567     static int
568     pipe_rdwr_open(struct inode *inode, struct file *filp)
569     {
570     + int ret = -ENOENT;
571     +
572     mutex_lock(&inode->i_mutex);
573     - if (filp->f_mode & FMODE_READ)
574     - inode->i_pipe->readers++;
575     - if (filp->f_mode & FMODE_WRITE)
576     - inode->i_pipe->writers++;
577     +
578     + if (inode->i_pipe) {
579     + ret = 0;
580     + if (filp->f_mode & FMODE_READ)
581     + inode->i_pipe->readers++;
582     + if (filp->f_mode & FMODE_WRITE)
583     + inode->i_pipe->writers++;
584     + }
585     +
586     mutex_unlock(&inode->i_mutex);
587    
588     - return 0;
589     + return ret;
590     }
591    
592     /*
593     diff --git a/include/linux/kernel.h b/include/linux/kernel.h
594     index 2651f80..cd85f00 100644
595     --- a/include/linux/kernel.h
596     +++ b/include/linux/kernel.h
597     @@ -200,6 +200,8 @@ extern struct ratelimit_state printk_ratelimit_state;
598     extern int printk_ratelimit(void);
599     extern bool printk_timed_ratelimit(unsigned long *caller_jiffies,
600     unsigned int interval_msec);
601     +extern void printk_tick(void);
602     +extern int printk_needs_cpu(int);
603     #else
604     static inline int vprintk(const char *s, va_list args)
605     __attribute__ ((format (printf, 1, 0)));
606     @@ -211,6 +213,8 @@ static inline int printk_ratelimit(void) { return 0; }
607     static inline bool printk_timed_ratelimit(unsigned long *caller_jiffies, \
608     unsigned int interval_msec) \
609     { return false; }
610     +static inline void printk_tick(void) { }
611     +static inline int printk_needs_cpu(int) { return 0; }
612     #endif
613    
614     extern void asmlinkage __attribute__((format(printf, 1, 2)))
615     diff --git a/include/linux/pci_ids.h b/include/linux/pci_ids.h
616     index ba91fe1..c869aee 100644
617     --- a/include/linux/pci_ids.h
618     +++ b/include/linux/pci_ids.h
619     @@ -478,6 +478,9 @@
620     #define PCI_DEVICE_ID_IBM_ICOM_V2_ONE_PORT_RVX_ONE_PORT_MDM_PCIE 0x0361
621     #define PCI_DEVICE_ID_IBM_ICOM_FOUR_PORT_MODEL 0x252
622    
623     +#define PCI_SUBVENDOR_ID_IBM 0x1014
624     +#define PCI_SUBDEVICE_ID_IBM_SATURN_SERIAL_ONE_PORT 0x03d4
625     +
626     #define PCI_VENDOR_ID_UNISYS 0x1018
627     #define PCI_DEVICE_ID_UNISYS_DMA_DIRECTOR 0x001C
628    
629     diff --git a/include/net/irda/irda_device.h b/include/net/irda/irda_device.h
630     index 3025ae1..94c852d 100644
631     --- a/include/net/irda/irda_device.h
632     +++ b/include/net/irda/irda_device.h
633     @@ -135,9 +135,11 @@ struct dongle_reg {
634    
635     /*
636     * Per-packet information we need to hide inside sk_buff
637     - * (must not exceed 48 bytes, check with struct sk_buff)
638     + * (must not exceed 48 bytes, check with struct sk_buff)
639     + * The default_qdisc_pad field is a temporary hack.
640     */
641     struct irda_skb_cb {
642     + unsigned int default_qdisc_pad;
643     magic_t magic; /* Be sure that we can trust the information */
644     __u32 next_speed; /* The Speed to be set *after* this frame */
645     __u16 mtt; /* Minimum turn around time */
646     diff --git a/kernel/printk.c b/kernel/printk.c
647     index 0084812..204660d 100644
648     --- a/kernel/printk.c
649     +++ b/kernel/printk.c
650     @@ -977,10 +977,25 @@ int is_console_locked(void)
651     return console_locked;
652     }
653    
654     -void wake_up_klogd(void)
655     +static DEFINE_PER_CPU(int, printk_pending);
656     +
657     +void printk_tick(void)
658     {
659     - if (!oops_in_progress && waitqueue_active(&log_wait))
660     + if (__get_cpu_var(printk_pending)) {
661     + __get_cpu_var(printk_pending) = 0;
662     wake_up_interruptible(&log_wait);
663     + }
664     +}
665     +
666     +int printk_needs_cpu(int cpu)
667     +{
668     + return per_cpu(printk_pending, cpu);
669     +}
670     +
671     +void wake_up_klogd(void)
672     +{
673     + if (waitqueue_active(&log_wait))
674     + __get_cpu_var(printk_pending) = 1;
675     }
676    
677     /**
678     diff --git a/kernel/time/tick-sched.c b/kernel/time/tick-sched.c
679     index cb02324..a7cb616 100644
680     --- a/kernel/time/tick-sched.c
681     +++ b/kernel/time/tick-sched.c
682     @@ -261,7 +261,7 @@ void tick_nohz_stop_sched_tick(int inidle)
683     next_jiffies = get_next_timer_interrupt(last_jiffies);
684     delta_jiffies = next_jiffies - last_jiffies;
685    
686     - if (rcu_needs_cpu(cpu))
687     + if (rcu_needs_cpu(cpu) || printk_needs_cpu(cpu))
688     delta_jiffies = 1;
689     /*
690     * Do not stop the tick, if we are only one off
691     diff --git a/kernel/timer.c b/kernel/timer.c
692     index e9a0195..7acda56 100644
693     --- a/kernel/timer.c
694     +++ b/kernel/timer.c
695     @@ -978,6 +978,7 @@ void update_process_times(int user_tick)
696     run_local_timers();
697     if (rcu_pending(cpu))
698     rcu_check_callbacks(cpu, user_tick);
699     + printk_tick();
700     scheduler_tick();
701     run_posix_cpu_timers(p);
702     }
703     diff --git a/mm/mempolicy.c b/mm/mempolicy.c
704     index 83bea4f..7acf81c 100644
705     --- a/mm/mempolicy.c
706     +++ b/mm/mempolicy.c
707     @@ -985,7 +985,8 @@ static long do_mbind(unsigned long start, unsigned long len,
708    
709     if (!err && nr_failed && (flags & MPOL_MF_STRICT))
710     err = -EIO;
711     - }
712     + } else
713     + putback_lru_pages(&pagelist);
714    
715     up_write(&mm->mmap_sem);
716     mpol_put(new);
717     diff --git a/net/appletalk/aarp.c b/net/appletalk/aarp.c
718     index b25c1e9..dd076ea 100644
719     --- a/net/appletalk/aarp.c
720     +++ b/net/appletalk/aarp.c
721     @@ -598,7 +598,7 @@ int aarp_send_ddp(struct net_device *dev, struct sk_buff *skb,
722    
723     /* Non ELAP we cannot do. */
724     if (dev->type != ARPHRD_ETHER)
725     - return -1;
726     + goto free_it;
727    
728     skb->dev = dev;
729     skb->protocol = htons(ETH_P_ATALK);
730     @@ -633,7 +633,7 @@ int aarp_send_ddp(struct net_device *dev, struct sk_buff *skb,
731     if (!a) {
732     /* Whoops slipped... good job it's an unreliable protocol 8) */
733     write_unlock_bh(&aarp_lock);
734     - return -1;
735     + goto free_it;
736     }
737    
738     /* Set up the queue */
739     @@ -662,15 +662,21 @@ out_unlock:
740     write_unlock_bh(&aarp_lock);
741    
742     /* Tell the ddp layer we have taken over for this frame. */
743     - return 0;
744     + goto sent;
745    
746     sendit:
747     if (skb->sk)
748     skb->priority = skb->sk->sk_priority;
749     - dev_queue_xmit(skb);
750     + if (dev_queue_xmit(skb))
751     + goto drop;
752     sent:
753     - return 1;
754     + return NET_XMIT_SUCCESS;
755     +free_it:
756     + kfree_skb(skb);
757     +drop:
758     + return NET_XMIT_DROP;
759     }
760     +EXPORT_SYMBOL(aarp_send_ddp);
761    
762     /*
763     * An entry in the aarp unresolved queue has become resolved. Send
764     diff --git a/net/appletalk/ddp.c b/net/appletalk/ddp.c
765     index 8067dc7..e99d337 100644
766     --- a/net/appletalk/ddp.c
767     +++ b/net/appletalk/ddp.c
768     @@ -1277,8 +1277,10 @@ static int handle_ip_over_ddp(struct sk_buff *skb)
769     struct net_device_stats *stats;
770    
771     /* This needs to be able to handle ipddp"N" devices */
772     - if (!dev)
773     - return -ENODEV;
774     + if (!dev) {
775     + kfree_skb(skb);
776     + return NET_RX_DROP;
777     + }
778    
779     skb->protocol = htons(ETH_P_IP);
780     skb_pull(skb, 13);
781     @@ -1288,8 +1290,7 @@ static int handle_ip_over_ddp(struct sk_buff *skb)
782     stats = dev->priv;
783     stats->rx_packets++;
784     stats->rx_bytes += skb->len + 13;
785     - netif_rx(skb); /* Send the SKB up to a higher place. */
786     - return 0;
787     + return netif_rx(skb); /* Send the SKB up to a higher place. */
788     }
789     #else
790     /* make it easy for gcc to optimize this test out, i.e. kill the code */
791     @@ -1297,9 +1298,8 @@ static int handle_ip_over_ddp(struct sk_buff *skb)
792     #define handle_ip_over_ddp(skb) 0
793     #endif
794    
795     -static void atalk_route_packet(struct sk_buff *skb, struct net_device *dev,
796     - struct ddpehdr *ddp, __u16 len_hops,
797     - int origlen)
798     +static int atalk_route_packet(struct sk_buff *skb, struct net_device *dev,
799     + struct ddpehdr *ddp, __u16 len_hops, int origlen)
800     {
801     struct atalk_route *rt;
802     struct atalk_addr ta;
803     @@ -1366,8 +1366,6 @@ static void atalk_route_packet(struct sk_buff *skb, struct net_device *dev,
804     /* 22 bytes - 12 ether, 2 len, 3 802.2 5 snap */
805     struct sk_buff *nskb = skb_realloc_headroom(skb, 32);
806     kfree_skb(skb);
807     - if (!nskb)
808     - goto out;
809     skb = nskb;
810     } else
811     skb = skb_unshare(skb, GFP_ATOMIC);
812     @@ -1376,12 +1374,16 @@ static void atalk_route_packet(struct sk_buff *skb, struct net_device *dev,
813     * If the buffer didn't vanish into the lack of space bitbucket we can
814     * send it.
815     */
816     - if (skb && aarp_send_ddp(rt->dev, skb, &ta, NULL) == -1)
817     - goto free_it;
818     -out:
819     - return;
820     + if (skb == NULL)
821     + goto drop;
822     +
823     + if (aarp_send_ddp(rt->dev, skb, &ta, NULL) == NET_XMIT_DROP)
824     + return NET_RX_DROP;
825     + return NET_XMIT_SUCCESS;
826     free_it:
827     kfree_skb(skb);
828     +drop:
829     + return NET_RX_DROP;
830     }
831    
832     /**
833     @@ -1455,8 +1457,7 @@ static int atalk_rcv(struct sk_buff *skb, struct net_device *dev,
834     /* Not ours, so we route the packet via the correct
835     * AppleTalk iface
836     */
837     - atalk_route_packet(skb, dev, ddp, len_hops, origlen);
838     - goto out;
839     + return atalk_route_packet(skb, dev, ddp, len_hops, origlen);
840     }
841    
842     /* if IP over DDP is not selected this code will be optimized out */
843     @@ -1663,10 +1664,10 @@ static int atalk_sendmsg(struct kiocb *iocb, struct socket *sock, struct msghdr
844     if (skb2) {
845     loopback = 1;
846     SOCK_DEBUG(sk, "SK %p: send out(copy).\n", sk);
847     - if (aarp_send_ddp(dev, skb2,
848     - &usat->sat_addr, NULL) == -1)
849     - kfree_skb(skb2);
850     - /* else queued/sent above in the aarp queue */
851     + /*
852     + * If it fails it is queued/sent above in the aarp queue
853     + */
854     + aarp_send_ddp(dev, skb2, &usat->sat_addr, NULL);
855     }
856     }
857    
858     @@ -1696,9 +1697,10 @@ static int atalk_sendmsg(struct kiocb *iocb, struct socket *sock, struct msghdr
859     usat = &gsat;
860     }
861    
862     - if (aarp_send_ddp(dev, skb, &usat->sat_addr, NULL) == -1)
863     - kfree_skb(skb);
864     - /* else queued/sent above in the aarp queue */
865     + /*
866     + * If it fails it is queued/sent above in the aarp queue
867     + */
868     + aarp_send_ddp(dev, skb, &usat->sat_addr, NULL);
869     }
870     SOCK_DEBUG(sk, "SK %p: Done write (%Zd).\n", sk, len);
871    
872     @@ -1877,7 +1879,6 @@ static struct packet_type ppptalk_packet_type = {
873     static unsigned char ddp_snap_id[] = { 0x08, 0x00, 0x07, 0x80, 0x9B };
874    
875     /* Export symbols for use by drivers when AppleTalk is a module */
876     -EXPORT_SYMBOL(aarp_send_ddp);
877     EXPORT_SYMBOL(atrtr_get_dev);
878     EXPORT_SYMBOL(atalk_find_dev_addr);
879    
880     diff --git a/net/sched/cls_api.c b/net/sched/cls_api.c
881     index 8eb79e9..5b66371 100644
882     --- a/net/sched/cls_api.c
883     +++ b/net/sched/cls_api.c
884     @@ -337,7 +337,7 @@ static int tcf_fill_node(struct sk_buff *skb, struct tcf_proto *tp,
885     tcm = NLMSG_DATA(nlh);
886     tcm->tcm_family = AF_UNSPEC;
887     tcm->tcm__pad1 = 0;
888     - tcm->tcm__pad1 = 0;
889     + tcm->tcm__pad2 = 0;
890     tcm->tcm_ifindex = qdisc_dev(tp->q)->ifindex;
891     tcm->tcm_parent = tp->classid;
892     tcm->tcm_info = TC_H_MAKE(tp->prio, tp->protocol);
893     diff --git a/net/unix/af_unix.c b/net/unix/af_unix.c
894     index 8e66fe0..facdaa9 100644
895     --- a/net/unix/af_unix.c
896     +++ b/net/unix/af_unix.c
897     @@ -1061,6 +1061,8 @@ restart:
898     err = -ECONNREFUSED;
899     if (other->sk_state != TCP_LISTEN)
900     goto out_unlock;
901     + if (other->sk_shutdown & RCV_SHUTDOWN)
902     + goto out_unlock;
903    
904     if (unix_recvq_full(other)) {
905     err = -EAGAIN;