I am announcing the release of the 2.6.32.60+drm33.26 longterm tree.
This tree is based on 2.6.32 and generally has all of the stable updates
applied. Except those to the DRM subsystem, which was based on 2.6.33 and
took updates from that upstream stable as long as that existed. It will
continue to add patches to the DRM subsystem as long as they are valid
according to the stable update rules (Documentation/stable_kernel_rules.txt).
DRM patches for this tree should be sent to kernel-team@lists.ubuntu.com.
This release contains patches from upstream 2.6.32.60, but dropped any patches
to the DRM subsystem.
The updated 2.6.32.y-drm33.z tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/smb/linux-2.6.32.y-drm33.z.git
or
git://kernel.ubuntu.com/smb/linux-2.6.32.y-drm33.z.git
and can be browsed through git web via:
http://git.kernel.org/?p=linux/kernel/git/smb/linux-2.6.32.y-drm33.z.git;a=summary
or
http://kernel.ubuntu.com/git?p=smb/linux-2.6.32.y-drm33.z.git;a=summary
-Stefan
------
* netxen: support for GbE port settings
* Fix sparc build with newer tools.
* powerpc/pmac: Fix SMP kernels on pre-core99 UP machines
* Bluetooth: btusb: fix bInterval for high/super speed isochronous endpoints
* jbd2: clear BH_Delay & BH_Unwritten in journal_unmap_buffer
* fix pgd_lock deadlock
* futex: Fix uninterruptible loop due to gate_area
* ntp: Fix leap-second hrtimer livelock
* ntp: Correct TAI offset during leap second
* timekeeping: Fix CLOCK_MONOTONIC inconsistency during leapsecond
* time: Move common updates to a function
* hrtimer: Provide clock_was_set_delayed()
* timekeeping: Fix leapsecond triggered load spike issue
* timekeeping: Maintain ktime_t based offsets for hrtimers
* hrtimers: Move lock held region in hrtimer_interrupt()
* timekeeping: Provide hrtimer update function
* hrtimer: Update hrtimer base offsets each hrtimer_interrupt
* timekeeping: Add missing update call in timekeeping_resume()
* time: Improve sanity checking of timekeeping inputs
* time: Avoid making adjustments if we haven't accumulated anything
* time: Move ktime_t overflow checking into timespec_valid_strict
* ioat2: kill pending flag
* usb: Fix deadlock in hid_reset when Dell iDRAC is reset
* eCryptfs: Copy up lower inode attrs after setting lower xattr
* eCryptfs: Clear ECRYPTFS_NEW_FILE flag during truncate
* oprofile: use KM_NMI slot for kmap_atomic
* tty_audit: fix tty_audit_add_data live lock on audit disabled
* bonding: 802.3ad - fix agg_device_up
* usbnet: increase URB reference count before usb_unlink_urb
* usbnet: don't clear urb->dev in tx_complete
* sched: Fix signed unsigned comparison in check_preempt_tick()
* x86/PCI: amd: factor out MMCONFIG discovery
* PNP: fix "work around Dell 1536/1546 BIOS MMCONFIG bug that breaks USB"
* KVM: Remove ability to assign a device without iommu support
* KVM: Device assignment permission checks
* KVM: x86: Prevent starting PIT timers in the absence of irqchip support
* rose: Add length checks to CALL_REQUEST parsing
* KVM: x86: extend "struct x86_emulate_ops" with "get_cpuid"
* KVM: x86: fix missing checks in syscall emulation
* block: Fix io_context leak after clone with CLONE_IO
* block: Fix io_context leak after failure of clone with CLONE_IO
* KVM: x86: disallow multiple KVM_CREATE_IRQCHIP
* KVM: Ensure all vcpus are consistent with in-kernel irqchip settings
* KVM: ia64: fix build due to typo
* xfs: Fix possible memory corruption in xfs_readlink
* xfs: Fix missing xfs_iunlock() on error recovery path in xfs_readlink()
* fcaps: clear the same personality flags as suid when fcaps are used
* security: fix compile error in commoncap.c
* hugepages: fix use after free bug in "quota" handling
* net: sock: validate data_len before allocating skb in sock_alloc_send_pskb()
* dl2k: use standard #defines from mii.h.
* dl2k: Clean up rio_ioctl
* hfsplus: Fix potential buffer overflows
* cred: copy_process() should clear child->replacement_session_keyring
* tcp: Don't change unlocked socket state in tcp_v4_err().
* x86: Derandom delay_tsc for 64 bit
* ipsec: be careful of non existing mac headers
* block, sx8: fix pointer math issue getting fw version
* nilfs2: fix NULL pointer dereference in nilfs_load_super_block()
* USB: ftdi_sio: fix problem when the manufacture is a NULL string
* ntp: Fix integer overflow when setting time
* SUNRPC: We must not use list_for_each_entry_safe() in rpc_wake_up()
* ext4: check for zero length extent
* xfs: Fix oops on IO error during xlog_recover_process_iunlinks()
* nfsd: don't allow zero length strings in cache_parse()
* sched/x86: Fix overflow in cyc2ns_offset
* Bluetooth: add NULL pointer check in HCI
* Bluetooth: hci_ldisc: fix NULL-pointer dereference on tty_close
* sparc64: Fix bootup crash on sun4v.
* video:uvesafb: Fix oops that uvesafb try to execute NX-protected page
* USB: serial: fix race between probe and open
* xhci: Don't write zeroed pointers to xHC registers.
* xHCI: Correct the #define XHCI_LEGACY_DISABLE_SMI
* crypto: sha512 - Fix byte counter overflow in SHA-512
* PCI: Add quirk for still enabled interrupts on Intel Sandy Bridge GPUs
* phonet: Check input from user before allocating
* netlink: fix races after skb queueing
* net: fix a race in sock_queue_err_skb()
* atl1: fix kernel panic in case of DMA errors
* net/ethernet: ks8851_mll fix rx frame buffer overflow
* net_sched: gred: Fix oops in gred_dump() in WRED mode
* ARM: 7410/1: Add extra clobber registers for assembly in kernel_execve
* netem: fix possible skb leak
* ALSA: echoaudio: Remove incorrect part of assertion
* NFSv4: Revalidate uid/gid after open
* ext3: Fix error handling on inode bitmap corruption
* ext4: fix error handling on inode bitmap corruption
* xhci: Reset reserved command ring TRBs on cleanup.
* SCSI: fix scsi_wait_scan
* powerpc: Fix kernel panic during kernel module load
* fuse: fix stat call on 32 bit platforms
* udf: Avoid run away loop when partition table length is corrupted
* udf: Improve table length check to avoid possible overflow
* stable: Allow merging of backports for serious user-visible performance issues
* eCryptfs: Properly check for O_RDONLY flag before doing privileged open
* USB: cdc-wdm: fix lockup on error in wdm_read
* mm: Hold a file reference in madvise_remove
* ntp: Fix STA_INS/DEL clearing bug
* MIPS: Properly align the .data..init_task section.
* powerpc/ftrace: Fix assembly trampoline register usage
* powerpc: Add "memory" attribute for mfmsr()
* SCSI: libsas: continue revalidation
* SCSI: libsas: fix sas_discover_devices return code handling
* SCSI: fix eh wakeup (scsi_schedule_eh vs scsi_restart_operations)
* SCSI: Avoid dangling pointer in scsi_requeue_command()
* usbdevfs: Correct amount of data copied to user in processcompl_compat
* locks: fix checking of fcntl_setlease argument
* ACPI/AC: prevent OOPS on some boxes due to missing check power_supply_register() return value check
* Btrfs: call the ordered free operation without any locks held
* nfsd4: our filesystems are normally case sensitive
* ext4: don't let i_reserved_meta_blocks go negative
* sctp: Fix list corruption resulting from freeing an association on a list
* cipso: don't follow a NULL pointer when setsockopt() is called
* wanmain: comparing array with NULL
* USB: kaweth.c: use GFP_ATOMIC under spin_lock
* tcp: perform DMA to userspace only if there is a task waiting for it
* net/tun: fix ioctl() based info leaks
* USB: echi-dbgp: increase the controller wait time to come out of halt.
* ALSA: mpu401: Fix missing initialization of irq field
* futex: Test for pi_mutex on fault in futex_wait_requeue_pi()
* futex: Fix bug in WARN_ON for NULL q.pi_state
* futex: Forbid uaddr == uaddr2 in futex_wait_requeue_pi()
* pcdp: use early_ioremap/early_iounmap to access pcdp table
* mm: mmu_notifier: fix freed page still mapped in secondary MMU
* fuse: verify all ioctl retry iov elements
* xhci: Increase reset timeout for Renesas 720201 host.
* usb: serial: mos7840: Fixup mos7840_chars_in_buffer()
* ALSA: hda - fix Copyright debug message
* vfs: missed source of ->f_pos races
* NFSv3: Ensure that do_proc_get_root() reports errors correctly
* NFS: Alias the nfs module to nfs4
* svcrpc: fix svc_xprt_enqueue/svc_recv busy-looping
* svcrpc: sends on closed socket should stop immediately
* cciss: fix incorrect scsi status reporting
* USB: CDC ACM: Fix NULL pointer dereference
* Remove user-triggerable BUG from mpol_to_str
* udf: Fix data corruption for files in ICB
* ext3: Fix fdatasync() for files with only i_size changes
* PARISC: Redefine ATOMIC_INIT and ATOMIC64_INIT to drop the casts
* dccp: check ccid before dereferencing
* ia64: Add accept4() syscall
* tcp: do_tcp_sendpages() must try to push data out on oom conditions
* tcp: drop SYN+FIN messages
* xen: correctly check for pending events when restoring irq flags
* x86, amd, xen: Avoid NULL pointer paravirt references
* x86, tls: Off by one limit check
* sparc64: Eliminate obsolete __handle_softirq() function
* udf: Fortify loading of sparing table
* udf: fix retun value on error path in udf_load_logicalvol
* mtd: cafe_nand: fix an & vs | mistake
* epoll: introduce POLLFREE to flush ->signalfd_wqh before kfree()
* epoll: ep_unregister_pollwait() can use the freed pwq->whead
* epoll: limit paths
* Don't limit non-nested epoll paths
* epoll: clear the tfile_check_list on -ELOOP
* random: Reorder struct entropy_store to remove padding on 64bits
* random: update interface comments to reflect reality
* random: simplify fips mode
* x86, cpu: Add CPU flags for F16C and RDRND
* x86, cpufeature: Update CPU feature RDRND to RDRAND
* random: Add support for architectural random hooks
* x86, random: Architectural inlines to get random integers with RDRAND
* x86, random: Verify RDRAND functionality and allow it to be disabled
* fix typo/thinko in get_random_bytes()
* random: Use arch_get_random_int instead of cycle counter if avail
* random: Use arch-specific RNG to initialize the entropy store
* random: Adjust the number of loops when initializing
* drivers/char/random.c: fix boot id uniqueness race
* random: make 'add_interrupt_randomness()' do something sane
* random: use lockless techniques in the interrupt path
* random: create add_device_randomness() interface
* random: use the arch-specific rng in xfer_secondary_pool
* random: add new get_random_bytes_arch() function
* random: mix in architectural randomness in extract_buf()
* MAINTAINERS: Theodore Ts'o is taking over the random driver
* usb: feed USB device information to the /dev/random driver
* net: feed /dev/random with the MAC address when registering a device
* random: remove rand_initialize_irq()
* random: Add comment to random_initialize()
* rtc: wm831x: Feed the write counter into device_add_randomness()
* mfd: wm831x: Feed the device UUID into device_add_randomness()
* dmi: Feed DMI table to /dev/random driver
* Linux 2.6.32.60
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
index c840e7d..14c7fb0 100644
--- a/Documentation/kernel-parameters.txt
+++ b/Documentation/kernel-parameters.txt
@@ -1725,6 +1725,11 @@ and is between 256 and 4096 characters. It is defined in the file
noresidual [PPC] Don't use residual data on PReP machines.
+ nordrand [X86] Disable the direct use of the RDRAND
+ instruction even if it is supported by the
+ processor. RDRAND is still available to user
+ space applications.
+
noresume [SWSUSP] Disables resume and restores original swap
space.
diff --git a/Documentation/stable_kernel_rules.txt b/Documentation/stable_kernel_rules.txt
index e6e482f..3c9d7ac 100644
--- a/Documentation/stable_kernel_rules.txt
+++ b/Documentation/stable_kernel_rules.txt
@@ -12,6 +12,12 @@ Rules on what kind of patches are accepted, and which ones are not, into the
marked CONFIG_BROKEN), an oops, a hang, data corruption, a real
security issue, or some "oh, that's not good" issue. In short, something
critical.
+ - Serious issues as reported by a user of a distribution kernel may also
+ be considered if they fix a notable performance or interactivity issue.
+ As these fixes are not as obvious and have a higher risk of a subtle
+ regression they should only be submitted by a distribution kernel
+ maintainer and include an addendum linking to a bugzilla entry if it
+ exists and additional information on the user-visible impact.
- New device IDs and quirks are also accepted.
- No "theoretical race condition" issues, unless an explanation of how the
race can be exploited is also provided.
diff --git a/MAINTAINERS b/MAINTAINERS
index 613da5d..334258c 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -4379,7 +4379,7 @@ F: Documentation/blockdev/ramdisk.txt
F: drivers/block/brd.c
RANDOM NUMBER DRIVER
-M: Matt Mackall <mpm@selenic.com>
+M: Theodore Ts'o" <tytso@mit.edu>
S: Maintained
F: drivers/char/random.c
diff --git a/Makefile b/Makefile
index a9c82a4..16295b7 100644
--- a/Makefile
+++ b/Makefile
@@ -1,7 +1,7 @@
VERSION = 2
PATCHLEVEL = 6
SUBLEVEL = 32
-EXTRAVERSION = .59+drm33.26
+EXTRAVERSION = .60+drm33.26
NAME = Man-Eating Seals of Antiquity
#define smp_mb__before_atomic_dec() smp_mb()
#define smp_mb__after_atomic_dec() smp_mb()
@@ -257,7 +257,7 @@ static __inline__ int atomic_add_unless(atomic_t *v, int a, int u)
DEBUGP("Initialized plt for 0x%x at %p
", val, entry);
diff --git a/arch/powerpc/platforms/powermac/smp.c b/arch/powerpc/platforms/powermac/smp.c
index b40c22d..7f66d0c 100644
--- a/arch/powerpc/platforms/powermac/smp.c
+++ b/arch/powerpc/platforms/powermac/smp.c
@@ -402,7 +402,7 @@ static struct irqaction psurge_irqaction = {
static void __init smp_psurge_setup_cpu(int cpu_nr)
{
- if (cpu_nr != 0)
+ if (cpu_nr != 0 || !psurge_start)
return;
/* reset the entry point so if we get another intr we won't
diff --git a/arch/sparc/Makefile b/arch/sparc/Makefile
index 113225b..0538555 100644
--- a/arch/sparc/Makefile
+++ b/arch/sparc/Makefile
@@ -31,7 +31,7 @@ UTS_MACHINE := sparc
#LDFLAGS_vmlinux = -N -Ttext 0xf0004000
# Since 2.5.40, the first stage is left not btfix-ed.
diff --git a/arch/sparc/kernel/ds.c b/arch/sparc/kernel/ds.c
index 4a700f4..6a831bd 100644
--- a/arch/sparc/kernel/ds.c
+++ b/arch/sparc/kernel/ds.c
@@ -1242,4 +1242,4 @@ static int __init ds_init(void)
return vio_register_driver(&ds_driver);
}
/* mm/ultra.S:xcall_report_regs KNOWS about this load. */
- bne,pn %icc, __handle_softirq
ldx [%sp + PTREGS_OFF + PT_V9_TSTATE], %l1
-__handle_softirq_continue:
rtrap_xcall:
sethi %hi(0xf << 20), %l4
and %l1, %l4, %l4
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
index 73ae02a..aa889d6 100644
--- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig
@@ -1428,6 +1428,15 @@ config ARCH_USES_PG_UNCACHED
def_bool y
depends on X86_PAT
+config ARCH_RANDOM
+ def_bool y
+ prompt "x86 architectural random number generator" if EXPERT
+ ---help---
+ Enable the x86 architectural RDRAND instruction
+ (Intel Bull Mountain technology) to generate random numbers.
+ If supported, this is a high bandwidth, cryptographically
+ secure hardware random number generator.
+
config EFI
bool "EFI runtime service support"
depends on ACPI
diff --git a/arch/x86/include/asm/archrandom.h b/arch/x86/include/asm/archrandom.h
new file mode 100644
index 0000000..0d9ec77
--- /dev/null
+++ b/arch/x86/include/asm/archrandom.h
@@ -0,0 +1,75 @@
+/*
+ * This file is part of the Linux kernel.
+ *
+ * Copyright (c) 2011, Intel Corporation
+ * Authors: Fenghua Yu <fenghua.yu@intel.com>,
+ * H. Peter Anvin <hpa@linux.intel.com>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms and conditions of the GNU General Public License,
+ * version 2, as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ */
+
+#ifndef ASM_X86_ARCHRANDOM_H
+#define ASM_X86_ARCHRANDOM_H
+
+#include <asm/processor.h>
+#include <asm/cpufeature.h>
+#include <asm/alternative.h>
+#include <asm/nops.h>
+
+#define RDRAND_RETRY_LOOPS 10
+
+#define RDRAND_INT ".byte 0x0f,0xc7,0xf0"
+#ifdef CONFIG_X86_64
+# define RDRAND_LONG ".byte 0x48,0x0f,0xc7,0xf0"
+#else
+# define RDRAND_LONG RDRAND_INT
+#endif
+
+#ifdef CONFIG_ARCH_RANDOM
+
+#define GET_RANDOM(name, type, rdrand, nop)
+static inline int name(type *v)
+{
+ int ok;
+ alternative_io("movl $0, %0
"
+ nop,
+ "
1: " rdrand "
"
+ "jc 2f
"
+ "decl %0
"
+ "jnz 1b
"
+ "2:",
+ X86_FEATURE_RDRAND,
+ ASM_OUTPUT2("=r" (ok), "=a" (*v)),
+ "0" (RDRAND_RETRY_LOOPS));
+ return ok;
+}
+
+#ifdef CONFIG_X86_64
+
+GET_RANDOM(arch_get_random_long, unsigned long, RDRAND_LONG, ASM_NOP5);
+GET_RANDOM(arch_get_random_int, unsigned int, RDRAND_INT, ASM_NOP4);
+
+#else
+
+GET_RANDOM(arch_get_random_long, unsigned long, RDRAND_LONG, ASM_NOP3);
+GET_RANDOM(arch_get_random_int, unsigned int, RDRAND_INT, ASM_NOP3);
+
+#endif /* CONFIG_X86_64 */
+
+#endif /* CONFIG_ARCH_RANDOM */
+
+extern void x86_init_rdrand(struct cpuinfo_x86 *c);
+
+#endif /* ASM_X86_ARCHRANDOM_H */
diff --git a/arch/x86/include/asm/cpufeature.h b/arch/x86/include/asm/cpufeature.h
index 1efb1fa..27929b8 100644
--- a/arch/x86/include/asm/cpufeature.h
+++ b/arch/x86/include/asm/cpufeature.h
@@ -124,6 +124,8 @@
#define X86_FEATURE_XSAVE (4*32+26) /* XSAVE/XRSTOR/XSETBV/XGETBV */
#define X86_FEATURE_OSXSAVE (4*32+27) /* "" XSAVE enabled in the OS */
#define X86_FEATURE_AVX (4*32+28) /* Advanced Vector Extensions */
+#define X86_FEATURE_F16C (4*32+29) /* 16-bit fp conversions */
+#define X86_FEATURE_RDRAND (4*32+30) /* The RDRAND instruction */
#define X86_FEATURE_HYPERVISOR (4*32+31) /* Running on a hypervisor */
/* VIA/Cyrix/Centaur-defined CPU features, CPUID level 0xC0000001, word 5 */
diff --git a/arch/x86/include/asm/k8.h b/arch/x86/include/asm/k8.h
index f0746f4..41845d2 100644
--- a/arch/x86/include/asm/k8.h
+++ b/arch/x86/include/asm/k8.h
@@ -1,11 +1,13 @@
#ifndef _ASM_X86_K8_H
#define _ASM_X86_K8_H
+#include <linux/ioport.h>
#include <linux/pci.h>
extern struct pci_device_id k8_nb_ids[];
extern int early_is_k8_nb(u32 value);
+extern struct resource *amd_get_mmconfig_range(struct resource *res);
extern struct pci_dev **k8_northbridges;
extern int num_k8_northbridges;
extern int cache_k8_northbridges(void);
diff --git a/arch/x86/include/asm/kvm_emulate.h b/arch/x86/include/asm/kvm_emulate.h
index 5ed59ec..cc44e3d 100644
--- a/arch/x86/include/asm/kvm_emulate.h
+++ b/arch/x86/include/asm/kvm_emulate.h
@@ -109,6 +109,8 @@ struct x86_emulate_ops {
unsigned int bytes,
struct kvm_vcpu *vcpu);
/*
* Clear/Set all flags overriden by options, need do it
diff --git a/arch/x86/kernel/cpu/rdrand.c b/arch/x86/kernel/cpu/rdrand.c
new file mode 100644
index 0000000..feca286
--- /dev/null
+++ b/arch/x86/kernel/cpu/rdrand.c
@@ -0,0 +1,73 @@
+/*
+ * This file is part of the Linux kernel.
+ *
+ * Copyright (c) 2011, Intel Corporation
+ * Authors: Fenghua Yu <fenghua.yu@intel.com>,
+ * H. Peter Anvin <hpa@linux.intel.com>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms and conditions of the GNU General Public License,
+ * version 2, as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ */
+
+#include <asm/processor.h>
+#include <asm/archrandom.h>
+#include <asm/sections.h>
+
+static int __init x86_rdrand_setup(char *s)
+{
+ setup_clear_cpu_cap(X86_FEATURE_RDRAND);
+ return 1;
+}
+__setup("nordrand", x86_rdrand_setup);
+
+/* We can't use arch_get_random_long() here since alternatives haven't run */
+static inline int rdrand_long(unsigned long *v)
+{
+ int ok;
+ asm volatile("1: " RDRAND_LONG "
"
+ "jc 2f
"
+ "decl %0
"
+ "jnz 1b
"
+ "2:"
+ : "=r" (ok), "=a" (*v)
+ : "0" (RDRAND_RETRY_LOOPS));
+ return ok;
+}
+
+/*
+ * Force a reseed cycle; we are architecturally guaranteed a reseed
+ * after no more than 512 128-bit chunks of random data. This also
+ * acts as a test of the CPU capability.
+ */
+#define RESEED_LOOP ((512*128)/sizeof(unsigned long))
+
+void __cpuinit x86_init_rdrand(struct cpuinfo_x86 *c)
+{
+#ifdef CONFIG_ARCH_RANDOM
+ unsigned long tmp;
+ int i, count, ok;
+
+ if (!cpu_has(c, X86_FEATURE_RDRAND))
+ return; /* Nothing to do */
+
+ for (count = i = 0; i < RESEED_LOOP; i++) {
+ ok = rdrand_long(&tmp);
+ if (ok)
+ count++;
+ }
+
+ if (count != RESEED_LOOP)
+ clear_cpu_cap(c, X86_FEATURE_RDRAND);
+#endif
+}
diff --git a/arch/x86/kernel/k8.c b/arch/x86/kernel/k8.c
index 9b89546..2831a32 100644
--- a/arch/x86/kernel/k8.c
+++ b/arch/x86/kernel/k8.c
@@ -87,6 +87,37 @@ int __init early_is_k8_nb(u32 device)
return 0;
}
static void split_page_count(int level)
@@ -354,7 +352,7 @@ static int
try_preserve_large_page(pte_t *kpte, unsigned long address,
struct cpa_data *cpa)
{
- unsigned long nextpage_addr, numpages, pmask, psize, flags, addr, pfn;
+ unsigned long nextpage_addr, numpages, pmask, psize, addr, pfn;
pte_t new_pte, old_pte, *tmp;
pgprot_t old_prot, new_prot;
int i, do_split = 1;
@@ -363,7 +361,7 @@ try_preserve_large_page(pte_t *kpte, unsigned long address,
if (cpa->force_split)
return 1;
- spin_lock_irqsave(&pgd_lock, flags);
+ spin_lock(&pgd_lock);
/*
* Check for races, another CPU might have split this page
* up already:
@@ -458,14 +456,14 @@ try_preserve_large_page(pte_t *kpte, unsigned long address,
}
static int split_large_page(pte_t *kpte, unsigned long address)
{
- unsigned long flags, pfn, pfninc = 1;
+ unsigned long pfn, pfninc = 1;
unsigned int i, level;
pte_t *pbase, *tmp;
pgprot_t ref_prot;
@@ -479,7 +477,7 @@ static int split_large_page(pte_t *kpte, unsigned long address)
if (!base)
return -ENOMEM;
- spin_lock_irqsave(&pgd_lock, flags);
+ spin_lock(&pgd_lock);
/*
* Check for races, another CPU might have split this page
* up for us already:
@@ -551,7 +549,7 @@ out_unlock:
*/
if (base)
__free_page(base);
- spin_unlock_irqrestore(&pgd_lock, flags);
+ spin_unlock(&pgd_lock);
@@ -268,12 +265,12 @@ pgd_t *pgd_alloc(struct mm_struct *mm)
* respect to anything walking the pgd_list, so that they
* never see a partially populated pgd.
*/
- spin_lock_irqsave(&pgd_lock, flags);
+ spin_lock(&pgd_lock);
printk(KERN_INFO PREFIX "%s [%s] (%s)
",
diff --git a/drivers/block/cciss_scsi.c b/drivers/block/cciss_scsi.c
index 3315268..ad8e592 100644
--- a/drivers/block/cciss_scsi.c
+++ b/drivers/block/cciss_scsi.c
@@ -747,17 +747,7 @@ complete_scsi_command( CommandList_struct *cp, int timeout, __u32 tag)
{
case CMD_TARGET_STATUS:
/* Pass it up to the upper layers... */
- if( ei->ScsiStatus)
- {
-#if 0
- printk(KERN_WARNING "cciss: cmd %p "
- "has SCSI Status = %x
",
- cp,
- ei->ScsiStatus);
-#endif
- cmd->result |= (ei->ScsiStatus < 1);
- }
- else { /* scsi status is zero??? How??? */
+ if (!ei->ScsiStatus) {
/* Ordinarily, this case should never happen, but there is a bug
in some released firmware revisions that allows it to happen
diff --git a/drivers/block/sx8.c b/drivers/block/sx8.c
index a7c4184..bcbfc20 100644
--- a/drivers/block/sx8.c
+++ b/drivers/block/sx8.c
@@ -1116,7 +1116,7 @@ static inline void carm_handle_resp(struct carm_host *host,
break;
case MISC_GET_FW_VER: {
struct carm_fw_ver *ver = (struct carm_fw_ver *)
- mem + sizeof(struct carm_msg_get_fw_ver);
+ (mem + sizeof(struct carm_msg_get_fw_ver));
if (!error) {
host->fw_ver = le32_to_cpu(ver->version);
host->flags |= (ver->features & FL_FW_VER_MASK);
diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c
index 75185a6..a562761 100644
--- a/drivers/bluetooth/btusb.c
+++ b/drivers/bluetooth/btusb.c
@@ -470,15 +470,10 @@ static int btusb_submit_isoc_urb(struct hci_dev *hdev, gfp_t mem_flags)