Linux 2.6.32.9
Subsystems (49)
I'm announcing the release of the 2.6.32.9 kernel.
All users of the 2.6.32 kernel series should upgrade.
The updated 2.6.32.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-2.6.32.y.git
and can be browsed at the normal kernel.org git web browser:
http://git.kernel.org/?p=linux/kernel/git/stable/linux-2.6.32.y.git;a=summarythanks,
greg k-h
------------
Makefile | 2 arch/sh/include/asm/pgtable_32.h | 5 arch/x86/include/asm/amd_iommu.h | 1 arch/x86/kernel/amd_iommu.c | 12 + arch/x86/kernel/amd_iommu_init.c | 3 arch/x86/kernel/apic/io_apic.c | 1 arch/x86/kernel/cpu/cpufreq/powernow-k8.c | 3 arch/x86/kvm/i8254.c | 3 arch/x86/kvm/x86.c | 7 drivers/acpi/processor_idle.c | 8 + drivers/acpi/scan.c | 3 drivers/ata/ahci.c | 15 + drivers/ata/libata-sff.c | 3 drivers/base/class.c | 2 drivers/block/cciss.c | 3 drivers/char/mem.c | 70 ++++----- drivers/char/tpm/tpm_infineon.c | 79 +++++++--- drivers/char/tty_io.c | 4 drivers/crypto/padlock-sha.c | 23 ++ drivers/dma/ioat/dma_v2.c | 2 drivers/edac/amd64_edac.c | 15 + drivers/gpu/drm/i915/i915_debugfs.c | 30 --- drivers/gpu/drm/i915/i915_drv.h | 13 + drivers/gpu/drm/i915/i915_gem.c | 123 ++++++++++++++-- drivers/gpu/drm/i915/i915_reg.h | 15 + drivers/gpu/drm/i915/i915_suspend.c | 5 drivers/gpu/drm/i915/intel_crt.c | 3 drivers/gpu/drm/i915/intel_display.c | 48 +++++- drivers/gpu/drm/i915/intel_drv.h | 2 drivers/gpu/drm/i915/intel_fb.c | 2 drivers/gpu/drm/i915/intel_i2c.c | 19 ++ drivers/gpu/drm/i915/intel_lvds.c | 21 ++ drivers/gpu/drm/radeon/atom.c | 2 drivers/hwmon/adt7462.c | 2 drivers/hwmon/lm78.c | 25 +-- drivers/hwmon/w83781d.c | 26 +-- drivers/i2c/busses/i2c-tiny-usb.c | 12 - drivers/md/dm-log-userspace-transfer.c | 10 - drivers/md/dm-stripe.c | 2 drivers/md/raid5.c | 11 - drivers/media/dvb/dvb-core/dmxdev.c | 2 drivers/message/fusion/mptscsih.c | 2 drivers/net/wireless/ath/ath9k/xmit.c | 4 drivers/net/wireless/b43/b43.h | 1 drivers/net/wireless/b43/main.c | 13 + drivers/net/wireless/iwlwifi/iwl-core.c | 1 drivers/net/wireless/rtl818x/rtl8187_dev.c | 1 drivers/platform/x86/dell-wmi.c | 8 - drivers/platform/x86/hp-wmi.c | 9 + drivers/platform/x86/wmi.c | 4 drivers/regulator/core.c | 2 drivers/rtc/rtc-fm3130.c | 6 drivers/s390/block/dasd.c | 22 +- drivers/s390/block/dasd_eckd.c | 44 ++--- drivers/s390/block/dasd_fba.c | 10 - drivers/s390/block/dasd_int.h | 10 + drivers/serial/8250.c | 7 drivers/staging/rtl8187se/ieee80211/ieee80211.h | 10 - drivers/staging/rtl8187se/ieee80211/ieee80211_rx.c | 2 drivers/staging/rtl8187se/ieee80211/ieee80211_softmac.c | 14 - drivers/staging/rtl8187se/ieee80211/ieee80211_tx.c | 2 drivers/staging/rtl8187se/r8180_core.c | 10 - drivers/staging/rtl8187se/r8180_wx.c | 2 drivers/usb/core/devio.c | 48 +++--- drivers/usb/host/r8a66597-hcd.c | 37 +++- fs/befs/linuxvfs.c | 1 fs/block_dev.c | 7 fs/cifs/readdir.c | 1 fs/ecryptfs/inode.c | 16 ++ fs/exec.c | 21 ++ fs/fcntl.c | 6 fs/nfs/direct.c | 3 fs/nfs/file.c | 2 fs/nfs/fscache.c | 9 - fs/nfs/mount_clnt.c | 2 fs/nfs/nfs2xdr.c | 2 fs/nfs/nfs4_fs.h | 1 fs/nfs/nfs4proc.c | 26 +++ fs/nfs/nfs4xdr.c | 6 fs/nfs/pagelist.c | 17 +- fs/nfs/super.c | 15 + fs/nfs/write.c | 1 fs/sysfs/inode.c | 47 ++---- include/drm/drm_os_linux.h | 2 include/linux/sched.h | 22 ++ include/net/netns/conntrack.h | 3 include/net/netns/ipv4.h | 1 kernel/futex.c | 30 +++ kernel/time/timekeeping.c | 2 mm/migrate.c | 3 net/core/dst.c | 2 net/core/pktgen.c | 1 net/ipv4/netfilter/arp_tables.c | 4 net/ipv4/netfilter/ip_tables.c | 4 net/ipv4/netfilter/nf_conntrack_l3proto_ipv4.c | 2 net/ipv4/netfilter/nf_conntrack_l3proto_ipv4_compat.c | 4 net/ipv4/netfilter/nf_nat_core.c | 22 +- net/ipv6/netfilter/ip6_tables.c | 4 net/mac80211/ibss.c | 2 net/netfilter/nf_conntrack_core.c | 117 ++++++++------- net/netfilter/nf_conntrack_expect.c | 4 net/netfilter/nf_conntrack_helper.c | 2 net/netfilter/nf_conntrack_netlink.c | 2 net/netfilter/nf_conntrack_standalone.c | 7 sound/pci/ctxfi/ctatc.c | 15 - sound/pci/ctxfi/ctvmem.c | 38 ++-- sound/pci/ctxfi/ctvmem.h | 8 - sound/pci/hda/hda_intel.c | 3 sound/pci/hda/patch_realtek.c | 28 +++ sound/usb/usbaudio.c | 2 110 files changed, 965 insertions(+), 458 deletions(-)
Al Viro (1):
befs: fix leak
Alex Murray (1):
ALSA: hda - Improved MacBook (Pro) 5,1 / 5,2 support
Alexey Dobriyan (2):
netfilter: nf_conntrack: restrict runtime expect hashsize modifications
netfilter: xtables: compat out of scope fix
Anisse Astier (1):
wmi: Free the allocated acpi objects through wmi_get_event_data
Arjan van de Ven (1):
ACPI: fix High cpu temperature with 2.6.32
Benoit Papillault (1):
mac80211: Fix probe request filtering in IBSS mode
Borislav Petkov (1):
amd64_edac: Do not falsely trigger kerneloops
Catalin Marinas (1):
Call flush_dcache_page after PIO data transfers in libata-sff.c
Chris Wilson (1):
drm/i915: Increase fb alignment to 64k
Chuck Lever (1):
NFS: Too many GETATTR and ACCESS calls after direct I/O
Dan Williams (1):
ioat: fix infinite timeout checking in ioat2_quiesce
Daniel Vetter (2):
drm/i915: Update write_domains on active list after flush. drm/i915: add i915_lp_ring_sync helper
Dave Airlie (1):
drm/radeon/kms: use udelay for short delays
David John (1):
drm/i915: Disable SR when more than one pipe is enabled
Dick Hollenbeck (1):
serial: 8250: add serial transmitter fully empty test
Eric Anholt (1):
drm/i915: Fix DDC on some systems by clearing BIOS GMBUS setup.
Eric Dumazet (2):
netfilter: nf_conntrack: per netns nf_conntrack_cachep
dst: call cond_resched() in dst_gc_task()
Eric W. Biederman (1):
sysfs: sysfs_sd_setattr set iattrs unconditionally
Francesco Lavra (1):
V4L/DVB: dvb-core: fix initialization of feeds list in demux filter
George Kadianakis (1):
Staging: fix rtl8187se compilation errors with mac80211
Greg Kroah-Hartman (2):
USB: usbfs: only copy the actual data received Linux 2.6.32.9
Herbert Xu (1):
crypto: padlock-sha - Add import/export support
Jaroslav Kysela (1):
ALSA: ctxfi - fix PTP address initialization
Jason Wang (2):
Export the symbol of getboottime and mmonotonic_to_bootbased
kvmclock: count total_sleep_time when updating guest clock
Jean Delvare (3):
hwmon: (w83781d) Request I/O ports individually for probing
hwmon: (lm78) Request I/O ports individually for probing
i2c-tiny-usb: Fix on big-endian systems
Jeff Layton (1):
cifs: fix length calculation for converted unicode readdir names
Jelle Martijn Kok (1):
rtl8187: Add new device ID
Jesse Barnes (2):
drm/i915: enable self-refresh on 965 drm/i915: handle FBC and self-refresh better
Jiri Slaby (1):
resource: add helpers for fetching rlimits
Jody Bruchon (1):
ALSA: hda-intel: Avoid divide by zero crash
Joerg Roedel (2):
x86/amd-iommu: Fix IOMMU-API initialization for iommu=pt x86/amd-iommu: Fix deassignment of a device from the pt_domain
Jonathan Brassow (1):
dm log: userspace fix overhead_size calcuations
Jun'ichi Nomura (1):
freeze_bdev: don't deactivate successfully frozen MS_RDONLY sb
KAMEZAWA Hiroyuki (1):
devmem: check vmalloc address on kmem read/write
Kashyap, Desai (1):
SCSI: mptfusion : mptscsih_abort return value should be SUCCESS instead of value 0.
Larry Finger (1):
b43: Fix throughput regression
Laurent Pinchart (1):
class: Free the class private data in class_release
Len Brown (1):
dell-wmi, hp-wmi, msi-wmi: check wmi_get_event_data() return value
Linus Torvalds (3):
Fix potential crash with sys_move_pages
Fix race in tty_fasync() properly
USB: usbfs: properly clean up the as structure on error paths
Marcel Selhorst (1):
tpm_infineon: fix suspend/resume handler for pnp_driver
Marcelo Tosatti (1):
KVM: PIT: control word is write-only
Mark Brown (1):
regulator: Fix display of null constraints for regulators
Matt Fleming (1):
sh: Couple kernel and user write page perm bits for CONFIG_X2TLB
Michael Neuling (1):
fs/exec.c: restrict initial stack space expansion to rlimit
Mikael Pettersson (1):
futex_lock_pi() key refcnt fix
NeilBrown (1):
md: fix 'degraded' calculation when starting a reshape.
Nikanth Karthikesan (1):
dm stripe: avoid divide by zero with invalid stripe count
Patrick McHardy (2):
netfilter: nf_conntrack: fix memory corruption with multiple namespaces
netfilter: nf_conntrack: fix hash resizing with namespaces
Paul Mundt (1):
usb: r8a66597-hcd: Flush the D-cache for the pipe-in transfer buffers.
Rafael J. Wysocki (1):
pktgen: Fix freezing problem
Ray Copeland (1):
hwmon: (adt7462) Wrong ADT7462_VOLT_COUNT
Sergey Matyukevich (1):
rtc-fm3130: add missing braces
Stefan Haberland (1):
dasd: remove strings from s390dbf
Stephen M. Cameron (1):
cciss: Make cciss_seq_show handle holes in the h->drv[] array
Sujith (1):
ath9k: Fix sequence numbers for PAE frames
Takashi Iwai (2):
ALSA: hda - use WARN_ON_ONCE() for zero-division detection
ALSA: usb-audio - Avoid Oops after disconnect
Tejun Heo (1):
ahci: add Acer G725 to broken suspend list
Thomas Gleixner (2):
futex: Handle user space corruption gracefully
futex: Handle futex value corruption gracefully
Thomas Renninger (2):
CPUFREQ: Fix use after free of struct powernow_k8_data
ACPI: Add NULL pointer check in acpi_bus_start
Trond Myklebust (8):
NFS: Fix a reference leak in nfs_wb_cancel_page()
NFS: Try to commit unstable writes in nfs_release_page()
NFSv4: Don't allow posix locking against servers that don't support it
NFSv4: Ensure that the NFSv4 locking can recover from stateid errors
NFS: Fix an Oops when truncating a file
NFS: Fix a umount race
NFS: Fix a bug in nfs_fscache_release_page()
NFS: Fix the mapping of the NFSERR_SERVERFAULT error
Tyler Hicks (1):
eCryptfs: Add getattr function
Wey-Yi Guy (1):
iwlwifi: Fix to set correct ht configuration
Wu Fengguang (2):
/dev/mem: introduce size_inside_page()
devmem: fix kmem write bug on memory holes
Yinghai Lu (1):
x86: Re-get cfg_new in case reuse/move irq_desc
Zhao Yakui (3):
drm/i915: Add HP nx9020/SamsungSX20S to ACPI LID quirk list drm/i915: Fix the incorrect DMI string for Samsung SX20S laptop drm/i915: Add MALATA PC-81005 to ACPI LID quirk list
Zhenyu Wang (3):
drm/i915: disable hotplug detect before Ironlake CRT detect drm/i915: remove full registers dump debug
drm/i915: Don't wait interruptible for possible plane buffer flush
Makefile +1 -1
@@ -1,7 +1,7 @@ VERSION = 2 PATCHLEVEL = 6 SUBLEVEL = 32 -EXTRAVERSION = .8 +EXTRAVERSION = .9 NAME = Man-Eating Seals of Antiquity # *DOCUMENTATION*
arch/sh/include/asm/pgtable_32.h +3 -2
@@ -344,7 +344,8 @@ static inline void set_pte(pte_t *ptep, pte_t pte)#define pte_special (pte) ((pte).pte_low & _PAGE_SPECIAL)#ifdef CONFIG_X2TLB -#define pte_write (pte) ((pte).pte_high & _PAGE_EXT_USER_WRITE) +#define pte_write (pte) \ + ((pte).pte_high & (_PAGE_EXT_USER_WRITE | _PAGE_EXT_KERN_WRITE))#else #define pte_write (pte) ((pte).pte_low & _PAGE_RW)#endif
@@ -358,7 +359,7 @@ static inline pte_t pte_##fn(pte_t pte) { pte.pte_##h op; return pte; }* individually toggled (and user permissions are entirely decoupled from * kernel permissions), we attempt to couple them a bit more sanely here. */ -PTE_BIT_FUNC(high, wrprotect, &= ~_PAGE_EXT_USER_WRITE); +PTE_BIT_FUNC(high, wrprotect, &= ~(_PAGE_EXT_USER_WRITE | _PAGE_EXT_KERN_WRITE)); PTE_BIT_FUNC(high, mkwrite, |= _PAGE_EXT_USER_WRITE | _PAGE_EXT_KERN_WRITE); PTE_BIT_FUNC(high, mkhuge, |= _PAGE_SZHUGE);#else
arch/x86/include/asm/amd_iommu.h +1 -0
@@ -32,6 +32,7 @@ extern void amd_iommu_flush_all_domains(void);extern void amd_iommu_flush_all_devices (void );extern void amd_iommu_shutdown (void );extern void amd_iommu_apply_erratum_63 (u16 devid); +extern void amd_iommu_init_api (void );#else static inline int amd_iommu_init (void ) {return -ENODEV ; }static inline void amd_iommu_detect (void ) { }
arch/x86/kernel/amd_iommu.c +8 -4
@@ -1230,9 +1230,10 @@ static void __detach_device(struct protection_domain *domain, u16 devid)/* * If we run in passthrough mode the device must be assigned to the -* passthrough domain if it is detached from any other domain +* passthrough domain if it is detached from any other domain. +* Make sure we can deassign from the pt_domain itself. */ -if (iommu_pass_through) { +if (iommu_pass_through && domain != pt_domain) {struct amd_iommu *iommu = amd_iommu_rlookup_table[devid];__attach_device (iommu, pt_domain, devid); }
@@ -2083,6 +2084,11 @@ static struct dma_map_ops amd_iommu_dma_ops = { .dma_supported = amd_iommu_dma_supported, }; +void __init amd_iommu_init_api (void ) +{ +register_iommu (&amd_iommu_ops); +} +/* * The function which clues the AMD IOMMU driver into dma_ops. */
@@ -2124,8 +2130,6 @@ int __init amd_iommu_init_dma_ops(void)/* Make the driver finally visible to the drivers */ dma_ops = &amd_iommu_dma_ops; -register_iommu (&amd_iommu_ops); -bus_register_notifier (&pci_bus_type, &device_nb);amd_iommu_stats_init ();
arch/x86/kernel/amd_iommu_init.c +3 -0
@@ -1288,9 +1288,12 @@ int __init amd_iommu_init(void) ret =amd_iommu_init_passthrough (); else ret =amd_iommu_init_dma_ops (); +if (ret) goto free; +amd_iommu_init_api (); +enable_iommus ();if (iommu_pass_through)
arch/x86/kernel/apic/io_apic.c +1 -0
@@ -3157,6 +3157,7 @@ unsigned int create_irq_nr(unsigned int irq_want, int node)continue ; desc_new =move_irq_desc (desc_new, node); + cfg_new = desc_new->chip_data;if (__assign_irq_vector (new, cfg_new, apic->target_cpus ()) ==0 ) irq = new;
arch/x86/kernel/cpu/cpufreq/powernow-k8.c +2 -1
@@ -1351,6 +1351,7 @@ static int __devexit powernowk8_cpu_exit(struct cpufreq_policy *pol)kfree (data->powernow_table);kfree (data); +per_cpu (powernow_data, pol->cpu) =NULL ;return 0 ; }
@@ -1370,7 +1371,7 @@ static unsigned int powernowk8_get(unsigned int cpu)int err;if (!data) -return -EINVAL ; +return 0 ;smp_call_function_single (cpu, query_values_on_cpu, &err, true);if (err)
arch/x86/kvm/i8254.c +3 -0
@@ -465,6 +465,9 @@ static int pit_ioport_read(struct kvm_io_device *this,return -EOPNOTSUPP ; addr &=KVM_PIT_CHANNEL_MASK ; +if (addr ==3 ) +return 0 ; + s = &pit_state->channels[addr];mutex_lock (&pit_state->lock);
arch/x86/kvm/x86.c +3 -4
@@ -583,7 +583,7 @@ static void kvm_write_wall_clock(struct kvm *kvm, gpa_t wall_clock) {static int version;struct pvclock_wall_clock wc; -struct timespec now, sys, boot; +struct timespec boot;if (!wall_clock)return ;
@@ -598,9 +598,7 @@ static void kvm_write_wall_clock(struct kvm *kvm, gpa_t wall_clock)* wall clock specified here. guest system time equals host * system time for us, thus we must fill in host boot time here. */ - now =current_kernel_time (); -ktime_get_ts (&sys); - boot =ns_to_timespec (timespec_to_ns (&now) -timespec_to_ns (&sys)); +getboottime (&boot); wc.sec = boot.tv_sec; wc.nsec = boot.tv_nsec;
@@ -675,6 +673,7 @@ static void kvm_write_guest_time(struct kvm_vcpu *v)local_irq_save (flags);kvm_get_msr (v,MSR_IA32_TSC , &vcpu->hv_clock.tsc_timestamp);ktime_get_ts (&ts); +monotonic_to_bootbased (&ts);local_irq_restore (flags);/* With all the info we got, fill in the values */
drivers/acpi/processor_idle.c +8 -0
@@ -110,6 +110,14 @@ static struct dmi_system_id __cpuinitdata processor_power_dmi_table[] = { DMI_MATCH(DMI_BIOS_VENDOR,"Phoenix Technologies LTD"), DMI_MATCH(DMI_BIOS_VERSION,"SHE845M0.86C.0013.D.0302131307")}, (void *)2}, + { set_max_cstate, "Pavilion zv5000", { + DMI_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"), + DMI_MATCH(DMI_PRODUCT_NAME,"Pavilion zv5000 (DS502A#ABA)")}, + (void *)1}, + { set_max_cstate, "Asus L8400B", { + DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK Computer Inc."), + DMI_MATCH(DMI_PRODUCT_NAME,"L8400B series Notebook PC")}, + (void *)1}, {}, };
drivers/acpi/scan.c +3 -0
@@ -1357,6 +1357,9 @@ int acpi_bus_start(struct acpi_device *device) {struct acpi_bus_ops ops; +if (!device) +return -EINVAL ; +memset (&ops,0 ,sizeof (ops)); ops.acpi_op_start =1 ;
drivers/ata/ahci.c +15 -0
@@ -2868,6 +2868,21 @@ static bool ahci_broken_suspend(struct pci_dev *pdev) }, .driver_data = "F.23", /* cutoff BIOS version */ }, +/* +* Acer eMachines G725 has the same problem. BIOS +* V1.03 is known to be broken. V3.04 is known to +* work. Inbetween, there are V1.06, V2.06 and V3.03 +* that we don't have much idea about. For now, +* blacklist anything older than V3.04. +*/ + { + .ident = "G725", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "eMachines"), + DMI_MATCH(DMI_PRODUCT_NAME, "eMachines G725"), + }, + .driver_data = "V3.04", /* cutoff BIOS version */ + }, { } /* terminate list */ }; const struct dmi_system_id *dmi = dmi_first_match(sysids);
drivers/ata/libata-sff.c +3 -0
@@ -893,6 +893,9 @@ static void ata_pio_sector(struct ata_queued_cmd *qc) do_write); } +if (!do_write) +flush_dcache_page (page); + qc->curbytes += qc->sect_size; qc->cursg_ofs += qc->sect_size;
drivers/base/class.c +2 -0
@@ -59,6 +59,8 @@ static void class_release(struct kobject *kobj)else pr_debug ("class '%s' does not have a release() function, " "be careful\n" , class->name); + +kfree (cp); }static struct sysfs_ops class_sysfs_ops = {
drivers/block/cciss.c +3 -0
@@ -339,6 +339,9 @@ static int cciss_seq_show(struct seq_file *seq, void *v)if (*pos > h->highest_lun)return 0 ; +if (drv ==NULL )/* it's possible for h->drv[] to have holes. */ +return 0 ; +if (drv->heads ==0 )return 0 ;
drivers/char/mem.c +36 -34
136 lines not on this page · raw message
drivers/char/tpm/tpm_infineon.c +57 -22
135 lines not on this page · raw message
drivers/char/tty_io.c +3 -1
@@ -1930,8 +1930,10 @@ static int tty_fasync(int fd, struct file *filp, int on) pid =task_pid (current); type =PIDTYPE_PID ; } - retval =__f_setown (filp, pid, type,0 ); +get_pid (pid);spin_unlock_irqrestore (&tty->ctrl_lock, flags); + retval =__f_setown (filp, pid, type,0 ); +put_pid (pid);if (retval) goto out; }else {
drivers/crypto/padlock-sha.c +23 -0
@@ -57,6 +57,23 @@ static int padlock_sha_update(struct shash_desc *desc,return crypto_shash_update (&dctx->fallback, data, length); } +static int padlock_sha_export (struct shash_desc *desc,void *out) +{ +struct padlock_sha_desc *dctx =shash_desc_ctx (desc); + +return crypto_shash_export (&dctx->fallback, out); +} + +static int padlock_sha_import (struct shash_desc *desc,const void *in) +{ +struct padlock_sha_desc *dctx =shash_desc_ctx (desc); +struct padlock_sha_ctx *ctx =crypto_shash_ctx (desc->tfm); + + dctx->fallback.tfm = ctx->fallback; + dctx->fallback.flags = desc->flags &CRYPTO_TFM_REQ_MAY_SLEEP ; +return crypto_shash_import (&dctx->fallback, in); +} +static inline void padlock_output_block (uint32_t *src,uint32_t *dst,size_t count) {
@@ -235,7 +252,10 @@ static struct shash_alg sha1_alg = { .update = padlock_sha_update, .finup = padlock_sha1_finup, .final = padlock_sha1_final, + .export = padlock_sha_export, + .import = padlock_sha_import, .descsize = sizeof(struct padlock_sha_desc), + .statesize = sizeof(struct sha1_state), .base = { .cra_name = "sha1", .cra_driver_name = "sha1-padlock",
@@ -256,7 +276,10 @@ static struct shash_alg sha256_alg = { .update = padlock_sha_update, .finup = padlock_sha256_finup, .final = padlock_sha256_final, + .export = padlock_sha_export, + .import = padlock_sha_import, .descsize = sizeof(struct padlock_sha_desc), + .statesize = sizeof(struct sha256_state), .base = { .cra_name = "sha256", .cra_driver_name = "sha256-padlock",
drivers/dma/ioat/dma_v2.c +1 -1
@@ -249,7 +249,7 @@ int ioat2_quiesce(struct ioat_chan_common *chan, unsigned long tmo)if (is_ioat_active (status) ||is_ioat_idle (status))ioat_suspend (chan);while (is_ioat_active (status) ||is_ioat_idle (status)) { -if (end &&time_after (jiffies, end)) { +if (tmo &&time_after (jiffies, end)) { err = -ETIMEDOUT ;break ; }
drivers/edac/amd64_edac.c +8 -7
@@ -2801,10 +2801,11 @@ static void amd64_restore_ecc_error_reporting(struct amd64_pvt *pvt)* the memory system completely. A command line option allows to force-enable * hardware ECC later in amd64_enable_ecc_error_reporting(). */ -static const char *ecc_warning = -"WARNING: ECC is disabled by BIOS. Module will NOT be loaded.\n" -" Either Enable ECC in the BIOS, or set 'ecc_enable_override'.\n" -" Also, use of the override can cause unknown side effects.\n" ; +static const char *ecc_msg = +"ECC disabled in the BIOS or no ECC capability, module will not load.\n" +" Either enable ECC checking or force module loading by setting " +"'ecc_enable_override'.\n" +" (Note that use of the override may cause unknown side effects.)\n" ;static int amd64_check_ecc_enabled (struct amd64_pvt *pvt) {
@@ -2819,7 +2820,7 @@ static int amd64_check_ecc_enabled(struct amd64_pvt *pvt) ecc_enabled = !!(value &K8_NBCFG_ECC_ENABLE );if (!ecc_enabled) -amd64_printk (KERN_WARNING ,"This node reports that Memory ECC " +amd64_printk (KERN_NOTICE ,"This node reports that Memory ECC " "is currently disabled, set F3x%x[22] (%s).\n" ,K8_NBCFG ,pci_name (pvt->misc_f3_ctl));else
@@ -2827,13 +2828,13 @@ static int amd64_check_ecc_enabled(struct amd64_pvt *pvt) nb_mce_en =amd64_nb_mce_bank_enabled_on_node (pvt->mc_node_id);if (!nb_mce_en) -amd64_printk (KERN_WARNING ,"NB MCE bank disabled, set MSR " +amd64_printk (KERN_NOTICE ,"NB MCE bank disabled, set MSR " "0x%08x[4] on node %d to enable.\n" ,MSR_IA32_MCG_CTL , pvt->mc_node_id);if (!ecc_enabled || !nb_mce_en) {if (!ecc_enable_override) { -amd64_printk (KERN_WARNING ,"%s" , ecc_warning); +amd64_printk (KERN_NOTICE ,"%s" , ecc_msg);return -ENODEV ; } ecc_enable_override =0 ;
drivers/gpu/drm/i915/i915_debugfs.c +0 -30
@@ -384,37 +384,7 @@ out:return 0 ; } -static int i915_registers_info (struct seq_file *m,void *data) { -struct drm_info_node *node = (struct drm_info_node *) m->private; -struct drm_device *dev = node->minor->dev; -drm_i915_private_t *dev_priv = dev->dev_private; -uint32_t reg; - -#define DUMP_RANGE (start, end) \ - for (reg=start; reg < end; reg += 4) \ - seq_printf(m, "%08x\t%08x\n", reg, I915_READ(reg)); - -DUMP_RANGE (0x00000 ,0x00fff );/* VGA registers */ -DUMP_RANGE (0x02000 ,0x02fff );/* instruction, memory, interrupt control registers */ -DUMP_RANGE (0x03000 ,0x031ff );/* FENCE and PPGTT control registers */ -DUMP_RANGE (0x03200 ,0x03fff );/* frame buffer compression registers */ -DUMP_RANGE (0x05000 ,0x05fff );/* I/O control registers */ -DUMP_RANGE (0x06000 ,0x06fff );/* clock control registers */ -DUMP_RANGE (0x07000 ,0x07fff );/* 3D internal debug registers */ -DUMP_RANGE (0x07400 ,0x088ff );/* GPE debug registers */ -DUMP_RANGE (0x0a000 ,0x0afff );/* display palette registers */ -DUMP_RANGE (0x10000 ,0x13fff );/* MMIO MCHBAR */ -DUMP_RANGE (0x30000 ,0x3ffff );/* overlay registers */ -DUMP_RANGE (0x60000 ,0x6ffff );/* display engine pipeline registers */ -DUMP_RANGE (0x70000 ,0x72fff );/* display and cursor registers */ -DUMP_RANGE (0x73000 ,0x73fff );/* performance counters */ - -return 0 ; -} - -static struct drm_info_list i915_debugfs_list[] = { - {"i915_regs" , i915_registers_info,0 }, {"i915_gem_active" , i915_gem_object_list_info,0 , (void *)ACTIVE_LIST }, {"i915_gem_flushing" , i915_gem_object_list_info,0 , (void *)FLUSHING_LIST }, {"i915_gem_inactive" , i915_gem_object_list_info,0 , (void *)INACTIVE_LIST },
drivers/gpu/drm/i915/i915_drv.h +13 -0
@@ -467,6 +467,15 @@ typedef struct drm_i915_private {struct list_head flushing_list;/** +* List of objects currently pending a GPU write flush. +* +* All elements on this list will belong to either the +* active_list or flushing_list, last_rendering_seqno can +* be used to differentiate between the two elements. +*/ +struct list_head gpu_write_list; + +/** * LRU list of objects which are not in the ringbuffer and * are ready to unbind, but are still in the GTT. *
@@ -558,6 +567,8 @@ struct drm_i915_gem_object {/** This object's place on the active/flushing/inactive lists */ struct list_head list; +/** This object's place on GPU write list */ +struct list_head gpu_write_list;/** This object's place on the fenced object LRU */ struct list_head fence_list;
@@ -814,9 +825,11 @@ void i915_gem_cleanup_ringbuffer(struct drm_device *dev);int i915_gem_do_init (struct drm_device *dev,unsigned long start,unsigned long end);int i915_gem_idle (struct drm_device *dev); +int i915_lp_ring_sync (struct drm_device *dev);int i915_gem_fault (struct vm_area_struct *vma,struct vm_fault *vmf);int i915_gem_object_set_to_gtt_domain (struct drm_gem_object *obj,int write); +int i915_gem_object_set_to_display_plane (struct drm_gem_object *obj);int i915_gem_attach_phys_object (struct drm_device *dev,struct drm_gem_object *obj,int id); void i915_gem_detach_phys_object(struct drm_device *dev,
drivers/gpu/drm/i915/i915_gem.c +109 -14
218 lines not on this page · raw message
drivers/gpu/drm/i915/i915_reg.h +15 -0
@@ -329,6 +329,7 @@#define FBC_CTL_PERIODIC (1<<30)#define FBC_CTL_INTERVAL_SHIFT (16)#define FBC_CTL_UNCOMPRESSIBLE (1<<14) +#define FBC_C3_IDLE (1<<13)#define FBC_CTL_STRIDE_SHIFT (5)#define FBC_CTL_FENCENO (1<<0)#define FBC_COMMAND 0x0320c
@@ -405,6 +406,13 @@# define GPIO_DATA_VAL_IN (1 << 12)# define GPIO_DATA_PULLUP_DISABLE (1 << 13) +#define GMBUS0 0x5100 +#define GMBUS1 0x5104 +#define GMBUS2 0x5108 +#define GMBUS3 0x510c +#define GMBUS4 0x5110 +#define GMBUS5 0x5120 +/* * Clock control & power management */
@@ -2153,6 +2161,13 @@#define PCH_GPIOE 0xc5020#define PCH_GPIOF 0xc5024 +#define PCH_GMBUS0 0xc5100 +#define PCH_GMBUS1 0xc5104 +#define PCH_GMBUS2 0xc5108 +#define PCH_GMBUS3 0xc510c +#define PCH_GMBUS4 0xc5110 +#define PCH_GMBUS5 0xc5120 +#define PCH_DPLL_A 0xc6014#define PCH_DPLL_B 0xc6018
drivers/gpu/drm/i915/i915_suspend.c +4 -1
@@ -27,7 +27,7 @@#include "drmP.h" #include "drm.h" #include "i915_drm.h" -#include "i915_drv.h" +#include "intel_drv.h" static bool i915_pipe_enabled (struct drm_device *dev,enum pipe pipe) {
@@ -846,6 +846,9 @@ int i915_restore_state(struct drm_device *dev)for (i =0 ; i <3 ; i++)I915_WRITE (SWF30 + (i <<2 ), dev_priv->saveSWF2[i]); +/* I2C state */ +intel_i2c_reset_gmbus (dev); +return 0 ; }
drivers/gpu/drm/i915/intel_crt.c +3 -0
@@ -185,6 +185,9 @@ static bool intel_igdng_crt_detect_hotplug(struct drm_connector *connector) adpa =I915_READ (PCH_ADPA ); adpa &= ~ADPA_CRT_HOTPLUG_MASK ; +/* disable HPD first */ +I915_WRITE (PCH_ADPA , adpa); + (void )I915_READ (PCH_ADPA ); adpa |= (ADPA_CRT_HOTPLUG_PERIOD_128 | ADPA_CRT_HOTPLUG_WARMUP_10MS |
drivers/gpu/drm/i915/intel_display.c +43 -5
83 lines not on this page · raw message
drivers/gpu/drm/i915/intel_drv.h +2 -0
@@ -134,6 +134,8 @@ void intel_i2c_destroy(struct i2c_adapter *adapter);int intel_ddc_get_modes (struct intel_output *intel_output);extern bool intel_ddc_probe (struct intel_output *intel_output);void intel_i2c_quirk_set (struct drm_device *dev,bool enable); +void intel_i2c_reset_gmbus (struct drm_device *dev); +extern void intel_crt_init (struct drm_device *dev);extern void intel_hdmi_init (struct drm_device *dev,int sdvox_reg);extern bool intel_sdvo_init (struct drm_device *dev,int output_device);
drivers/gpu/drm/i915/intel_fb.c +1 -1
@@ -148,7 +148,7 @@ static int intelfb_create(struct drm_device *dev, uint32_t fb_width,mutex_lock (&dev->struct_mutex); - ret =i915_gem_object_pin (fbo,PAGE_SIZE ); + ret =i915_gem_object_pin (fbo,64 *1024 );if (ret) {DRM_ERROR ("failed to pin fb: %d\n" , ret); goto out_unref;
drivers/gpu/drm/i915/intel_i2c.c +19 -0
@@ -118,6 +118,23 @@ static void set_data(void *data, int state_high)udelay (I2C_RISEFALL_TIME );/* wait for the line to change state */ } +/* Clears the GMBUS setup. Our driver doesn't make use of the GMBUS I2C +* engine, but if the BIOS leaves it enabled, then that can break our use +* of the bit-banging I2C interfaces. This is notably the case with the +* Mac Mini in EFI mode. +*/ +void +intel_i2c_reset_gmbus (struct drm_device *dev) +{ +struct drm_i915_private *dev_priv = dev->dev_private; + +if (IS_IGDNG (dev)) { +I915_WRITE (PCH_GMBUS0 ,0 ); + }else { +I915_WRITE (GMBUS0 ,0 ); + } +} +/** * intel_i2c_create - instantiate an Intel i2c bus using the specified GPIO reg * @dev: DRM device
@@ -168,6 +185,8 @@ struct i2c_adapter *intel_i2c_create(struct drm_device *dev, const u32 reg,if (i2c_bit_add_bus (&chan->adapter)) goto out_free; +intel_i2c_reset_gmbus (dev); +/* JJJ: raise SCL and SDA? */ intel_i2c_quirk_set (dev, true);set_data (chan,1 );
drivers/gpu/drm/i915/intel_lvds.c +21 -0
@@ -602,12 +602,33 @@ static void intel_lvds_mode_set(struct drm_encoder *encoder,/* Some lid devices report incorrect lid status, assume they're connected */ static const struct dmi_system_id bad_lid_status[] = { { + .ident ="Compaq nx9020" , + .matches = { +DMI_MATCH (DMI_SYS_VENDOR ,"Hewlett-Packard" ), +DMI_MATCH (DMI_BOARD_NAME ,"3084" ), + }, + }, + { + .ident ="Samsung SX20S" , + .matches = { +DMI_MATCH (DMI_SYS_VENDOR ,"Samsung Electronics" ), +DMI_MATCH (DMI_BOARD_NAME ,"SX20S" ), + }, + }, + { .ident ="Aspire One" , .matches = {DMI_MATCH (DMI_SYS_VENDOR ,"Acer" ),DMI_MATCH (DMI_PRODUCT_NAME ,"Aspire one" ), }, }, + { + .ident ="PC-81005" , + .matches = { +DMI_MATCH (DMI_SYS_VENDOR ,"MALATA" ), +DMI_MATCH (DMI_PRODUCT_NAME ,"PC-81005" ), + }, + }, { } };
drivers/gpu/drm/radeon/atom.c +1 -1
@@ -607,7 +607,7 @@ static void atom_op_delay(atom_exec_context *ctx, int *ptr, int arg)uint8_t count =U8 ((*ptr)++);SDEBUG (" count: %d\n" , count);if (arg ==ATOM_UNIT_MICROSEC ) -schedule_timeout_uninterruptible (usecs_to_jiffies (count)); +udelay (count);else schedule_timeout_uninterruptible (msecs_to_jiffies (count)); }
drivers/hwmon/adt7462.c +1 -1
@@ -182,7 +182,7 @@ I2C_CLIENT_INSMOD_1(adt7462);* * Some, but not all, of these voltages have low/high limits. */ -#define ADT7462_VOLT_COUNT 12 +#define ADT7462_VOLT_COUNT 13#define ADT7462_VENDOR 0x41#define ADT7462_DEVICE 0x62
drivers/hwmon/lm78.c +12 -13
@@ -870,17 +870,16 @@ static struct lm78_data *lm78_update_device(struct device *dev)static int __init lm78_isa_found (unsigned short address) {int val, save, found =0 ; - -/* We have to request the region in two parts because some -boards declare base+4 to base+7 as a PNP device */ -if (!request_region (address,4 ,"lm78" )) { -pr_debug ("lm78: Failed to request low part of region\n" ); -return 0 ; - } -if (!request_region (address +4 ,4 ,"lm78" )) { -pr_debug ("lm78: Failed to request high part of region\n" ); -release_region (address,4 ); -return 0 ; +int port; + +/* Some boards declare base+0 to base+7 as a PNP device, some base+4 +* to base+7 and some base+5 to base+6. So we better request each port +* individually for the probing phase. */ +for (port = address; port < address +LM78_EXTENT ; port++) { +if (!request_region (port,1 ,"lm78" )) { +pr_debug ("lm78: Failed to request port 0x%x\n" , port); + goto release; + } }#define REALLY_SLOW_IO
@@ -944,8 +943,8 @@ static int __init lm78_isa_found(unsigned short address) val & 0x80 ? "LM79" : "LM78", (int)address); release: -release_region (address +4 ,4 ); -release_region (address,4 ); +for (port--; port >= address; port--) +release_region (port,1 );return found; }
drivers/hwmon/w83781d.c +13 -13
@@ -1818,17 +1818,17 @@ static int __init w83781d_isa_found(unsigned short address) {int val, save, found =0 ; - -/* We have to request the region in two parts because some -boards declare base+4 to base+7 as a PNP device */ -if (!request_region (address,4 ,"w83781d" )) { -pr_debug ("w83781d: Failed to request low part of region\n" ); -return 0 ; - } -if (!request_region (address +4 ,4 ,"w83781d" )) { -pr_debug ("w83781d: Failed to request high part of region\n" ); -release_region (address,4 ); -return 0 ; +int port; + +/* Some boards declare base+0 to base+7 as a PNP device, some base+4 +* to base+7 and some base+5 to base+6. So we better request each port +* individually for the probing phase. */ +for (port = address; port < address +W83781D_EXTENT ; port++) { +if (!request_region (port,1 ,"w83781d" )) { +pr_debug ("w83781d: Failed to request port 0x%x\n" , + port); + goto release; + } }#define REALLY_SLOW_IO
@@ -1902,8 +1902,8 @@ w83781d_isa_found(unsigned short address) val == 0x30 ? "W83782D" : "W83781D", (int)address); release: -release_region (address +4 ,4 ); -release_region (address,4 ); +for (port--; port >= address; port--) +release_region (port,1 );return found; }
drivers/i2c/busses/i2c-tiny-usb.c +6 -6
@@ -13,6 +13,7 @@#include <linux/kernel.h> #include <linux/errno.h> #include <linux/module.h> +#include <linux/types.h> /* include interfaces to usb layer */ #include <linux/usb.h>
@@ -31,8 +32,8 @@#define CMD_I2C_IO_END (1<<1)/* i2c bit delay, default is 10us -> 100kHz */ -static int delay =10 ; -module_param (delay, int,0 ); +static unsigned short delay =10 ; +module_param (delay, ushort,0 );MODULE_PARM_DESC (delay,"bit delay in microseconds, " "e.g. 10 for 100kHz (default is 100kHz)" );
@@ -109,7 +110,7 @@ static int usb_xfer(struct i2c_adapter *adapter, struct i2c_msg *msgs, int num)static u32 usb_func (struct i2c_adapter *adapter) { -u32 func; +__le32 func;/* get functionality from adapter */ if (usb_read(adapter, CMD_GET_FUNC, 0, 0, &func, sizeof(func)) !=
@@ -118,7 +119,7 @@ static u32 usb_func(struct i2c_adapter *adapter)return 0 ; } -return func; +return le32_to_cpu (func); }/* This is the actual algorithm we define */
@@ -216,8 +217,7 @@ static int i2c_tiny_usb_probe(struct usb_interface *interface,"i2c-tiny-usb at bus %03d device %03d" , dev->usb_dev->bus->busnum, dev->usb_dev->devnum); -if (usb_write (&dev->adapter,CMD_SET_DELAY , -cpu_to_le16 (delay),0 ,NULL ,0 ) !=0 ) { +if (usb_write (&dev->adapter,CMD_SET_DELAY , delay,0 ,NULL ,0 ) !=0 ) {dev_err (&dev->adapter.dev,"failure setting delay to %dus\n" , delay); retval = -EIO ;
drivers/md/dm-log-userspace-transfer.c +7 -3
@@ -172,11 +172,15 @@ int dm_consult_userspace(const char *uuid, uint64_t luid, int request_type, {int r =0 ;size_t dummy =0 ; -int overhead_size = -sizeof (struct dm_ulog_request *) +sizeof (struct cn_msg ); +int overhead_size =sizeof (struct dm_ulog_request ) +sizeof (struct cn_msg );struct dm_ulog_request *tfr = prealloced_ulog_tfr;struct receiving_pkg pkg; +/* +* Given the space needed to hold the 'struct cn_msg' and +* 'struct dm_ulog_request' - do we have enough payload +* space remaining? +*/ if (data_size > (DM_ULOG_PREALLOCED_SIZE - overhead_size)) {DMINFO ("Size of tfr exceeds preallocated size" );return -EINVAL ;
@@ -191,7 +195,7 @@ resend:*/ mutex_lock (&dm_ulog_lock); -memset (tfr,0 ,DM_ULOG_PREALLOCED_SIZE - overhead_size); +memset (tfr,0 ,DM_ULOG_PREALLOCED_SIZE -sizeof (struct cn_msg ));memcpy (tfr->uuid, uuid,DM_UUID_LEN ); tfr->luid = luid; tfr->seq = dm_ulog_seq++;
drivers/md/dm-stripe.c +1 -1
@@ -110,7 +110,7 @@ static int stripe_ctr(struct dm_target *ti, unsigned int argc, char **argv) } stripes =simple_strtoul (argv[0 ], &end,10 ); -if (*end) { +if (!stripes || *end) { ti->error ="Invalid stripe count" ;return -EINVAL ; }
drivers/md/raid5.c +7 -4
@@ -5432,11 +5432,11 @@ static int raid5_start_reshape(mddev_t *mddev) !test_bit(Faulty, &rdev->flags)) {if (raid5_add_disk (mddev, rdev) ==0 ) {char nm[20 ]; -if (rdev->raid_disk >= conf->previous_raid_disks) +if (rdev->raid_disk >= conf->previous_raid_disks) {set_bit (In_sync, &rdev->flags); -else + added_devices++; + }else rdev->recovery_offset =0 ; - added_devices++;sprintf (nm,"rd%d" , rdev->raid_disk);if (sysfs_create_link (&mddev->kobj, &rdev->kobj, nm))
@@ -5448,9 +5448,12 @@ static int raid5_start_reshape(mddev_t *mddev)break ; } +/* When a reshape changes the number of devices, ->degraded +* is measured against the large of the pre and post number of +* devices.*/ if (mddev->delta_disks >0 ) {spin_lock_irqsave (&conf->device_lock, flags); - mddev->degraded = (conf->raid_disks - conf->previous_raid_disks) + mddev->degraded += (conf->raid_disks - conf->previous_raid_disks) - added_devices;spin_unlock_irqrestore (&conf->device_lock, flags); }
drivers/media/dvb/dvb-core/dmxdev.c +1 -1
@@ -761,7 +761,6 @@ static int dvb_demux_open(struct inode *inode, struct file *file)dvb_ringbuffer_init (&dmxdevfilter->buffer,NULL ,8192 ); dmxdevfilter->type =DMXDEV_TYPE_NONE ;dvb_dmxdev_filter_state_set (dmxdevfilter,DMXDEV_STATE_ALLOCATED ); -INIT_LIST_HEAD (&dmxdevfilter->feed.ts);init_timer (&dmxdevfilter->timer); dvbdev->users++;
@@ -887,6 +886,7 @@ static int dvb_dmxdev_pes_filter_set(struct dmxdev *dmxdev, dmxdevfilter->type =DMXDEV_TYPE_PES ;memcpy (&dmxdevfilter->params, params,sizeof (struct dmx_pes_filter_params )); +INIT_LIST_HEAD (&dmxdevfilter->feed.ts);dvb_dmxdev_filter_state_set (dmxdevfilter,DMXDEV_STATE_SET );
drivers/message/fusion/mptscsih.c +1 -1
@@ -1720,7 +1720,7 @@ mptscsih_abort(struct scsi_cmnd * SCpnt)dtmprintk (ioc,printk (MYIOC_s_DEBUG_FMT"task abort: " "Command not in the active list! (sc=%p)\n" , ioc->name, SCpnt)); - retval =0 ; + retval =SUCCESS ; goto out; }
drivers/net/wireless/ath/ath9k/xmit.c +2 -2
@@ -1563,7 +1563,7 @@ static int ath_tx_setup_buffer(struct ieee80211_hw *hw, struct ath_buf *bf, bf->bf_frmlen = skb->len +FCS_LEN - (hdrlen &3 ); -if (conf_is_ht (&sc->hw->conf) && !is_pae (skb)) +if (conf_is_ht (&sc->hw->conf)) bf->bf_state.bf_type |=BUF_HT ; bf->bf_flags =setup_tx_flags (sc, skb, txctl->txq);
@@ -1648,7 +1648,7 @@ static void ath_tx_start_dma(struct ath_softc *sc, struct ath_buf *bf, goto tx_done; } -if (tx_info->flags &IEEE80211_TX_CTL_AMPDU ) { +if ((tx_info->flags &IEEE80211_TX_CTL_AMPDU ) && !is_pae (skb)) {/* * Try aggregation if it's a unicast data frame * and the destination is HT capable.
drivers/net/wireless/b43/b43.h +1 -0
@@ -117,6 +117,7 @@#define B43_MMIO_TSF_2 0x636/* core rev < 3 only */ #define B43_MMIO_TSF_3 0x638/* core rev < 3 only */ #define B43_MMIO_RNG 0x65A +#define B43_MMIO_IFSSLOT 0x684/* Interframe slot time */ #define B43_MMIO_IFSCTL 0x688/* Interframe space control */ #define B43_MMIO_IFSCTL_USE_EDCF 0x0004#define B43_MMIO_POWERUP_DELAY 0x6A8
drivers/net/wireless/b43/main.c +10 -3
@@ -628,10 +628,17 @@ static void b43_upload_card_macaddress(struct b43_wldev *dev)static void b43_set_slot_time (struct b43_wldev *dev,u16 slot_time) {/* slot_time is in usec. */ -if (dev->phy.type !=B43_PHYTYPE_G ) +/* This test used to exit for all but a G PHY. */ +if (b43_current_band (dev->wl) ==IEEE80211_BAND_5GHZ )return ; -b43_write16 (dev,0x684 ,510 + slot_time); -b43_shm_write16 (dev,B43_SHM_SHARED ,0x0010 , slot_time); +b43_write16 (dev,B43_MMIO_IFSSLOT ,510 + slot_time); +/* Shared memory location 0x0010 is the slot time and should be +* set to slot_time; however, this register is initially 0 and changing +* the value adversely affects the transmit rate for BCM4311 +* devices. Until this behavior is unterstood, delete this step +* +* b43_shm_write16(dev, B43_SHM_SHARED, 0x0010, slot_time); +*/ }static void b43_short_slot_timing_enable (struct b43_wldev *dev)
drivers/net/wireless/iwlwifi/iwl-core.c +1 -0
@@ -2645,6 +2645,7 @@ int iwl_mac_config(struct ieee80211_hw *hw, u32 changed)if ((le16_to_cpu (priv->staging_rxon.channel) != ch)) priv->staging_rxon.flags =0 ; +iwl_set_rxon_ht (priv, ht_conf);iwl_set_rxon_channel (priv, conf->channel);iwl_set_flags_for_band (priv, conf->channel->band);
drivers/net/wireless/rtl818x/rtl8187_dev.c +1 -0
@@ -65,6 +65,7 @@ static struct usb_device_id rtl8187_table[] __devinitdata = {/* Sitecom */ {USB_DEVICE(0x0df6, 0x000d), .driver_info = DEVICE_RTL8187}, {USB_DEVICE(0x0df6, 0x0028), .driver_info = DEVICE_RTL8187B}, + {USB_DEVICE(0x0df6, 0x0029), .driver_info = DEVICE_RTL8187B}, /* Sphairon Access Systems GmbH */ {USB_DEVICE(0x114B, 0x0150), .driver_info = DEVICE_RTL8187},/* Dick Smith Electronics */
drivers/platform/x86/dell-wmi.c +7 -1
@@ -158,8 +158,13 @@ static void dell_wmi_notify(u32 value, void *context)struct acpi_buffer response = {ACPI_ALLOCATE_BUFFER ,NULL };static struct key_entry *key;union acpi_object *obj; +acpi_status status; -wmi_get_event_data (value, &response); + status =wmi_get_event_data (value, &response); +if (status !=AE_OK ) { +printk (KERN_INFO "dell-wmi: bad event status 0x%x\n" , status); +return ; + } obj = (union acpi_object *)response.pointer;
@@ -180,6 +185,7 @@ static void dell_wmi_notify(u32 value, void *context)printk (KERN_INFO "dell-wmi: Unknown key %x pressed\n" , buffer[1 ] &0xFFFF ); } +kfree (obj); }static int __init dell_wmi_input_setup (void )
drivers/platform/x86/hp-wmi.c +8 -1
@@ -334,8 +334,13 @@ static void hp_wmi_notify(u32 value, void *context)struct acpi_buffer response = {ACPI_ALLOCATE_BUFFER ,NULL };static struct key_entry *key;union acpi_object *obj; +acpi_status status; -wmi_get_event_data (value, &response); + status =wmi_get_event_data (value, &response); +if (status !=AE_OK ) { +printk (KERN_INFO "hp-wmi: bad event status 0x%x\n" , status); +return ; + } obj = (union acpi_object *)response.pointer;
@@ -377,6 +382,8 @@ static void hp_wmi_notify(u32 value, void *context) eventcode); }else printk (KERN_INFO "HP WMI: Unknown response received\n" ); + +kfree (obj); }static int __init hp_wmi_input_setup (void )
drivers/platform/x86/wmi.c +2 -2
@@ -510,8 +510,8 @@ EXPORT_SYMBOL_GPL(wmi_remove_notify_handler);/** * wmi_get_event_data - Get WMI data associated with an event * -* @event - Event to find -* &out - Buffer to hold event data +* @event: Event to find +* @out: Buffer to hold event data. out->pointer should be freed with kfree() * * Returns extra data associated with an event in WMI. */
drivers/regulator/core.c +1 -1
@@ -640,7 +640,7 @@ static int suspend_prepare(struct regulator_dev *rdev, suspend_state_t state)static void print_constraints (struct regulator_dev *rdev) {struct regulation_constraints *constraints = rdev->constraints; -char buf[80 ]; +char buf[80 ] ="" ;int count;if (rdev->desc->type ==REGULATOR_VOLTAGE ) {
drivers/rtc/rtc-fm3130.c +4 -2
@@ -376,20 +376,22 @@ static int __devinit fm3130_probe(struct i2c_client *client, }/* Disabling calibration mode */ -if (fm3130->regs[FM3130_RTC_CONTROL ] &FM3130_RTC_CONTROL_BIT_CAL ) +if (fm3130->regs[FM3130_RTC_CONTROL ] &FM3130_RTC_CONTROL_BIT_CAL ) {i2c_smbus_write_byte_data (client,FM3130_RTC_CONTROL , fm3130->regs[FM3130_RTC_CONTROL ] & ~(FM3130_RTC_CONTROL_BIT_CAL ));dev_warn (&client->dev,"Disabling calibration mode!\n" ); + }/* Disabling read and write modes */ if (fm3130->regs[FM3130_RTC_CONTROL ] &FM3130_RTC_CONTROL_BIT_WRITE || - fm3130->regs[FM3130_RTC_CONTROL ] &FM3130_RTC_CONTROL_BIT_READ ) + fm3130->regs[FM3130_RTC_CONTROL ] &FM3130_RTC_CONTROL_BIT_READ ) {i2c_smbus_write_byte_data (client,FM3130_RTC_CONTROL , fm3130->regs[FM3130_RTC_CONTROL ] & ~(FM3130_RTC_CONTROL_BIT_READ |FM3130_RTC_CONTROL_BIT_WRITE ));dev_warn (&client->dev,"Disabling READ or WRITE mode!\n" ); + }/* oscillator off? turn it on, so clock can tick. */ if (fm3130->regs[FM3130_CAL_CONTROL ] & FM3130_CAL_CONTROL_BIT_nOSCEN)
drivers/s390/block/dasd.c +11 -11
@@ -994,10 +994,9 @@ static void dasd_handle_killed_request(struct ccw_device *cdev,return ; cqr = (struct dasd_ccw_req *) intparm;if (cqr->status !=DASD_CQR_IN_IO ) { -DBF_EVENT (DBF_DEBUG , -"invalid status in handle_killed_request: " -"bus_id %s, status %02x" , -dev_name (&cdev->dev), cqr->status); +DBF_EVENT_DEVID (DBF_DEBUG , cdev, +"invalid status in handle_killed_request: " +"%02x" , cqr->status);return ; }
@@ -1045,12 +1044,13 @@ void dasd_int_handler(struct ccw_device *cdev, unsigned long intparm,case -EIO :break ;case -ETIMEDOUT : -DBF_EVENT (DBF_WARNING ,"%s(%s): request timed out\n" , - __func__,dev_name (&cdev->dev)); +DBF_EVENT_DEVID (DBF_WARNING , cdev,"%s: " +"request timed out\n" , __func__);break ;default : -DBF_EVENT (DBF_WARNING ,"%s(%s): unknown error %ld\n" , - __func__,dev_name (&cdev->dev),PTR_ERR (irb)); +DBF_EVENT_DEVID (DBF_WARNING , cdev,"%s: " +"unknown error %ld\n" , __func__, +PTR_ERR (irb)); }dasd_handle_killed_request (cdev, intparm);return ;
@@ -2217,9 +2217,9 @@ int dasd_generic_probe(struct ccw_device *cdev, } ret =dasd_add_sysfs_files (cdev);if (ret) { -DBF_EVENT (DBF_WARNING , -"dasd_generic_probe: could not add sysfs entries " -"for %s\n" ,dev_name (&cdev->dev)); +DBF_EVENT_DEVID (DBF_WARNING , cdev,"%s" , +"dasd_generic_probe: could not add " +"sysfs entries" );return ret; } cdev->handler = &dasd_int_handler;
drivers/s390/block/dasd_eckd.c +19 -25
90 lines not on this page · raw message
drivers/s390/block/dasd_fba.c +4 -6
@@ -141,9 +141,8 @@ dasd_fba_check_characteristics(struct dasd_device *device) } block =dasd_alloc_block ();if (IS_ERR (block)) { -DBF_EVENT (DBF_WARNING ,"could not allocate dasd block " -"structure for device: %s" , -dev_name (&device->cdev->dev)); +DBF_EVENT_DEVID (DBF_WARNING , cdev,"%s" ,"could not allocate " +"dasd block structure" ); device->private =NULL ;kfree (private);return PTR_ERR (block);
@@ -155,9 +154,8 @@ dasd_fba_check_characteristics(struct dasd_device *device) rc =dasd_generic_read_dev_chars (device,DASD_FBA_MAGIC , &private->rdc_data,32 );if (rc) { -DBF_EVENT (DBF_WARNING ,"Read device characteristics returned " -"error %d for device: %s" , - rc,dev_name (&device->cdev->dev)); +DBF_EVENT_DEVID (DBF_WARNING , cdev,"Read device " +"characteristics returned error %d" , rc); device->block =NULL ;dasd_free_block (block); device->private =NULL ;
drivers/s390/block/dasd_int.h +10 -0
@@ -108,6 +108,16 @@ do { \ d_data); \ }while (0 ) +#define DBF_EVENT_DEVID(d_level, d_cdev, d_str, d_data...) \ +do { \ +struct ccw_dev_id __dev_id; \ +ccw_device_get_id (d_cdev, &__dev_id); \ +debug_sprintf_event (dasd_debug_area, \ + d_level, \ +"0.%x.%04x " d_str"\n" , \ + __dev_id.ssid, __dev_id.devno, d_data); \ +} while (0) + #define DBF_EXC(d_level, d_str, d_data...)\ do { \ debug_sprintf_exception(dasd_debug_area, \
drivers/serial/8250.c +4 -3
@@ -83,6 +83,9 @@ static unsigned int skip_txen_test; /* force skip of txen test at init time */#define PASS_LIMIT 256 +#define BOTH_EMPTY (UART_LSR_TEMT | UART_LSR_THRE) + +/* * We default to IRQ0 for the "no irq" hack. Some * machine types want others as well - they're free
@@ -1792,7 +1795,7 @@ static unsigned int serial8250_tx_empty(struct uart_port *port) up->lsr_saved_flags |= lsr &LSR_SAVE_FLAGS ;spin_unlock_irqrestore (&up->port.lock, flags); -return lsr &UART_LSR_TEMT ?TIOCSER_TEMT :0 ; +return (lsr &BOTH_EMPTY ) ==BOTH_EMPTY ?TIOCSER_TEMT :0 ; }static unsigned int serial8250_get_mctrl (struct uart_port *port)
@@ -1850,8 +1853,6 @@ static void serial8250_break_ctl(struct uart_port *port, int break_state)spin_unlock_irqrestore (&up->port.lock, flags); } -#define BOTH_EMPTY (UART_LSR_TEMT | UART_LSR_THRE) -/* * Wait for transmitter & holding register to empty */
drivers/staging/rtl8187se/ieee80211/ieee80211.h +5 -5
@@ -1318,13 +1318,13 @@ extern int ieee80211_encrypt_fragment(struct sk_buff *frag, int hdr_len); -extern int ieee80211_xmit (struct sk_buff *skb, +extern int ieee80211_rtl_xmit (struct sk_buff *skb,struct net_device *dev);extern void ieee80211_txb_free (struct ieee80211_txb *);/* ieee80211_rx.c */ -extern int ieee80211_rx (struct ieee80211_device *ieee,struct sk_buff *skb, +extern int ieee80211_rtl_rx (struct ieee80211_device *ieee,struct sk_buff *skb,struct ieee80211_rx_stats *rx_stats); extern void ieee80211_rx_mgt(struct ieee80211_device *ieee, struct ieee80211_hdr_4addr *header,
@@ -1376,8 +1376,8 @@ extern void ieee80211_stop_protocol(struct ieee80211_device *ieee);extern void ieee80211_softmac_start_protocol (struct ieee80211_device *ieee);extern void ieee80211_softmac_stop_protocol (struct ieee80211_device *ieee);extern void ieee80211_reset_queue (struct ieee80211_device *ieee); -extern void ieee80211_wake_queue (struct ieee80211_device *ieee); -extern void ieee80211_stop_queue (struct ieee80211_device *ieee); +extern void ieee80211_rtl_wake_queue (struct ieee80211_device *ieee); +extern void ieee80211_rtl_stop_queue (struct ieee80211_device *ieee);extern struct sk_buff *ieee80211_get_beacon (struct ieee80211_device *ieee);extern void ieee80211_start_send_beacons (struct ieee80211_device *ieee);extern void ieee80211_stop_send_beacons (struct ieee80211_device *ieee);
@@ -1385,7 +1385,7 @@ extern int ieee80211_wpa_supplicant_ioctl(struct ieee80211_device *ieee, structextern void notify_wx_assoc_event (struct ieee80211_device *ieee);extern void ieee80211_ps_tx_ack (struct ieee80211_device *ieee,short success);extern void SendDisassociation (struct ieee80211_device *ieee,u8 * asSta,u8 asRsn); -extern void ieee80211_start_scan (struct ieee80211_device *ieee); +extern void ieee80211_rtl_start_scan (struct ieee80211_device *ieee);//Add for RF power on power off by lizhaoming 080512 extern void SendDisassociation(struct ieee80211_device *ieee,
drivers/staging/rtl8187se/ieee80211/ieee80211_rx.c +1 -1
@@ -470,7 +470,7 @@ drop:/* All received frames are sent to this function. @skb contains the frame in * IEEE 802.11 format, i.e., in the format it was sent over air. * This function is called only as a tasklet (software IRQ). */ -int ieee80211_rx (struct ieee80211_device *ieee,struct sk_buff *skb, +int ieee80211_rtl_rx (struct ieee80211_device *ieee,struct sk_buff *skb,struct ieee80211_rx_stats *rx_stats) {struct net_device *dev = ieee->dev;
drivers/staging/rtl8187se/ieee80211/ieee80211_softmac.c +7 -7
@@ -689,7 +689,7 @@ void ieee80211_stop_scan(struct ieee80211_device *ieee) }/* called with ieee->lock held */ -void ieee80211_start_scan (struct ieee80211_device *ieee) +void ieee80211_rtl_start_scan (struct ieee80211_device *ieee) {if (IS_DOT11D_ENABLE (ieee) ) {
@@ -1196,7 +1196,7 @@ void ieee80211_associate_step1(struct ieee80211_device *ieee) } } -void ieee80211_auth_challenge (struct ieee80211_device *ieee,u8 *challenge,int chlen) +void ieee80211_rtl_auth_challenge (struct ieee80211_device *ieee,u8 *challenge,int chlen) {u8 *c;struct sk_buff *skb;
@@ -1898,7 +1898,7 @@ associate_complete:ieee80211_associate_step2 (ieee); }else { -ieee80211_auth_challenge (ieee, challenge, chlen); +ieee80211_rtl_auth_challenge (ieee, challenge, chlen); } }else { ieee->softmac_stats.rx_auth_rs_err++;
@@ -2047,7 +2047,7 @@ void ieee80211_reset_queue(struct ieee80211_device *ieee) } -void ieee80211_wake_queue (struct ieee80211_device *ieee) +void ieee80211_rtl_wake_queue (struct ieee80211_device *ieee) {unsigned long flags;
@@ -2089,7 +2089,7 @@ exit : } -void ieee80211_stop_queue (struct ieee80211_device *ieee) +void ieee80211_rtl_stop_queue (struct ieee80211_device *ieee) {//unsigned long flags; //spin_lock_irqsave(&ieee->lock,flags);
@@ -2301,7 +2301,7 @@ void ieee80211_start_bss(struct ieee80211_device *ieee)//#else if (ieee->state ==IEEE80211_NOLINK ){ ieee->actscanning = true; -ieee80211_start_scan (ieee); +ieee80211_rtl_start_scan (ieee); }//#endif spin_unlock_irqrestore (&ieee->lock, flags);
@@ -2357,7 +2357,7 @@ void ieee80211_associate_retry_wq(struct work_struct *work)if (ieee->state ==IEEE80211_NOLINK ){ ieee->beinretry = false; ieee->actscanning = true; -ieee80211_start_scan (ieee); +ieee80211_rtl_start_scan (ieee); }//YJ,add,080828, notify os here if (ieee->state ==IEEE80211_NOLINK )
drivers/staging/rtl8187se/ieee80211/ieee80211_tx.c +1 -1
@@ -305,7 +305,7 @@ ieee80211_classify(struct sk_buff *skb, struct ieee80211_network *network) }/* SKBs are added to the ieee->tx_queue. */ -int ieee80211_xmit (struct sk_buff *skb, +int ieee80211_rtl_xmit (struct sk_buff *skb,struct net_device *dev) {struct ieee80211_device *ieee =netdev_priv (dev);
drivers/staging/rtl8187se/r8180_core.c +5 -5
@@ -1830,7 +1830,7 @@ void rtl8180_rx(struct net_device *dev)if (priv->rx_skb->len >4 )skb_trim (priv->rx_skb,priv->rx_skb->len-4 );#ifndef RX_DONT_PASS_UL -if (!ieee80211_rx (priv->ieee80211, +if (!ieee80211_rtl_rx (priv->ieee80211, priv->rx_skb, &stats)){#endif // RX_DONT_PASS_UL
@@ -1936,11 +1936,11 @@ rate)if (!check_nic_enought_desc (dev, priority)){DMESGW ("Error: no descriptor left by previous TX (avail %d) " ,get_curr_tx_free_desc (dev, priority)); -ieee80211_stop_queue (priv->ieee80211); +ieee80211_rtl_stop_queue (priv->ieee80211); }rtl8180_tx (dev, skb->data, skb->len, priority, morefrag,0 ,rate);if (!check_nic_enought_desc (dev, priority)) -ieee80211_stop_queue (priv->ieee80211); +ieee80211_rtl_stop_queue (priv->ieee80211);spin_unlock_irqrestore (&priv->tx_lock,flags); }
@@ -3846,7 +3846,7 @@ static const struct net_device_ops rtl8180_netdev_ops = { .ndo_set_mac_address = r8180_set_mac_adr, .ndo_validate_addr = eth_validate_addr, .ndo_change_mtu = eth_change_mtu, - .ndo_start_xmit = ieee80211_xmit, + .ndo_start_xmit = ieee80211_rtl_xmit, }; static int __devinit rtl8180_pci_probe(struct pci_dev *pdev,
@@ -4066,7 +4066,7 @@ void rtl8180_try_wake_queue(struct net_device *dev, int pri)spin_unlock_irqrestore (&priv->tx_lock,flags);if (enough_desc) -ieee80211_wake_queue (priv->ieee80211); +ieee80211_rtl_wake_queue (priv->ieee80211); }void rtl8180_tx_isr (struct net_device *dev,int pri,short error)
drivers/staging/rtl8187se/r8180_wx.c +1 -1
@@ -377,7 +377,7 @@ static int r8180_wx_set_scan(struct net_device *dev, struct iw_request_info *a,// queue_work(priv->ieee80211->wq, &priv->ieee80211->wx_sync_scan_wq); //printk("start scan============================>\n"); ieee80211_softmac_ips_scan_syncro (priv->ieee80211); -//ieee80211_start_scan(priv->ieee80211); +//ieee80211_rtl_start_scan(priv->ieee80211); /* intentionally forget to up sem */ // up(&priv->ieee80211->wx_sem); ret =0 ;
drivers/usb/core/devio.c +30 -18
107 lines not on this page · raw message
drivers/usb/host/r8a66597-hcd.c +25 -12
@@ -35,7 +35,9 @@#include <linux/usb.h> #include <linux/platform_device.h> #include <linux/io.h> +#include <linux/mm.h> #include <linux/irq.h> +#include <asm/cacheflush.h> #include "../core/hcd.h" #include "r8a66597.h"
@@ -820,6 +822,26 @@ static void enable_r8a66597_pipe(struct r8a66597 *r8a66597, struct urb *urb,enable_r8a66597_pipe_dma (r8a66597, dev, pipe, urb); } +static void r8a66597_urb_done (struct r8a66597 *r8a66597,struct urb *urb, +int status) +__releases(r8a66597->lock) +__acquires(r8a66597->lock) +{ +if (usb_pipein (urb->pipe) &&usb_pipetype (urb->pipe) !=PIPE_CONTROL ) { +void *ptr; + +for (ptr = urb->transfer_buffer; + ptr < urb->transfer_buffer + urb->transfer_buffer_length; + ptr +=PAGE_SIZE ) +flush_dcache_page (virt_to_page (ptr)); + } + +usb_hcd_unlink_urb_from_ep (r8a66597_to_hcd (r8a66597), urb); +spin_unlock (&r8a66597->lock); +usb_hcd_giveback_urb (r8a66597_to_hcd (r8a66597), urb, status); +spin_lock (&r8a66597->lock); +} +/* this function must be called with interrupt disabled */ static void force_dequeue (struct r8a66597 *r8a66597,u16 pipenum,u16 address) {
@@ -840,15 +862,9 @@ static void force_dequeue(struct r8a66597 *r8a66597, u16 pipenum, u16 address)list_del (&td->queue);kfree (td); -if (urb) { -usb_hcd_unlink_urb_from_ep (r8a66597_to_hcd (r8a66597), - urb); +if (urb) +r8a66597_urb_done (r8a66597, urb, -ENODEV ); -spin_unlock (&r8a66597->lock); -usb_hcd_giveback_urb (r8a66597_to_hcd (r8a66597), urb, - -ENODEV ); -spin_lock (&r8a66597->lock); - }break ; } }
@@ -1285,10 +1301,7 @@ __releases(r8a66597->lock) __acquires(r8a66597->lock)if (usb_pipeisoc (urb->pipe)) urb->start_frame =r8a66597_get_frame (hcd); -usb_hcd_unlink_urb_from_ep (r8a66597_to_hcd (r8a66597), urb); -spin_unlock (&r8a66597->lock); -usb_hcd_giveback_urb (hcd, urb, status); -spin_lock (&r8a66597->lock); +r8a66597_urb_done (r8a66597, urb, status); }if (restart) {
fs/befs/linuxvfs.c +1 -0
@@ -873,6 +873,7 @@ befs_fill_super(struct super_block *sb, void *data, int silent)brelse (bh); unacquire_priv_sbp: +kfree (befs_sb->mount_opts.iocharset);kfree (sb->s_fs_info); unacquire_none:
fs/block_dev.c +4 -3
@@ -246,7 +246,8 @@ struct super_block *freeze_bdev(struct block_device *bdev)if (!sb) goto out;if (sb->s_flags &MS_RDONLY ) { -deactivate_locked_super (sb); + sb->s_frozen =SB_FREEZE_TRANS ; +up_write (&sb->s_umount);mutex_unlock (&bdev->bd_fsfreeze_mutex);return sb; }
@@ -307,7 +308,7 @@ int thaw_bdev(struct block_device *bdev, struct super_block *sb)BUG_ON (sb->s_bdev != bdev);down_write (&sb->s_umount);if (sb->s_flags &MS_RDONLY ) - goto out_deactivate; + goto out_unfrozen;if (sb->s_op->unfreeze_fs) { error = sb->s_op->unfreeze_fs (sb);
@@ -321,11 +322,11 @@ int thaw_bdev(struct block_device *bdev, struct super_block *sb) } } +out_unfrozen: sb->s_frozen =SB_UNFROZEN ;smp_wmb ();wake_up (&sb->s_wait_unfrozen); -out_deactivate:if (sb)deactivate_locked_super (sb); out_unlock:
fs/cifs/readdir.c +1 -0
@@ -666,6 +666,7 @@ static int cifs_get_name_from_search_buf(struct qstr *pqst,min (len, max_len), nlt, cifs_sb->mnt_cifs_flags & CIFS_MOUNT_MAP_SPECIAL_CHR); + pqst->len -=nls_nullsize (nlt); }else { pqst->name = filename; pqst->len = len;
fs/ecryptfs/inode.c +16 -0
@@ -971,6 +971,21 @@ out:return rc; } +int ecryptfs_getattr (struct vfsmount *mnt,struct dentry *dentry, +struct kstat *stat) +{ +struct kstat lower_stat; +int rc; + + rc =vfs_getattr (ecryptfs_dentry_to_lower_mnt (dentry), +ecryptfs_dentry_to_lower (dentry), &lower_stat); +if (!rc) { +generic_fillattr (dentry->d_inode, stat); + stat->blocks = lower_stat.blocks; + } +return rc; +} +int ecryptfs_setxattr (struct dentry *dentry,const char *name,const void *value,size_t size,int flags)
@@ -1100,6 +1115,7 @@ const struct inode_operations ecryptfs_dir_iops = {const struct inode_operations ecryptfs_main_iops = { .permission = ecryptfs_permission, .setattr = ecryptfs_setattr, + .getattr = ecryptfs_getattr, .setxattr = ecryptfs_setxattr, .getxattr = ecryptfs_getxattr, .listxattr = ecryptfs_listxattr,
fs/exec.c +19 -2
@@ -572,6 +572,9 @@ int setup_arg_pages(struct linux_binprm *bprm,struct vm_area_struct *prev =NULL ;unsigned long vm_flags;unsigned long stack_base; +unsigned long stack_size; +unsigned long stack_expand; +unsigned long rlim_stack;#ifdef CONFIG_STACK_GROWSUP /* Limit stack size to 1GB */
@@ -628,10 +631,24 @@ int setup_arg_pages(struct linux_binprm *bprm, goto out_unlock; } + stack_expand =EXTRA_STACK_VM_PAGES *PAGE_SIZE ; + stack_size = vma->vm_end - vma->vm_start; +/* +* Align this down to a page boundary as expand_stack +* will align it up. +*/ + rlim_stack =rlimit (RLIMIT_STACK ) &PAGE_MASK ; + rlim_stack =min (rlim_stack, stack_size);#ifdef CONFIG_STACK_GROWSUP - stack_base = vma->vm_end +EXTRA_STACK_VM_PAGES *PAGE_SIZE ; +if (stack_size + stack_expand > rlim_stack) + stack_base = vma->vm_start + rlim_stack; +else + stack_base = vma->vm_end + stack_expand;#else - stack_base = vma->vm_start -EXTRA_STACK_VM_PAGES *PAGE_SIZE ; +if (stack_size + stack_expand > rlim_stack) + stack_base = vma->vm_end - rlim_stack; +else + stack_base = vma->vm_start - stack_expand;#endif ret =expand_stack (vma, stack_base);if (ret)
fs/fcntl.c +2 -4
@@ -199,9 +199,7 @@ static int setfl(int fd, struct file * filp, unsigned long arg)static void f_modown (struct file *filp,struct pid *pid,enum pid_type type,int force) { -unsigned long flags; - -write_lock_irqsave (&filp->f_owner.lock, flags); +write_lock_irq (&filp->f_owner.lock);if (force || !filp->f_owner.pid) {put_pid (filp->f_owner.pid); filp->f_owner.pid =get_pid (pid);
@@ -213,7 +211,7 @@ static void f_modown(struct file *filp, struct pid *pid, enum pid_type type, filp->f_owner.euid = cred->euid; } } -write_unlock_irqrestore (&filp->f_owner.lock, flags); +write_unlock_irq (&filp->f_owner.lock); } int __f_setown(struct file *filp, struct pid *pid, enum pid_type type,
fs/nfs/direct.c +3 -0
@@ -342,6 +342,7 @@ static ssize_t nfs_direct_read_schedule_segment(struct nfs_direct_req *dreq, data->res.fattr = &data->fattr; data->res.eof =0 ; data->res.count = bytes; +nfs_fattr_init (&data->fattr); msg.rpc_argp = &data->args; msg.rpc_resp = &data->res;
@@ -575,6 +576,7 @@ static void nfs_direct_commit_schedule(struct nfs_direct_req *dreq) data->res.count =0 ; data->res.fattr = &data->fattr; data->res.verf = &data->verf; +nfs_fattr_init (&data->fattr);NFS_PROTO (data->inode)->commit_setup (data, &msg);
@@ -766,6 +768,7 @@ static ssize_t nfs_direct_write_schedule_segment(struct nfs_direct_req *dreq, data->res.fattr = &data->fattr; data->res.count = bytes; data->res.verf = &data->verf; +nfs_fattr_init (&data->fattr); task_setup_data.task = &data->task; task_setup_data.callback_data = data;
fs/nfs/file.c +2 -0
@@ -486,6 +486,8 @@ static int nfs_release_page(struct page *page, gfp_t gfp) {dfprintk (PAGECACHE ,"NFS: release_page(%p)\n" , page); +if (gfp & __GFP_WAIT) +nfs_wb_page (page->mapping->host, page);/* If PagePrivate() is set, then the page is not freeable */ if (PagePrivate (page))return 0 ;
fs/nfs/fscache.c +4 -5
@@ -354,12 +354,11 @@ void nfs_fscache_reset_inode_cookie(struct inode *inode)*/ int nfs_fscache_release_page (struct page *page,gfp_t gfp) { -struct nfs_inode *nfsi =NFS_I (page->mapping->host); -struct fscache_cookie *cookie = nfsi->fscache; - -BUG_ON (!cookie); -if (PageFsCache (page)) { +struct nfs_inode *nfsi =NFS_I (page->mapping->host); +struct fscache_cookie *cookie = nfsi->fscache; + +BUG_ON (!cookie);dfprintk (FSCACHE ,"NFS: fscache releasepage (0x%p/0x%p/0x%p)\n" , cookie, page, nfsi);
fs/nfs/mount_clnt.c +1 -1
@@ -120,7 +120,7 @@ static struct { { .status = MNT3ERR_INVAL, .errno = -EINVAL, }, { .status = MNT3ERR_NAMETOOLONG, .errno = -ENAMETOOLONG, }, { .status = MNT3ERR_NOTSUPP, .errno = -ENOTSUPP, }, - { .status = MNT3ERR_SERVERFAULT, .errno = -ESERVERFAULT, }, + { .status = MNT3ERR_SERVERFAULT, .errno = -EREMOTEIO, }, }; struct mountres {
fs/nfs/nfs2xdr.c +1 -1
@@ -699,7 +699,7 @@ static struct { { NFSERR_BAD_COOKIE, -EBADCOOKIE }, { NFSERR_NOTSUPP, -ENOTSUPP }, { NFSERR_TOOSMALL, -ETOOSMALL }, - { NFSERR_SERVERFAULT, -ESERVERFAULT }, + { NFSERR_SERVERFAULT, -EREMOTEIO }, { NFSERR_BADTYPE, -EBADTYPE }, { NFSERR_JUKEBOX, -EJUKEBOX }, { -1, -EIO }
fs/nfs/nfs4_fs.h +1 -0
@@ -141,6 +141,7 @@ enum {NFS_O_RDWR_STATE ,/* OPEN stateid has read/write state */ NFS_STATE_RECLAIM_REBOOT ,/* OPEN stateid server rebooted */ NFS_STATE_RECLAIM_NOGRACE ,/* OPEN stateid needs to recover state */ + NFS_STATE_POSIX_LOCKS, /* Posix locks are supported */ }; struct nfs4_state {
fs/nfs/nfs4proc.c +25 -1
@@ -1573,6 +1573,8 @@ static int _nfs4_do_open(struct inode *dir, struct path *path, fmode_t fmode, in status =PTR_ERR (state);if (IS_ERR (state)) goto err_opendata_put; +if ((opendata->o_res.rflags &NFS4_OPEN_RESULT_LOCKTYPE_POSIX ) !=0 ) +set_bit (NFS_STATE_POSIX_LOCKS , &state->flags);nfs4_opendata_put (opendata);nfs4_put_state_owner (sp); *res = state;
@@ -3976,6 +3978,22 @@ static const struct rpc_call_ops nfs4_lock_ops = { .rpc_release = nfs4_lock_release, }; +static void nfs4_handle_setlk_error (struct nfs_server *server,struct nfs4_lock_state *lsp,int new_lock_owner,int error) +{ +struct nfs_client *clp = server->nfs_client; +struct nfs4_state *state = lsp->ls_state; + +switch (error) { +case -NFS4ERR_ADMIN_REVOKED : +case -NFS4ERR_BAD_STATEID : +case -NFS4ERR_EXPIRED : +if (new_lock_owner !=0 || + (lsp->ls_flags &NFS_LOCK_INITIALIZED ) !=0 ) +nfs4_state_mark_reclaim_nograce (clp, state); + lsp->ls_seqid.flags &= ~NFS_SEQID_CONFIRMED ; + }; +} +static int _nfs4_do_setlk (struct nfs4_state *state,int cmd,struct file_lock *fl,int reclaim) {struct nfs4_lockdata *data;
@@ -4011,6 +4029,9 @@ static int _nfs4_do_setlk(struct nfs4_state *state, int cmd, struct file_lock *f ret =nfs4_wait_for_completion_rpc_task (task);if (ret ==0 ) { ret = data->rpc_status; +if (ret) +nfs4_handle_setlk_error (data->server, data->lsp, + data->arg.new_lock_owner, ret); }else data->cancelled =1 ;rpc_put_task (task);
@@ -4060,8 +4081,11 @@ static int _nfs4_proc_setlk(struct nfs4_state *state, int cmd, struct file_lock {struct nfs_inode *nfsi =NFS_I (state->inode);unsigned char fl_flags = request->fl_flags; -int status; +int status = -ENOLCK ; +if ((fl_flags &FL_POSIX ) && + !test_bit (NFS_STATE_POSIX_LOCKS , &state->flags)) + goto out;/* Is this a delegated open? */ status =nfs4_set_lock_state (state, request);if (status !=0 )
fs/nfs/nfs4xdr.c +3 -3
@@ -4554,7 +4554,7 @@ static int decode_sequence(struct xdr_stream *xdr,* If the server returns different values for sessionID, slotID or * sequence number, the server is looney tunes. */ - status = -ESERVERFAULT ; + status = -EREMOTEIO ;if (memcmp (id.data, res->sr_session->sess_id.data,NFS4_MAX_SESSIONID_LEN )) {
@@ -5678,7 +5678,7 @@ static struct { { NFS4ERR_BAD_COOKIE, -EBADCOOKIE }, { NFS4ERR_NOTSUPP, -ENOTSUPP }, { NFS4ERR_TOOSMALL, -ETOOSMALL }, - { NFS4ERR_SERVERFAULT, -ESERVERFAULT }, + { NFS4ERR_SERVERFAULT, -EREMOTEIO }, { NFS4ERR_BADTYPE, -EBADTYPE }, { NFS4ERR_LOCKED, -EAGAIN }, { NFS4ERR_SYMLINK, -ELOOP },
@@ -5705,7 +5705,7 @@ nfs4_stat_to_errno(int stat) }if (stat <=10000 || stat >10100 ) {/* The server is looney tunes. */ -return -ESERVERFAULT ; +return -EREMOTEIO ; }/* If we cannot translate the error, the recovery routines should * handle it.
fs/nfs/pagelist.c +9 -8
@@ -176,6 +176,12 @@ void nfs_release_request(struct nfs_page *req)kref_put (&req->wb_kref, nfs_free_request); } +static int nfs_wait_bit_uninterruptible (void *word) +{ +io_schedule (); +return 0 ; +} +/** * nfs_wait_on_request - Wait for a request to complete. * @req: request to wait upon.
@@ -186,14 +192,9 @@ void nfs_release_request(struct nfs_page *req)int nfs_wait_on_request (struct nfs_page *req) { -int ret =0 ; - -if (!test_bit (PG_BUSY , &req->wb_flags)) - goto out; - ret =out_of_line_wait_on_bit (&req->wb_flags,PG_BUSY , - nfs_wait_bit_killable,TASK_KILLABLE ); -out: -return ret; +return wait_on_bit (&req->wb_flags,PG_BUSY , + nfs_wait_bit_uninterruptible, +TASK_UNINTERRUPTIBLE ); }/**
fs/nfs/super.c +14 -1
@@ -241,6 +241,7 @@ static int nfs_show_stats(struct seq_file *, struct vfsmount *);static int nfs_get_sb (struct file_system_type *,int ,const char *,void *,struct vfsmount *);static int nfs_xdev_get_sb (struct file_system_type *fs_type,int flags,const char *dev_name,void *raw_data,struct vfsmount *mnt); +static void nfs_put_super (struct super_block *);static void nfs_kill_super (struct super_block *);static int nfs_remount (struct super_block *sb,int *flags,char *raw_data);
@@ -264,6 +265,7 @@ static const struct super_operations nfs_sops = { .alloc_inode = nfs_alloc_inode, .destroy_inode = nfs_destroy_inode, .write_inode = nfs_write_inode, + .put_super = nfs_put_super, .statfs = nfs_statfs, .clear_inode = nfs_clear_inode, .umount_begin = nfs_umount_begin,
@@ -333,6 +335,7 @@ static const struct super_operations nfs4_sops = { .alloc_inode = nfs_alloc_inode, .destroy_inode = nfs_destroy_inode, .write_inode = nfs_write_inode, + .put_super = nfs_put_super, .statfs = nfs_statfs, .clear_inode = nfs4_clear_inode, .umount_begin = nfs_umount_begin,
@@ -2196,6 +2199,17 @@ error_splat_super: }/* +* Ensure that we unregister the bdi before kill_anon_super +* releases the device name +*/ +static void nfs_put_super (struct super_block *s) +{ +struct nfs_server *server =NFS_SB (s); + +bdi_unregister (&server->backing_dev_info); +} + +/* * Destroy an NFS2/3 superblock */ static void nfs_kill_super (struct super_block *s)
@@ -2203,7 +2217,6 @@ static void nfs_kill_super(struct super_block *s)struct nfs_server *server =NFS_SB (s);kill_anon_super (s); -bdi_unregister (&server->backing_dev_info);nfs_fscache_release_super_cookie (s);nfs_free_server (server); }
fs/nfs/write.c +1 -0
@@ -1542,6 +1542,7 @@ int nfs_wb_page_cancel(struct inode *inode, struct page *page)break ; } ret =nfs_wait_on_request (req); +nfs_release_request (req);if (ret <0 ) goto out; }
fs/sysfs/inode.c +23 -24
53 lines not on this page · raw message
include/drm/drm_os_linux.h +1 -1
@@ -123,5 +123,5 @@ do { \remove_wait_queue (&(queue), &entry); \ } while (0) -#define DRM_WAKEUP ( queue ) wake_up_interruptible( queue ) +#define DRM_WAKEUP ( queue ) wake_up( queue )#define DRM_INIT_WAITQUEUE ( queue ) init_waitqueue_head( queue )
include/linux/sched.h +22 -0
@@ -2583,6 +2583,28 @@ static inline void mm_init_owner(struct mm_struct *mm, struct task_struct *p)#define TASK_STATE_TO_CHAR_STR "RSDTtZX" +static inline unsigned long task_rlimit (const struct task_struct *tsk, +unsigned int limit) +{ +return ACCESS_ONCE (tsk->signal->rlim[limit].rlim_cur); +} + +static inline unsigned long task_rlimit_max (const struct task_struct *tsk, +unsigned int limit) +{ +return ACCESS_ONCE (tsk->signal->rlim[limit].rlim_max); +} + +static inline unsigned long rlimit (unsigned int limit) +{ +return task_rlimit (current, limit); +} + +static inline unsigned long rlimit_max (unsigned int limit) +{ +return task_rlimit_max (current, limit); +} +#endif /* __KERNEL__ */ #endif
include/net/netns/conntrack.h +3 -0
@@ -11,6 +11,8 @@ struct nf_conntrack_ecache;struct netns_ct {atomic_t count;unsigned int expect_count; +unsigned int htable_size; +struct kmem_cache *nf_conntrack_cachep;struct hlist_nulls_head *hash;struct hlist_head *expect_hash;struct hlist_nulls_head unconfirmed;
@@ -28,5 +30,6 @@ struct netns_ct {#endif int hash_vmalloc;int expect_vmalloc; + char *slabname; };#endif
include/net/netns/ipv4.h +1 -0
@@ -40,6 +40,7 @@ struct netns_ipv4 {struct xt_table *iptable_security;struct xt_table *nat_table;struct hlist_head *nat_bysource; +unsigned int nat_htable_size;int nat_vmalloced;#endif
kernel/futex.c +27 -3
@@ -530,8 +530,25 @@ lookup_pi_state(u32 uval, struct futex_hash_bucket *hb,return -EINVAL ;WARN_ON (!atomic_read (&pi_state->refcount)); -WARN_ON (pid && pi_state->owner && - pi_state->owner->pid != pid); + +/* +* When pi_state->owner is NULL then the owner died +* and another waiter is on the fly. pi_state->owner +* is fixed up by the task which acquires +* pi_state->rt_mutex. +* +* We do not check for pid == 0 which can happen when +* the owner died and robust_list_exit() cleared the +* TID. +*/ +if (pid && pi_state->owner) { +/* +* Bail out if user space manipulated the +* futex value. +*/ +if (pid !=task_pid_vnr (pi_state->owner)) +return -EINVAL ; + }atomic_inc (&pi_state->refcount); *ps = pi_state;
@@ -758,6 +775,13 @@ static int wake_futex_pi(u32 __user *uaddr, u32 uval, struct futex_q *this)if (!pi_state)return -EINVAL ; +/* +* If current does not own the pi_state then the futex is +* inconsistent and user space fiddled with the futex value. +*/ +if (pi_state->owner != current) +return -EINVAL ; +spin_lock (&pi_state->pi_mutex.wait_lock); new_owner =rt_mutex_next_owner (&pi_state->pi_mutex);
@@ -1971,7 +1995,7 @@ retry_private:/* Unqueue and drop the lock */ unqueue_me_pi (&q); - goto out; + goto out_put_key; out_unlock_put_key:queue_unlock (&q, hb);
kernel/time/timekeeping.c +2 -0
@@ -845,6 +845,7 @@ void getboottime(struct timespec *ts)set_normalized_timespec (ts, -boottime.tv_sec, -boottime.tv_nsec); } +EXPORT_SYMBOL_GPL (getboottime);/** * monotonic_to_bootbased - Convert the monotonic time to boot based.
@@ -854,6 +855,7 @@ void monotonic_to_bootbased(struct timespec *ts) { *ts =timespec_add_safe (*ts, total_sleep_time); } +EXPORT_SYMBOL_GPL (monotonic_to_bootbased);unsigned long get_seconds (void ) {
mm/migrate.c +3 -0
@@ -953,6 +953,9 @@ static int do_pages_move(struct mm_struct *mm, struct task_struct *task, goto out_pm; err = -ENODEV ; +if (node <0 || node >=MAX_NUMNODES ) + goto out_pm; +if (!node_state (node,N_HIGH_MEMORY )) goto out_pm;
net/core/dst.c +2 -0
@@ -17,6 +17,7 @@#include <linux/string.h> #include <linux/types.h> #include <net/net_namespace.h> +#include <linux/sched.h> #include <net/dst.h>
@@ -79,6 +80,7 @@ loop:while ((dst = next) !=NULL ) { next = dst->next;prefetch (&next->next); +cond_resched ();if (likely (atomic_read (&dst->__refcnt))) { last->next = dst; last = dst;
net/core/pktgen.c +1 -0
@@ -3516,6 +3516,7 @@ static int pktgen_thread_worker(void *arg)wait_event_interruptible_timeout (t->queue, t->control !=0 ,HZ /10 ); +try_to_freeze ();continue ; }
net/ipv4/netfilter/arp_tables.c +2 -2
@@ -925,10 +925,10 @@ static int get_info(struct net *net, void __user *user, int *len, int compat)if (t && !IS_ERR (t)) {struct arpt_getinfo info;const struct xt_table_info *private = t->private; -#ifdef CONFIG_COMPAT +struct xt_table_info tmp; +if (compat) { -struct xt_table_info tmp; ret =compat_table_info (private, &tmp);xt_compat_flush_offsets (NFPROTO_ARP ); private = &tmp;
net/ipv4/netfilter/ip_tables.c +2 -2
@@ -1132,10 +1132,10 @@ static int get_info(struct net *net, void __user *user, int *len, int compat)if (t && !IS_ERR (t)) {struct ipt_getinfo info;const struct xt_table_info *private = t->private; -#ifdef CONFIG_COMPAT +struct xt_table_info tmp; +if (compat) { -struct xt_table_info tmp; ret =compat_table_info (private, &tmp);xt_compat_flush_offsets (AF_INET ); private = &tmp;
net/ipv4/netfilter/nf_conntrack_l3proto_ipv4.c +1 -1
@@ -213,7 +213,7 @@ static ctl_table ip_ct_sysctl_table[] = { { .ctl_name = NET_IPV4_NF_CONNTRACK_BUCKETS, .procname = "ip_conntrack_buckets", - .data = &nf_conntrack_htable_size, + .data = &init_net.ct.htable_size, .maxlen = sizeof(unsigned int), .mode = 0444, .proc_handler = proc_dointvec,
net/ipv4/netfilter/nf_conntrack_l3proto_ipv4_compat.c +2 -2
@@ -32,7 +32,7 @@ static struct hlist_nulls_node *ct_get_first(struct seq_file *seq)struct hlist_nulls_node *n;for (st->bucket =0 ; - st->bucket < nf_conntrack_htable_size; + st->bucket < net->ct.htable_size; st->bucket++) { n =rcu_dereference (net->ct.hash[st->bucket].first);if (!is_a_nulls (n))
@@ -50,7 +50,7 @@ static struct hlist_nulls_node *ct_get_next(struct seq_file *seq, head =rcu_dereference (head->next);while (is_a_nulls (head)) {if (likely (get_nulls_value (head) == st->bucket)) { -if (++st->bucket >= nf_conntrack_htable_size) +if (++st->bucket >= net->ct.htable_size)return NULL ; } head =rcu_dereference (net->ct.hash[st->bucket].first);
net/ipv4/netfilter/nf_nat_core.c +9 -13
@@ -35,9 +35,6 @@ static DEFINE_SPINLOCK(nf_nat_lock);static struct nf_conntrack_l3proto *l3proto__read_mostly ; -/* Calculated at init based on memory size */ -static unsigned int nf_nat_htable_size__read_mostly ; -#define MAX_IP_NAT_PROTO 256static const struct nf_nat_protocol *nf_nat_protos[MAX_IP_NAT_PROTO ]__read_mostly ;
@@ -72,7 +69,7 @@ EXPORT_SYMBOL_GPL(nf_nat_proto_put);/* We keep an extra hash for each conntrack, for fast searching. */ static inline unsigned int -hash_by_src (const struct nf_conntrack_tuple *tuple) +hash_by_src (const struct net *net,const struct nf_conntrack_tuple *tuple) {unsigned int hash;
@@ -80,7 +77,7 @@ hash_by_src(const struct nf_conntrack_tuple *tuple) hash =jhash_3words ((__force u32 )tuple->src.u3.ip, (__force u32 )tuple->src.u.all, tuple->dst.protonum,0 ); -return ((u64 )hash * nf_nat_htable_size) >>32 ; +return ((u64 )hash * net->ipv4.nat_htable_size) >>32 ; }/* Is this tuple already taken? (not by us) */
@@ -147,7 +144,7 @@ find_appropriate_src(struct net *net,struct nf_conntrack_tuple *result, const struct nf_nat_range *range) { - unsigned int h = hash_by_src(tuple); + unsigned int h = hash_by_src(net, tuple);const struct nf_conn_nat *nat;const struct nf_conn *ct;const struct hlist_node *n;
@@ -330,7 +327,7 @@ nf_nat_setup_info(struct nf_conn *ct,if (have_to_hash) {unsigned int srchash; - srchash =hash_by_src (&ct->tuplehash[IP_CT_DIR_ORIGINAL ].tuple); + srchash =hash_by_src (net, &ct->tuplehash[IP_CT_DIR_ORIGINAL ].tuple);spin_lock_bh (&nf_nat_lock);/* nf_conntrack_alter_reply might re-allocate exntension aera */ nat =nfct_nat (ct);
@@ -679,8 +676,10 @@ nfnetlink_parse_nat_setup(struct nf_conn *ct,static int __net_init nf_nat_net_init (struct net *net) { - net->ipv4.nat_bysource =nf_ct_alloc_hashtable (&nf_nat_htable_size, - &net->ipv4.nat_vmalloced,0 ); +/* Leave them the same for the moment. */ + net->ipv4.nat_htable_size = net->ct.htable_size; + net->ipv4.nat_bysource =nf_ct_alloc_hashtable (&net->ipv4.nat_htable_size, + &net->ipv4.nat_vmalloced,0 );if (!net->ipv4.nat_bysource)return -ENOMEM ;return 0 ;
@@ -703,7 +702,7 @@ static void __net_exit nf_nat_net_exit(struct net *net)nf_ct_iterate_cleanup (net, &clean_nat,NULL );synchronize_rcu ();nf_ct_free_hashtable (net->ipv4.nat_bysource, net->ipv4.nat_vmalloced, - nf_nat_htable_size); + net->ipv4.nat_htable_size); }static struct pernet_operations nf_nat_net_ops = {
@@ -724,9 +723,6 @@ static int __init nf_nat_init(void)return ret; } -/* Leave them the same for the moment. */ - nf_nat_htable_size = nf_conntrack_htable_size; - ret =register_pernet_subsys (&nf_nat_net_ops);if (ret <0 ) goto cleanup_extend;
net/ipv6/netfilter/ip6_tables.c +2 -2
@@ -1164,10 +1164,10 @@ static int get_info(struct net *net, void __user *user, int *len, int compat)if (t && !IS_ERR (t)) {struct ip6t_getinfo info;const struct xt_table_info *private = t->private; -#ifdef CONFIG_COMPAT +struct xt_table_info tmp; +if (compat) { -struct xt_table_info tmp; ret =compat_table_info (private, &tmp);xt_compat_flush_offsets (AF_INET6 ); private = &tmp;
net/mac80211/ibss.c +1 -1
@@ -643,7 +643,7 @@ static void ieee80211_rx_mgmt_probe_req(struct ieee80211_sub_if_data *sdata, }if (pos[1 ] !=0 && (pos[1 ] != ifibss->ssid_len || - !memcmp (pos +2 , ifibss->ssid, ifibss->ssid_len))) { +memcmp (pos +2 , ifibss->ssid, ifibss->ssid_len))) {/* Ignore ProbeReq for foreign SSID */ return ; }
net/netfilter/nf_conntrack_core.c +64 -53
286 lines not on this page · raw message
net/netfilter/nf_conntrack_expect.c +2 -2
@@ -569,7 +569,7 @@ static void exp_proc_remove(struct net *net)#endif /* CONFIG_PROC_FS */ } -module_param_named (expect_hashsize, nf_ct_expect_hsize, uint,0600 ); +module_param_named (expect_hashsize, nf_ct_expect_hsize, uint,0400 );int nf_conntrack_expect_init (struct net *net) {
@@ -577,7 +577,7 @@ int nf_conntrack_expect_init(struct net *net)if (net_eq (net, &init_net)) {if (!nf_ct_expect_hsize) { - nf_ct_expect_hsize = nf_conntrack_htable_size /256 ; + nf_ct_expect_hsize = net->ct.htable_size /256 ;if (!nf_ct_expect_hsize) nf_ct_expect_hsize =1 ; }
net/netfilter/nf_conntrack_helper.c +1 -1
@@ -192,7 +192,7 @@ static void __nf_conntrack_helper_unregister(struct nf_conntrack_helper *me,/* Get rid of expecteds, set helpers to NULL. */ hlist_nulls_for_each_entry (h, nn, &net->ct.unconfirmed, hnnode)unhelp (h, me); -for (i =0 ; i < nf_conntrack_htable_size; i++) { +for (i =0 ; i < net->ct.htable_size; i++) {hlist_nulls_for_each_entry (h, nn, &net->ct.hash[i], hnnode)unhelp (h, me); }
net/netfilter/nf_conntrack_netlink.c +1 -1
@@ -594,7 +594,7 @@ ctnetlink_dump_table(struct sk_buff *skb, struct netlink_callback *cb)rcu_read_lock (); last = (struct nf_conn *)cb->args[1 ]; -for (; cb->args[0 ] < nf_conntrack_htable_size; cb->args[0 ]++) { +for (; cb->args[0 ] < init_net.ct.htable_size; cb->args[0 ]++) { restart:hlist_nulls_for_each_entry_rcu (h, n, &init_net.ct.hash[cb->args[0 ]], hnnode) {
net/netfilter/nf_conntrack_standalone.c +4 -3
@@ -51,7 +51,7 @@ static struct hlist_nulls_node *ct_get_first(struct seq_file *seq)struct hlist_nulls_node *n;for (st->bucket =0 ; - st->bucket < nf_conntrack_htable_size; + st->bucket < net->ct.htable_size; st->bucket++) { n =rcu_dereference (net->ct.hash[st->bucket].first);if (!is_a_nulls (n))
@@ -69,7 +69,7 @@ static struct hlist_nulls_node *ct_get_next(struct seq_file *seq, head =rcu_dereference (head->next);while (is_a_nulls (head)) {if (likely (get_nulls_value (head) == st->bucket)) { -if (++st->bucket >= nf_conntrack_htable_size) +if (++st->bucket >= net->ct.htable_size)return NULL ; } head =rcu_dereference (net->ct.hash[st->bucket].first);
@@ -358,7 +358,7 @@ static ctl_table nf_ct_sysctl_table[] = { { .ctl_name = NET_NF_CONNTRACK_BUCKETS, .procname = "nf_conntrack_buckets", - .data = &nf_conntrack_htable_size, + .data = &init_net.ct.htable_size, .maxlen = sizeof(unsigned int), .mode = 0444, .proc_handler = proc_dointvec,
@@ -429,6 +429,7 @@ static int nf_conntrack_standalone_init_sysctl(struct net *net) goto out_kmemdup; table[1 ].data = &net->ct.count; + table[2 ].data = &net->ct.htable_size; table[3 ].data = &net->ct.sysctl_checksum; table[4 ].data = &net->ct.sysctl_log_invalid;
sound/pci/ctxfi/ctatc.c +2 -13
@@ -166,18 +166,7 @@ static void ct_unmap_audio_buffer(struct ct_atc *atc, struct ct_atc_pcm *apcm)static unsigned long atc_get_ptp_phys (struct ct_atc *atc,int index) { -struct ct_vm *vm; -void *kvirt_addr; -unsigned long phys_addr; - - vm = atc->vm; - kvirt_addr = vm->get_ptp_virt (vm, index); -if (kvirt_addr ==NULL )
Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
Part of the diff is not shown here. View the raw message.