diff options
37 files changed, 170 insertions, 91 deletions
diff --git a/Documentation/sound/alsa/ALSA-Configuration.txt b/Documentation/sound/alsa/ALSA-Configuration.txt index 3cd2ad958176..394d7d378dc7 100644 --- a/Documentation/sound/alsa/ALSA-Configuration.txt +++ b/Documentation/sound/alsa/ALSA-Configuration.txt | |||
| @@ -1063,6 +1063,7 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed. | |||
| 1063 | 1063 | ||
| 1064 | STAC9227/9228/9229/927x | 1064 | STAC9227/9228/9229/927x |
| 1065 | ref Reference board | 1065 | ref Reference board |
| 1066 | ref-no-jd Reference board without HP/Mic jack detection | ||
| 1066 | 3stack D965 3stack | 1067 | 3stack D965 3stack |
| 1067 | 5stack D965 5stack + SPDIF | 1068 | 5stack D965 5stack + SPDIF |
| 1068 | dell-3stack Dell Dimension E520 | 1069 | dell-3stack Dell Dimension E520 |
| @@ -1076,6 +1077,7 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed. | |||
| 1076 | 1077 | ||
| 1077 | STAC92HD73* | 1078 | STAC92HD73* |
| 1078 | ref Reference board | 1079 | ref Reference board |
| 1080 | no-jd BIOS setup but without jack-detection | ||
| 1079 | dell-m6-amic Dell desktops/laptops with analog mics | 1081 | dell-m6-amic Dell desktops/laptops with analog mics |
| 1080 | dell-m6-dmic Dell desktops/laptops with digital mics | 1082 | dell-m6-dmic Dell desktops/laptops with digital mics |
| 1081 | dell-m6 Dell desktops/laptops with both type of mics | 1083 | dell-m6 Dell desktops/laptops with both type of mics |
diff --git a/arch/mips/include/asm/byteorder.h b/arch/mips/include/asm/byteorder.h index 2988d29a0867..33790b9e0cc0 100644 --- a/arch/mips/include/asm/byteorder.h +++ b/arch/mips/include/asm/byteorder.h | |||
| @@ -50,9 +50,8 @@ static inline __attribute_const__ __u32 __arch_swab32(__u32 x) | |||
| 50 | static inline __attribute_const__ __u64 __arch_swab64(__u64 x) | 50 | static inline __attribute_const__ __u64 __arch_swab64(__u64 x) |
| 51 | { | 51 | { |
| 52 | __asm__( | 52 | __asm__( |
| 53 | " dsbh %0, %1 \n" | 53 | " dsbh %0, %1\n" |
| 54 | " dshd %0, %0 \n" | 54 | " dshd %0, %0" |
| 55 | " drotr %0, %0, 32 \n" | ||
| 56 | : "=r" (x) | 55 | : "=r" (x) |
| 57 | : "r" (x)); | 56 | : "r" (x)); |
| 58 | 57 | ||
diff --git a/arch/mips/include/asm/elf.h b/arch/mips/include/asm/elf.h index a8eac1697b3d..d58f128aa747 100644 --- a/arch/mips/include/asm/elf.h +++ b/arch/mips/include/asm/elf.h | |||
| @@ -232,7 +232,7 @@ typedef elf_fpreg_t elf_fpregset_t[ELF_NFPREG]; | |||
| 232 | */ | 232 | */ |
| 233 | #ifdef __MIPSEB__ | 233 | #ifdef __MIPSEB__ |
| 234 | #define ELF_DATA ELFDATA2MSB | 234 | #define ELF_DATA ELFDATA2MSB |
| 235 | #elif __MIPSEL__ | 235 | #elif defined(__MIPSEL__) |
| 236 | #define ELF_DATA ELFDATA2LSB | 236 | #define ELF_DATA ELFDATA2LSB |
| 237 | #endif | 237 | #endif |
| 238 | #define ELF_ARCH EM_MIPS | 238 | #define ELF_ARCH EM_MIPS |
diff --git a/arch/x86/kernel/amd_iommu.c b/arch/x86/kernel/amd_iommu.c index a7b6dec6fc3f..0a60d60ed036 100644 --- a/arch/x86/kernel/amd_iommu.c +++ b/arch/x86/kernel/amd_iommu.c | |||
| @@ -235,8 +235,9 @@ static int iommu_completion_wait(struct amd_iommu *iommu) | |||
| 235 | status &= ~MMIO_STATUS_COM_WAIT_INT_MASK; | 235 | status &= ~MMIO_STATUS_COM_WAIT_INT_MASK; |
| 236 | writel(status, iommu->mmio_base + MMIO_STATUS_OFFSET); | 236 | writel(status, iommu->mmio_base + MMIO_STATUS_OFFSET); |
| 237 | 237 | ||
| 238 | if (unlikely((i == EXIT_LOOP_COUNT) && printk_ratelimit())) | 238 | if (unlikely(i == EXIT_LOOP_COUNT)) |
| 239 | printk(KERN_WARNING "AMD IOMMU: Completion wait loop failed\n"); | 239 | panic("AMD IOMMU: Completion wait loop failed\n"); |
| 240 | |||
| 240 | out: | 241 | out: |
| 241 | spin_unlock_irqrestore(&iommu->lock, flags); | 242 | spin_unlock_irqrestore(&iommu->lock, flags); |
| 242 | 243 | ||
diff --git a/arch/x86/kernel/amd_iommu_init.c b/arch/x86/kernel/amd_iommu_init.c index 30ae2701b3df..c6cc22815d35 100644 --- a/arch/x86/kernel/amd_iommu_init.c +++ b/arch/x86/kernel/amd_iommu_init.c | |||
| @@ -427,6 +427,10 @@ static u8 * __init alloc_command_buffer(struct amd_iommu *iommu) | |||
| 427 | memcpy_toio(iommu->mmio_base + MMIO_CMD_BUF_OFFSET, | 427 | memcpy_toio(iommu->mmio_base + MMIO_CMD_BUF_OFFSET, |
| 428 | &entry, sizeof(entry)); | 428 | &entry, sizeof(entry)); |
| 429 | 429 | ||
| 430 | /* set head and tail to zero manually */ | ||
| 431 | writel(0x00, iommu->mmio_base + MMIO_CMD_HEAD_OFFSET); | ||
| 432 | writel(0x00, iommu->mmio_base + MMIO_CMD_TAIL_OFFSET); | ||
| 433 | |||
| 430 | iommu_feature_enable(iommu, CONTROL_CMDBUF_EN); | 434 | iommu_feature_enable(iommu, CONTROL_CMDBUF_EN); |
| 431 | 435 | ||
| 432 | return cmd_buf; | 436 | return cmd_buf; |
| @@ -1074,7 +1078,8 @@ int __init amd_iommu_init(void) | |||
| 1074 | goto free; | 1078 | goto free; |
| 1075 | 1079 | ||
| 1076 | /* IOMMU rlookup table - find the IOMMU for a specific device */ | 1080 | /* IOMMU rlookup table - find the IOMMU for a specific device */ |
| 1077 | amd_iommu_rlookup_table = (void *)__get_free_pages(GFP_KERNEL, | 1081 | amd_iommu_rlookup_table = (void *)__get_free_pages( |
| 1082 | GFP_KERNEL | __GFP_ZERO, | ||
| 1078 | get_order(rlookup_table_size)); | 1083 | get_order(rlookup_table_size)); |
| 1079 | if (amd_iommu_rlookup_table == NULL) | 1084 | if (amd_iommu_rlookup_table == NULL) |
| 1080 | goto free; | 1085 | goto free; |
diff --git a/arch/x86/kernel/cpu/mcheck/mce_64.c b/arch/x86/kernel/cpu/mcheck/mce_64.c index 4b031a4ac856..1c838032fd37 100644 --- a/arch/x86/kernel/cpu/mcheck/mce_64.c +++ b/arch/x86/kernel/cpu/mcheck/mce_64.c | |||
| @@ -510,12 +510,9 @@ static void __cpuinit mce_cpu_features(struct cpuinfo_x86 *c) | |||
| 510 | */ | 510 | */ |
| 511 | void __cpuinit mcheck_init(struct cpuinfo_x86 *c) | 511 | void __cpuinit mcheck_init(struct cpuinfo_x86 *c) |
| 512 | { | 512 | { |
| 513 | static cpumask_t mce_cpus = CPU_MASK_NONE; | ||
| 514 | |||
| 515 | mce_cpu_quirks(c); | 513 | mce_cpu_quirks(c); |
| 516 | 514 | ||
| 517 | if (mce_dont_init || | 515 | if (mce_dont_init || |
| 518 | cpu_test_and_set(smp_processor_id(), mce_cpus) || | ||
| 519 | !mce_available(c)) | 516 | !mce_available(c)) |
| 520 | return; | 517 | return; |
| 521 | 518 | ||
diff --git a/arch/x86/kernel/microcode_core.c b/arch/x86/kernel/microcode_core.c index 82fb2809ce32..c4b5b24e0217 100644 --- a/arch/x86/kernel/microcode_core.c +++ b/arch/x86/kernel/microcode_core.c | |||
| @@ -272,13 +272,18 @@ static struct attribute_group mc_attr_group = { | |||
| 272 | .name = "microcode", | 272 | .name = "microcode", |
| 273 | }; | 273 | }; |
| 274 | 274 | ||
| 275 | static void microcode_fini_cpu(int cpu) | 275 | static void __microcode_fini_cpu(int cpu) |
| 276 | { | 276 | { |
| 277 | struct ucode_cpu_info *uci = ucode_cpu_info + cpu; | 277 | struct ucode_cpu_info *uci = ucode_cpu_info + cpu; |
| 278 | 278 | ||
| 279 | mutex_lock(µcode_mutex); | ||
| 280 | microcode_ops->microcode_fini_cpu(cpu); | 279 | microcode_ops->microcode_fini_cpu(cpu); |
| 281 | uci->valid = 0; | 280 | uci->valid = 0; |
| 281 | } | ||
| 282 | |||
| 283 | static void microcode_fini_cpu(int cpu) | ||
| 284 | { | ||
| 285 | mutex_lock(µcode_mutex); | ||
| 286 | __microcode_fini_cpu(cpu); | ||
| 282 | mutex_unlock(µcode_mutex); | 287 | mutex_unlock(µcode_mutex); |
| 283 | } | 288 | } |
| 284 | 289 | ||
| @@ -306,12 +311,16 @@ static int microcode_resume_cpu(int cpu) | |||
| 306 | * to this cpu (a bit of paranoia): | 311 | * to this cpu (a bit of paranoia): |
| 307 | */ | 312 | */ |
| 308 | if (microcode_ops->collect_cpu_info(cpu, &nsig)) { | 313 | if (microcode_ops->collect_cpu_info(cpu, &nsig)) { |
| 309 | microcode_fini_cpu(cpu); | 314 | __microcode_fini_cpu(cpu); |
| 315 | printk(KERN_ERR "failed to collect_cpu_info for resuming cpu #%d\n", | ||
| 316 | cpu); | ||
| 310 | return -1; | 317 | return -1; |
| 311 | } | 318 | } |
| 312 | 319 | ||
| 313 | if (memcmp(&nsig, &uci->cpu_sig, sizeof(nsig))) { | 320 | if ((nsig.sig != uci->cpu_sig.sig) || (nsig.pf != uci->cpu_sig.pf)) { |
| 314 | microcode_fini_cpu(cpu); | 321 | __microcode_fini_cpu(cpu); |
| 322 | printk(KERN_ERR "cached ucode doesn't match the resuming cpu #%d\n", | ||
| 323 | cpu); | ||
| 315 | /* Should we look for a new ucode here? */ | 324 | /* Should we look for a new ucode here? */ |
| 316 | return 1; | 325 | return 1; |
| 317 | } | 326 | } |
diff --git a/arch/x86/kernel/microcode_intel.c b/arch/x86/kernel/microcode_intel.c index 622dc4a21784..a8e62792d171 100644 --- a/arch/x86/kernel/microcode_intel.c +++ b/arch/x86/kernel/microcode_intel.c | |||
| @@ -155,6 +155,7 @@ static DEFINE_SPINLOCK(microcode_update_lock); | |||
| 155 | static int collect_cpu_info(int cpu_num, struct cpu_signature *csig) | 155 | static int collect_cpu_info(int cpu_num, struct cpu_signature *csig) |
| 156 | { | 156 | { |
| 157 | struct cpuinfo_x86 *c = &cpu_data(cpu_num); | 157 | struct cpuinfo_x86 *c = &cpu_data(cpu_num); |
| 158 | unsigned long flags; | ||
| 158 | unsigned int val[2]; | 159 | unsigned int val[2]; |
| 159 | 160 | ||
| 160 | memset(csig, 0, sizeof(*csig)); | 161 | memset(csig, 0, sizeof(*csig)); |
| @@ -174,11 +175,16 @@ static int collect_cpu_info(int cpu_num, struct cpu_signature *csig) | |||
| 174 | csig->pf = 1 << ((val[1] >> 18) & 7); | 175 | csig->pf = 1 << ((val[1] >> 18) & 7); |
| 175 | } | 176 | } |
| 176 | 177 | ||
| 178 | /* serialize access to the physical write to MSR 0x79 */ | ||
| 179 | spin_lock_irqsave(µcode_update_lock, flags); | ||
| 180 | |||
| 177 | wrmsr(MSR_IA32_UCODE_REV, 0, 0); | 181 | wrmsr(MSR_IA32_UCODE_REV, 0, 0); |
| 178 | /* see notes above for revision 1.07. Apparent chip bug */ | 182 | /* see notes above for revision 1.07. Apparent chip bug */ |
| 179 | sync_core(); | 183 | sync_core(); |
| 180 | /* get the current revision from MSR 0x8B */ | 184 | /* get the current revision from MSR 0x8B */ |
| 181 | rdmsr(MSR_IA32_UCODE_REV, val[0], csig->rev); | 185 | rdmsr(MSR_IA32_UCODE_REV, val[0], csig->rev); |
| 186 | spin_unlock_irqrestore(µcode_update_lock, flags); | ||
| 187 | |||
| 182 | pr_debug("microcode: collect_cpu_info : sig=0x%x, pf=0x%x, rev=0x%x\n", | 188 | pr_debug("microcode: collect_cpu_info : sig=0x%x, pf=0x%x, rev=0x%x\n", |
| 183 | csig->sig, csig->pf, csig->rev); | 189 | csig->sig, csig->pf, csig->rev); |
| 184 | 190 | ||
diff --git a/arch/x86/kernel/pci-gart_64.c b/arch/x86/kernel/pci-gart_64.c index ba7ad83e20a8..a35eaa379ff6 100644 --- a/arch/x86/kernel/pci-gart_64.c +++ b/arch/x86/kernel/pci-gart_64.c | |||
| @@ -745,10 +745,8 @@ void __init gart_iommu_init(void) | |||
| 745 | unsigned long scratch; | 745 | unsigned long scratch; |
| 746 | long i; | 746 | long i; |
| 747 | 747 | ||
| 748 | if (cache_k8_northbridges() < 0 || num_k8_northbridges == 0) { | 748 | if (cache_k8_northbridges() < 0 || num_k8_northbridges == 0) |
| 749 | printk(KERN_INFO "PCI-GART: No AMD GART found.\n"); | ||
| 750 | return; | 749 | return; |
| 751 | } | ||
| 752 | 750 | ||
| 753 | #ifndef CONFIG_AGP_AMD64 | 751 | #ifndef CONFIG_AGP_AMD64 |
| 754 | no_agp = 1; | 752 | no_agp = 1; |
diff --git a/drivers/block/cciss.c b/drivers/block/cciss.c index 9364dc554257..9f7c543cc04b 100644 --- a/drivers/block/cciss.c +++ b/drivers/block/cciss.c | |||
| @@ -1693,6 +1693,11 @@ static int rebuild_lun_table(ctlr_info_t *h, int first_time) | |||
| 1693 | for (i = 0; i <= h->highest_lun; i++) { | 1693 | for (i = 0; i <= h->highest_lun; i++) { |
| 1694 | int j; | 1694 | int j; |
| 1695 | drv_found = 0; | 1695 | drv_found = 0; |
| 1696 | |||
| 1697 | /* skip holes in the array from already deleted drives */ | ||
| 1698 | if (h->drv[i].raid_level == -1) | ||
| 1699 | continue; | ||
| 1700 | |||
| 1696 | for (j = 0; j < num_luns; j++) { | 1701 | for (j = 0; j < num_luns; j++) { |
| 1697 | memcpy(&lunid, &ld_buff->LUN[j][0], 4); | 1702 | memcpy(&lunid, &ld_buff->LUN[j][0], 4); |
| 1698 | lunid = le32_to_cpu(lunid); | 1703 | lunid = le32_to_cpu(lunid); |
diff --git a/drivers/gpu/drm/i915/i915_dma.c b/drivers/gpu/drm/i915/i915_dma.c index 553dd4bc3075..afa8a12cd009 100644 --- a/drivers/gpu/drm/i915/i915_dma.c +++ b/drivers/gpu/drm/i915/i915_dma.c | |||
| @@ -717,7 +717,7 @@ static int i915_getparam(struct drm_device *dev, void *data, | |||
| 717 | value = dev->pci_device; | 717 | value = dev->pci_device; |
| 718 | break; | 718 | break; |
| 719 | case I915_PARAM_HAS_GEM: | 719 | case I915_PARAM_HAS_GEM: |
| 720 | value = 1; | 720 | value = dev_priv->has_gem; |
| 721 | break; | 721 | break; |
| 722 | default: | 722 | default: |
| 723 | DRM_ERROR("Unknown parameter %d\n", param->param); | 723 | DRM_ERROR("Unknown parameter %d\n", param->param); |
| @@ -830,6 +830,14 @@ int i915_driver_load(struct drm_device *dev, unsigned long flags) | |||
| 830 | 830 | ||
| 831 | dev_priv->regs = ioremap(base, size); | 831 | dev_priv->regs = ioremap(base, size); |
| 832 | 832 | ||
| 833 | #ifdef CONFIG_HIGHMEM64G | ||
| 834 | /* don't enable GEM on PAE - needs agp + set_memory_* interface fixes */ | ||
| 835 | dev_priv->has_gem = 0; | ||
| 836 | #else | ||
| 837 | /* enable GEM by default */ | ||
| 838 | dev_priv->has_gem = 1; | ||
| 839 | #endif | ||
| 840 | |||
| 833 | i915_gem_load(dev); | 841 | i915_gem_load(dev); |
| 834 | 842 | ||
| 835 | /* Init HWS */ | 843 | /* Init HWS */ |
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h index adc972cc6bfc..b3cc4731aa7c 100644 --- a/drivers/gpu/drm/i915/i915_drv.h +++ b/drivers/gpu/drm/i915/i915_drv.h | |||
| @@ -106,6 +106,8 @@ struct intel_opregion { | |||
| 106 | typedef struct drm_i915_private { | 106 | typedef struct drm_i915_private { |
| 107 | struct drm_device *dev; | 107 | struct drm_device *dev; |
| 108 | 108 | ||
| 109 | int has_gem; | ||
| 110 | |||
| 109 | void __iomem *regs; | 111 | void __iomem *regs; |
| 110 | drm_local_map_t *sarea; | 112 | drm_local_map_t *sarea; |
| 111 | 113 | ||
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c index ad672d854828..24fe8c10b4b2 100644 --- a/drivers/gpu/drm/i915/i915_gem.c +++ b/drivers/gpu/drm/i915/i915_gem.c | |||
| @@ -2309,7 +2309,14 @@ i915_gem_busy_ioctl(struct drm_device *dev, void *data, | |||
| 2309 | } | 2309 | } |
| 2310 | 2310 | ||
| 2311 | obj_priv = obj->driver_private; | 2311 | obj_priv = obj->driver_private; |
| 2312 | args->busy = obj_priv->active; | 2312 | /* Don't count being on the flushing list against the object being |
| 2313 | * done. Otherwise, a buffer left on the flushing list but not getting | ||
| 2314 | * flushed (because nobody's flushing that domain) won't ever return | ||
| 2315 | * unbusy and get reused by libdrm's bo cache. The other expected | ||
| 2316 | * consumer of this interface, OpenGL's occlusion queries, also specs | ||
| 2317 | * that the objects get unbusy "eventually" without any interference. | ||
| 2318 | */ | ||
| 2319 | args->busy = obj_priv->active && obj_priv->last_rendering_seqno != 0; | ||
| 2313 | 2320 | ||
| 2314 | drm_gem_object_unreference(obj); | 2321 | drm_gem_object_unreference(obj); |
| 2315 | mutex_unlock(&dev->struct_mutex); | 2322 | mutex_unlock(&dev->struct_mutex); |
diff --git a/drivers/ide/cs5530.c b/drivers/ide/cs5530.c index 53f079cc00af..d8ede85fe17f 100644 --- a/drivers/ide/cs5530.c +++ b/drivers/ide/cs5530.c | |||
| @@ -81,11 +81,12 @@ static u8 cs5530_udma_filter(ide_drive_t *drive) | |||
| 81 | { | 81 | { |
| 82 | ide_hwif_t *hwif = drive->hwif; | 82 | ide_hwif_t *hwif = drive->hwif; |
| 83 | ide_drive_t *mate = ide_get_pair_dev(drive); | 83 | ide_drive_t *mate = ide_get_pair_dev(drive); |
| 84 | u16 *mateid = mate->id; | 84 | u16 *mateid; |
| 85 | u8 mask = hwif->ultra_mask; | 85 | u8 mask = hwif->ultra_mask; |
| 86 | 86 | ||
| 87 | if (mate == NULL) | 87 | if (mate == NULL) |
| 88 | goto out; | 88 | goto out; |
| 89 | mateid = mate->id; | ||
| 89 | 90 | ||
| 90 | if (ata_id_has_dma(mateid) && __ide_dma_bad_drive(mate) == 0) { | 91 | if (ata_id_has_dma(mateid) && __ide_dma_bad_drive(mate) == 0) { |
| 91 | if ((mateid[ATA_ID_FIELD_VALID] & 4) && | 92 | if ((mateid[ATA_ID_FIELD_VALID] & 4) && |
diff --git a/drivers/ide/sc1200.c b/drivers/ide/sc1200.c index f1a8758e3a99..ec7f766ef5e4 100644 --- a/drivers/ide/sc1200.c +++ b/drivers/ide/sc1200.c | |||
| @@ -104,11 +104,12 @@ static u8 sc1200_udma_filter(ide_drive_t *drive) | |||
| 104 | { | 104 | { |
| 105 | ide_hwif_t *hwif = drive->hwif; | 105 | ide_hwif_t *hwif = drive->hwif; |
| 106 | ide_drive_t *mate = ide_get_pair_dev(drive); | 106 | ide_drive_t *mate = ide_get_pair_dev(drive); |
| 107 | u16 *mateid = mate->id; | 107 | u16 *mateid; |
| 108 | u8 mask = hwif->ultra_mask; | 108 | u8 mask = hwif->ultra_mask; |
| 109 | 109 | ||
| 110 | if (mate == NULL) | 110 | if (mate == NULL) |
| 111 | goto out; | 111 | goto out; |
| 112 | mateid = mate->id; | ||
| 112 | 113 | ||
| 113 | if (ata_id_has_dma(mateid) && __ide_dma_bad_drive(mate) == 0) { | 114 | if (ata_id_has_dma(mateid) && __ide_dma_bad_drive(mate) == 0) { |
| 114 | if ((mateid[ATA_ID_FIELD_VALID] & 4) && | 115 | if ((mateid[ATA_ID_FIELD_VALID] & 4) && |
diff --git a/drivers/md/bitmap.c b/drivers/md/bitmap.c index ac89a5deaca2..ab7c8e4a61f9 100644 --- a/drivers/md/bitmap.c +++ b/drivers/md/bitmap.c | |||
| @@ -208,16 +208,19 @@ static void bitmap_checkfree(struct bitmap *bitmap, unsigned long page) | |||
| 208 | */ | 208 | */ |
| 209 | 209 | ||
| 210 | /* IO operations when bitmap is stored near all superblocks */ | 210 | /* IO operations when bitmap is stored near all superblocks */ |
| 211 | static struct page *read_sb_page(mddev_t *mddev, long offset, unsigned long index) | 211 | static struct page *read_sb_page(mddev_t *mddev, long offset, |
| 212 | struct page *page, | ||
| 213 | unsigned long index, int size) | ||
| 212 | { | 214 | { |
| 213 | /* choose a good rdev and read the page from there */ | 215 | /* choose a good rdev and read the page from there */ |
| 214 | 216 | ||
| 215 | mdk_rdev_t *rdev; | 217 | mdk_rdev_t *rdev; |
| 216 | struct list_head *tmp; | 218 | struct list_head *tmp; |
| 217 | struct page *page = alloc_page(GFP_KERNEL); | ||
| 218 | sector_t target; | 219 | sector_t target; |
| 219 | 220 | ||
| 220 | if (!page) | 221 | if (!page) |
| 222 | page = alloc_page(GFP_KERNEL); | ||
| 223 | if (!page) | ||
| 221 | return ERR_PTR(-ENOMEM); | 224 | return ERR_PTR(-ENOMEM); |
| 222 | 225 | ||
| 223 | rdev_for_each(rdev, tmp, mddev) { | 226 | rdev_for_each(rdev, tmp, mddev) { |
| @@ -227,7 +230,9 @@ static struct page *read_sb_page(mddev_t *mddev, long offset, unsigned long inde | |||
| 227 | 230 | ||
| 228 | target = rdev->sb_start + offset + index * (PAGE_SIZE/512); | 231 | target = rdev->sb_start + offset + index * (PAGE_SIZE/512); |
| 229 | 232 | ||
| 230 | if (sync_page_io(rdev->bdev, target, PAGE_SIZE, page, READ)) { | 233 | if (sync_page_io(rdev->bdev, target, |
| 234 | roundup(size, bdev_hardsect_size(rdev->bdev)), | ||
| 235 | page, READ)) { | ||
| 231 | page->index = index; | 236 | page->index = index; |
| 232 | attach_page_buffers(page, NULL); /* so that free_buffer will | 237 | attach_page_buffers(page, NULL); /* so that free_buffer will |
| 233 | * quietly no-op */ | 238 | * quietly no-op */ |
| @@ -544,7 +549,9 @@ static int bitmap_read_sb(struct bitmap *bitmap) | |||
| 544 | 549 | ||
| 545 | bitmap->sb_page = read_page(bitmap->file, 0, bitmap, bytes); | 550 | bitmap->sb_page = read_page(bitmap->file, 0, bitmap, bytes); |
| 546 | } else { | 551 | } else { |
| 547 | bitmap->sb_page = read_sb_page(bitmap->mddev, bitmap->offset, 0); | 552 | bitmap->sb_page = read_sb_page(bitmap->mddev, bitmap->offset, |
| 553 | NULL, | ||
| 554 | 0, sizeof(bitmap_super_t)); | ||
| 548 | } | 555 | } |
| 549 | if (IS_ERR(bitmap->sb_page)) { | 556 | if (IS_ERR(bitmap->sb_page)) { |
| 550 | err = PTR_ERR(bitmap->sb_page); | 557 | err = PTR_ERR(bitmap->sb_page); |
| @@ -957,11 +964,16 @@ static int bitmap_init_from_disk(struct bitmap *bitmap, sector_t start) | |||
| 957 | */ | 964 | */ |
| 958 | page = bitmap->sb_page; | 965 | page = bitmap->sb_page; |
| 959 | offset = sizeof(bitmap_super_t); | 966 | offset = sizeof(bitmap_super_t); |
| 967 | read_sb_page(bitmap->mddev, bitmap->offset, | ||
| 968 | page, | ||
| 969 | index, count); | ||
| 960 | } else if (file) { | 970 | } else if (file) { |
| 961 | page = read_page(file, index, bitmap, count); | 971 | page = read_page(file, index, bitmap, count); |
| 962 | offset = 0; | 972 | offset = 0; |
| 963 | } else { | 973 | } else { |
| 964 | page = read_sb_page(bitmap->mddev, bitmap->offset, index); | 974 | page = read_sb_page(bitmap->mddev, bitmap->offset, |
| 975 | NULL, | ||
| 976 | index, count); | ||
| 965 | offset = 0; | 977 | offset = 0; |
| 966 | } | 978 | } |
| 967 | if (IS_ERR(page)) { /* read error */ | 979 | if (IS_ERR(page)) { /* read error */ |
diff --git a/drivers/message/fusion/mptscsih.c b/drivers/message/fusion/mptscsih.c index d62fd4f6b52e..ee090413e598 100644 --- a/drivers/message/fusion/mptscsih.c +++ b/drivers/message/fusion/mptscsih.c | |||
| @@ -2008,6 +2008,9 @@ mptscsih_host_reset(struct scsi_cmnd *SCpnt) | |||
| 2008 | return FAILED; | 2008 | return FAILED; |
| 2009 | } | 2009 | } |
| 2010 | 2010 | ||
| 2011 | /* make sure we have no outstanding commands at this stage */ | ||
| 2012 | mptscsih_flush_running_cmds(hd); | ||
| 2013 | |||
| 2011 | ioc = hd->ioc; | 2014 | ioc = hd->ioc; |
| 2012 | printk(MYIOC_s_INFO_FMT "attempting host reset! (sc=%p)\n", | 2015 | printk(MYIOC_s_INFO_FMT "attempting host reset! (sc=%p)\n", |
| 2013 | ioc->name, SCpnt); | 2016 | ioc->name, SCpnt); |
diff --git a/drivers/net/ppp_generic.c b/drivers/net/ppp_generic.c index 7e857e938adb..714a23035de1 100644 --- a/drivers/net/ppp_generic.c +++ b/drivers/net/ppp_generic.c | |||
| @@ -116,6 +116,7 @@ struct ppp { | |||
| 116 | unsigned long last_xmit; /* jiffies when last pkt sent 9c */ | 116 | unsigned long last_xmit; /* jiffies when last pkt sent 9c */ |
| 117 | unsigned long last_recv; /* jiffies when last pkt rcvd a0 */ | 117 | unsigned long last_recv; /* jiffies when last pkt rcvd a0 */ |
| 118 | struct net_device *dev; /* network interface device a4 */ | 118 | struct net_device *dev; /* network interface device a4 */ |
| 119 | int closing; /* is device closing down? a8 */ | ||
| 119 | #ifdef CONFIG_PPP_MULTILINK | 120 | #ifdef CONFIG_PPP_MULTILINK |
| 120 | int nxchan; /* next channel to send something on */ | 121 | int nxchan; /* next channel to send something on */ |
| 121 | u32 nxseq; /* next sequence number to send */ | 122 | u32 nxseq; /* next sequence number to send */ |
| @@ -995,7 +996,7 @@ ppp_xmit_process(struct ppp *ppp) | |||
| 995 | struct sk_buff *skb; | 996 | struct sk_buff *skb; |
| 996 | 997 | ||
| 997 | ppp_xmit_lock(ppp); | 998 | ppp_xmit_lock(ppp); |
| 998 | if (ppp->dev) { | 999 | if (!ppp->closing) { |
| 999 | ppp_push(ppp); | 1000 | ppp_push(ppp); |
| 1000 | while (!ppp->xmit_pending | 1001 | while (!ppp->xmit_pending |
| 1001 | && (skb = skb_dequeue(&ppp->file.xq))) | 1002 | && (skb = skb_dequeue(&ppp->file.xq))) |
| @@ -1463,8 +1464,7 @@ static inline void | |||
| 1463 | ppp_do_recv(struct ppp *ppp, struct sk_buff *skb, struct channel *pch) | 1464 | ppp_do_recv(struct ppp *ppp, struct sk_buff *skb, struct channel *pch) |
| 1464 | { | 1465 | { |
| 1465 | ppp_recv_lock(ppp); | 1466 | ppp_recv_lock(ppp); |
| 1466 | /* ppp->dev == 0 means interface is closing down */ | 1467 | if (!ppp->closing) |
| 1467 | if (ppp->dev) | ||
| 1468 | ppp_receive_frame(ppp, skb, pch); | 1468 | ppp_receive_frame(ppp, skb, pch); |
| 1469 | else | 1469 | else |
| 1470 | kfree_skb(skb); | 1470 | kfree_skb(skb); |
| @@ -2498,18 +2498,16 @@ init_ppp_file(struct ppp_file *pf, int kind) | |||
| 2498 | */ | 2498 | */ |
| 2499 | static void ppp_shutdown_interface(struct ppp *ppp) | 2499 | static void ppp_shutdown_interface(struct ppp *ppp) |
| 2500 | { | 2500 | { |
| 2501 | struct net_device *dev; | ||
| 2502 | |||
| 2503 | mutex_lock(&all_ppp_mutex); | 2501 | mutex_lock(&all_ppp_mutex); |
| 2504 | ppp_lock(ppp); | ||
| 2505 | dev = ppp->dev; | ||
| 2506 | ppp->dev = NULL; | ||
| 2507 | ppp_unlock(ppp); | ||
| 2508 | /* This will call dev_close() for us. */ | 2502 | /* This will call dev_close() for us. */ |
| 2509 | if (dev) { | 2503 | ppp_lock(ppp); |
| 2510 | unregister_netdev(dev); | 2504 | if (!ppp->closing) { |
| 2511 | free_netdev(dev); | 2505 | ppp->closing = 1; |
| 2512 | } | 2506 | ppp_unlock(ppp); |
| 2507 | unregister_netdev(ppp->dev); | ||
| 2508 | } else | ||
| 2509 | ppp_unlock(ppp); | ||
| 2510 | |||
| 2513 | cardmap_set(&all_ppp_units, ppp->file.index, NULL); | 2511 | cardmap_set(&all_ppp_units, ppp->file.index, NULL); |
| 2514 | ppp->file.dead = 1; | 2512 | ppp->file.dead = 1; |
| 2515 | ppp->owner = NULL; | 2513 | ppp->owner = NULL; |
| @@ -2554,7 +2552,7 @@ static void ppp_destroy_interface(struct ppp *ppp) | |||
| 2554 | if (ppp->xmit_pending) | 2552 | if (ppp->xmit_pending) |
| 2555 | kfree_skb(ppp->xmit_pending); | 2553 | kfree_skb(ppp->xmit_pending); |
| 2556 | 2554 | ||
| 2557 | kfree(ppp); | 2555 | free_netdev(ppp->dev); |
| 2558 | } | 2556 | } |
| 2559 | 2557 | ||
| 2560 | /* | 2558 | /* |
| @@ -2616,7 +2614,7 @@ ppp_connect_channel(struct channel *pch, int unit) | |||
| 2616 | if (pch->file.hdrlen > ppp->file.hdrlen) | 2614 | if (pch->file.hdrlen > ppp->file.hdrlen) |
| 2617 | ppp->file.hdrlen = pch->file.hdrlen; | 2615 | ppp->file.hdrlen = pch->file.hdrlen; |
| 2618 | hdrlen = pch->file.hdrlen + 2; /* for protocol bytes */ | 2616 | hdrlen = pch->file.hdrlen + 2; /* for protocol bytes */ |
| 2619 | if (ppp->dev && hdrlen > ppp->dev->hard_header_len) | 2617 | if (hdrlen > ppp->dev->hard_header_len) |
| 2620 | ppp->dev->hard_header_len = hdrlen; | 2618 | ppp->dev->hard_header_len = hdrlen; |
| 2621 | list_add_tail(&pch->clist, &ppp->channels); | 2619 | list_add_tail(&pch->clist, &ppp->channels); |
| 2622 | ++ppp->n_channels; | 2620 | ++ppp->n_channels; |
diff --git a/drivers/pci/hotplug/acpiphp.h b/drivers/pci/hotplug/acpiphp.h index f9e244da30ae..9bcb6cbd5aa9 100644 --- a/drivers/pci/hotplug/acpiphp.h +++ b/drivers/pci/hotplug/acpiphp.h | |||
| @@ -113,7 +113,7 @@ struct acpiphp_slot { | |||
| 113 | 113 | ||
| 114 | u8 device; /* pci device# */ | 114 | u8 device; /* pci device# */ |
| 115 | 115 | ||
| 116 | u32 sun; /* ACPI _SUN (slot unique number) */ | 116 | unsigned long long sun; /* ACPI _SUN (slot unique number) */ |
| 117 | u32 flags; /* see below */ | 117 | u32 flags; /* see below */ |
| 118 | }; | 118 | }; |
| 119 | 119 | ||
diff --git a/drivers/pci/hotplug/acpiphp_core.c b/drivers/pci/hotplug/acpiphp_core.c index 95b536a23d25..43c10bd261b4 100644 --- a/drivers/pci/hotplug/acpiphp_core.c +++ b/drivers/pci/hotplug/acpiphp_core.c | |||
| @@ -337,7 +337,7 @@ int acpiphp_register_hotplug_slot(struct acpiphp_slot *acpiphp_slot) | |||
| 337 | slot->hotplug_slot->info->cur_bus_speed = PCI_SPEED_UNKNOWN; | 337 | slot->hotplug_slot->info->cur_bus_speed = PCI_SPEED_UNKNOWN; |
| 338 | 338 | ||
| 339 | acpiphp_slot->slot = slot; | 339 | acpiphp_slot->slot = slot; |
| 340 | snprintf(name, SLOT_NAME_SIZE, "%u", slot->acpi_slot->sun); | 340 | snprintf(name, SLOT_NAME_SIZE, "%llu", slot->acpi_slot->sun); |
| 341 | 341 | ||
| 342 | retval = pci_hp_register(slot->hotplug_slot, | 342 | retval = pci_hp_register(slot->hotplug_slot, |
| 343 | acpiphp_slot->bridge->pci_bus, | 343 | acpiphp_slot->bridge->pci_bus, |
diff --git a/drivers/pci/hotplug/acpiphp_glue.c b/drivers/pci/hotplug/acpiphp_glue.c index 955aae4071f7..3affc6472e65 100644 --- a/drivers/pci/hotplug/acpiphp_glue.c +++ b/drivers/pci/hotplug/acpiphp_glue.c | |||
| @@ -255,13 +255,13 @@ register_slot(acpi_handle handle, u32 lvl, void *context, void **rv) | |||
| 255 | 255 | ||
| 256 | bridge->nr_slots++; | 256 | bridge->nr_slots++; |
| 257 | 257 | ||
| 258 | dbg("found ACPI PCI Hotplug slot %d at PCI %04x:%02x:%02x\n", | 258 | dbg("found ACPI PCI Hotplug slot %llu at PCI %04x:%02x:%02x\n", |
| 259 | slot->sun, pci_domain_nr(bridge->pci_bus), | 259 | slot->sun, pci_domain_nr(bridge->pci_bus), |
| 260 | bridge->pci_bus->number, slot->device); | 260 | bridge->pci_bus->number, slot->device); |
| 261 | retval = acpiphp_register_hotplug_slot(slot); | 261 | retval = acpiphp_register_hotplug_slot(slot); |
| 262 | if (retval) { | 262 | if (retval) { |
| 263 | if (retval == -EBUSY) | 263 | if (retval == -EBUSY) |
| 264 | warn("Slot %d already registered by another " | 264 | warn("Slot %llu already registered by another " |
| 265 | "hotplug driver\n", slot->sun); | 265 | "hotplug driver\n", slot->sun); |
| 266 | else | 266 | else |
| 267 | warn("acpiphp_register_hotplug_slot failed " | 267 | warn("acpiphp_register_hotplug_slot failed " |
diff --git a/drivers/pci/hotplug/ibmphp_core.c b/drivers/pci/hotplug/ibmphp_core.c index c892daae74d6..633e743442ac 100644 --- a/drivers/pci/hotplug/ibmphp_core.c +++ b/drivers/pci/hotplug/ibmphp_core.c | |||
| @@ -1402,10 +1402,6 @@ static int __init ibmphp_init(void) | |||
| 1402 | goto error; | 1402 | goto error; |
| 1403 | } | 1403 | } |
| 1404 | 1404 | ||
| 1405 | /* lock ourselves into memory with a module | ||
| 1406 | * count of -1 so that no one can unload us. */ | ||
| 1407 | module_put(THIS_MODULE); | ||
| 1408 | |||
| 1409 | exit: | 1405 | exit: |
| 1410 | return rc; | 1406 | return rc; |
| 1411 | 1407 | ||
| @@ -1423,4 +1419,3 @@ static void __exit ibmphp_exit(void) | |||
| 1423 | } | 1419 | } |
| 1424 | 1420 | ||
| 1425 | module_init(ibmphp_init); | 1421 | module_init(ibmphp_init); |
| 1426 | module_exit(ibmphp_exit); | ||
diff --git a/drivers/pci/hotplug/pciehp_core.c b/drivers/pci/hotplug/pciehp_core.c index 4b23bc39b11e..39cf248d24e3 100644 --- a/drivers/pci/hotplug/pciehp_core.c +++ b/drivers/pci/hotplug/pciehp_core.c | |||
| @@ -432,18 +432,19 @@ static int pciehp_probe(struct pcie_device *dev, const struct pcie_port_service_ | |||
| 432 | goto err_out_release_ctlr; | 432 | goto err_out_release_ctlr; |
| 433 | } | 433 | } |
| 434 | 434 | ||
| 435 | /* Check if slot is occupied */ | ||
| 435 | t_slot = pciehp_find_slot(ctrl, ctrl->slot_device_offset); | 436 | t_slot = pciehp_find_slot(ctrl, ctrl->slot_device_offset); |
| 436 | 437 | t_slot->hpc_ops->get_adapter_status(t_slot, &value); | |
| 437 | t_slot->hpc_ops->get_adapter_status(t_slot, &value); /* Check if slot is occupied */ | 438 | if (value) { |
| 438 | if (value && pciehp_force) { | 439 | if (pciehp_force) |
| 439 | rc = pciehp_enable_slot(t_slot); | 440 | pciehp_enable_slot(t_slot); |
| 440 | if (rc) /* -ENODEV: shouldn't happen, but deal with it */ | 441 | } else { |
| 441 | value = 0; | 442 | /* Power off slot if not occupied */ |
| 442 | } | 443 | if (POWER_CTRL(ctrl)) { |
| 443 | if ((POWER_CTRL(ctrl)) && !value) { | 444 | rc = t_slot->hpc_ops->power_off_slot(t_slot); |
| 444 | rc = t_slot->hpc_ops->power_off_slot(t_slot); /* Power off slot if not occupied*/ | 445 | if (rc) |
| 445 | if (rc) | 446 | goto err_out_free_ctrl_slot; |
| 446 | goto err_out_free_ctrl_slot; | 447 | } |
| 447 | } | 448 | } |
| 448 | 449 | ||
| 449 | return 0; | 450 | return 0; |
diff --git a/drivers/pci/pcie/aer/aerdrv_core.c b/drivers/pci/pcie/aer/aerdrv_core.c index dfc63d01f20a..aac7006949f1 100644 --- a/drivers/pci/pcie/aer/aerdrv_core.c +++ b/drivers/pci/pcie/aer/aerdrv_core.c | |||
| @@ -252,7 +252,7 @@ static void report_resume(struct pci_dev *dev, void *data) | |||
| 252 | 252 | ||
| 253 | if (!dev->driver || | 253 | if (!dev->driver || |
| 254 | !dev->driver->err_handler || | 254 | !dev->driver->err_handler || |
| 255 | !dev->driver->err_handler->slot_reset) | 255 | !dev->driver->err_handler->resume) |
| 256 | return; | 256 | return; |
| 257 | 257 | ||
| 258 | err_handler = dev->driver->err_handler; | 258 | err_handler = dev->driver->err_handler; |
diff --git a/drivers/scsi/aacraid/linit.c b/drivers/scsi/aacraid/linit.c index 162cd927d94b..94acbeed4e7c 100644 --- a/drivers/scsi/aacraid/linit.c +++ b/drivers/scsi/aacraid/linit.c | |||
| @@ -175,8 +175,8 @@ static struct aac_driver_ident aac_drivers[] = { | |||
| 175 | { aac_rx_init, "percraid", "DELL ", "PERCRAID ", 2, AAC_QUIRK_31BIT | AAC_QUIRK_34SG | AAC_QUIRK_SCSI_32 }, /* PERC 3/Di (Boxster/PERC3DiB) */ | 175 | { aac_rx_init, "percraid", "DELL ", "PERCRAID ", 2, AAC_QUIRK_31BIT | AAC_QUIRK_34SG | AAC_QUIRK_SCSI_32 }, /* PERC 3/Di (Boxster/PERC3DiB) */ |
| 176 | { aac_rx_init, "aacraid", "ADAPTEC ", "catapult ", 2, AAC_QUIRK_31BIT | AAC_QUIRK_34SG | AAC_QUIRK_SCSI_32 }, /* catapult */ | 176 | { aac_rx_init, "aacraid", "ADAPTEC ", "catapult ", 2, AAC_QUIRK_31BIT | AAC_QUIRK_34SG | AAC_QUIRK_SCSI_32 }, /* catapult */ |
| 177 | { aac_rx_init, "aacraid", "ADAPTEC ", "tomcat ", 2, AAC_QUIRK_31BIT | AAC_QUIRK_34SG | AAC_QUIRK_SCSI_32 }, /* tomcat */ | 177 | { aac_rx_init, "aacraid", "ADAPTEC ", "tomcat ", 2, AAC_QUIRK_31BIT | AAC_QUIRK_34SG | AAC_QUIRK_SCSI_32 }, /* tomcat */ |
| 178 | { aac_rx_init, "aacraid", "ADAPTEC ", "Adaptec 2120S ", 1, AAC_QUIRK_31BIT | AAC_QUIRK_34SG | AAC_QUIRK_SCSI_32 }, /* Adaptec 2120S (Crusader) */ | 178 | { aac_rx_init, "aacraid", "ADAPTEC ", "Adaptec 2120S ", 1, AAC_QUIRK_31BIT | AAC_QUIRK_34SG }, /* Adaptec 2120S (Crusader) */ |
| 179 | { aac_rx_init, "aacraid", "ADAPTEC ", "Adaptec 2200S ", 2, AAC_QUIRK_31BIT | AAC_QUIRK_34SG | AAC_QUIRK_SCSI_32 }, /* Adaptec 2200S (Vulcan) */ | 179 | { aac_rx_init, "aacraid", "ADAPTEC ", "Adaptec 2200S ", 2, AAC_QUIRK_31BIT | AAC_QUIRK_34SG }, /* Adaptec 2200S (Vulcan) */ |
| 180 | { aac_rx_init, "aacraid", "ADAPTEC ", "Adaptec 2200S ", 2, AAC_QUIRK_31BIT | AAC_QUIRK_34SG | AAC_QUIRK_SCSI_32 }, /* Adaptec 2200S (Vulcan-2m) */ | 180 | { aac_rx_init, "aacraid", "ADAPTEC ", "Adaptec 2200S ", 2, AAC_QUIRK_31BIT | AAC_QUIRK_34SG | AAC_QUIRK_SCSI_32 }, /* Adaptec 2200S (Vulcan-2m) */ |
| 181 | { aac_rx_init, "aacraid", "Legend ", "Legend S220 ", 1, AAC_QUIRK_31BIT | AAC_QUIRK_34SG | AAC_QUIRK_SCSI_32 }, /* Legend S220 (Legend Crusader) */ | 181 | { aac_rx_init, "aacraid", "Legend ", "Legend S220 ", 1, AAC_QUIRK_31BIT | AAC_QUIRK_34SG | AAC_QUIRK_SCSI_32 }, /* Legend S220 (Legend Crusader) */ |
| 182 | { aac_rx_init, "aacraid", "Legend ", "Legend S230 ", 2, AAC_QUIRK_31BIT | AAC_QUIRK_34SG | AAC_QUIRK_SCSI_32 }, /* Legend S230 (Legend Vulcan) */ | 182 | { aac_rx_init, "aacraid", "Legend ", "Legend S230 ", 2, AAC_QUIRK_31BIT | AAC_QUIRK_34SG | AAC_QUIRK_SCSI_32 }, /* Legend S230 (Legend Vulcan) */ |
diff --git a/drivers/scsi/ibmvscsi/ibmvstgt.c b/drivers/scsi/ibmvscsi/ibmvstgt.c index 2a5b29d12172..e2dd6a45924a 100644 --- a/drivers/scsi/ibmvscsi/ibmvstgt.c +++ b/drivers/scsi/ibmvscsi/ibmvstgt.c | |||
| @@ -864,21 +864,23 @@ static int ibmvstgt_probe(struct vio_dev *dev, const struct vio_device_id *id) | |||
| 864 | 864 | ||
| 865 | INIT_WORK(&vport->crq_work, handle_crq); | 865 | INIT_WORK(&vport->crq_work, handle_crq); |
| 866 | 866 | ||
| 867 | err = crq_queue_create(&vport->crq_queue, target); | 867 | err = scsi_add_host(shost, target->dev); |
| 868 | if (err) | 868 | if (err) |
| 869 | goto free_srp_target; | 869 | goto free_srp_target; |
| 870 | 870 | ||
| 871 | err = scsi_add_host(shost, target->dev); | 871 | err = scsi_tgt_alloc_queue(shost); |
| 872 | if (err) | 872 | if (err) |
| 873 | goto destroy_queue; | 873 | goto remove_host; |
| 874 | 874 | ||
| 875 | err = scsi_tgt_alloc_queue(shost); | 875 | err = crq_queue_create(&vport->crq_queue, target); |
| 876 | if (err) | 876 | if (err) |
| 877 | goto destroy_queue; | 877 | goto free_queue; |
| 878 | 878 | ||
| 879 | return 0; | 879 | return 0; |
| 880 | destroy_queue: | 880 | free_queue: |
| 881 | crq_queue_destroy(target); | 881 | scsi_tgt_free_queue(shost); |
| 882 | remove_host: | ||
| 883 | scsi_remove_host(shost); | ||
| 882 | free_srp_target: | 884 | free_srp_target: |
| 883 | srp_target_free(target); | 885 | srp_target_free(target); |
| 884 | put_host: | 886 | put_host: |
diff --git a/drivers/scsi/libiscsi.c b/drivers/scsi/libiscsi.c index 801c7cf54d2e..3fdee7370ccc 100644 --- a/drivers/scsi/libiscsi.c +++ b/drivers/scsi/libiscsi.c | |||
| @@ -489,12 +489,6 @@ __iscsi_conn_send_pdu(struct iscsi_conn *conn, struct iscsi_hdr *hdr, | |||
| 489 | if (!__kfifo_get(session->cmdpool.queue, | 489 | if (!__kfifo_get(session->cmdpool.queue, |
| 490 | (void*)&task, sizeof(void*))) | 490 | (void*)&task, sizeof(void*))) |
| 491 | return NULL; | 491 | return NULL; |
| 492 | |||
| 493 | if ((hdr->opcode == (ISCSI_OP_NOOP_OUT | ISCSI_OP_IMMEDIATE)) && | ||
| 494 | hdr->ttt == RESERVED_ITT) { | ||
| 495 | conn->ping_task = task; | ||
| 496 | conn->last_ping = jiffies; | ||
| 497 | } | ||
| 498 | } | 492 | } |
| 499 | /* | 493 | /* |
| 500 | * released in complete pdu for task we expect a response for, and | 494 | * released in complete pdu for task we expect a response for, and |
| @@ -703,6 +697,11 @@ static void iscsi_send_nopout(struct iscsi_conn *conn, struct iscsi_nopin *rhdr) | |||
| 703 | task = __iscsi_conn_send_pdu(conn, (struct iscsi_hdr *)&hdr, NULL, 0); | 697 | task = __iscsi_conn_send_pdu(conn, (struct iscsi_hdr *)&hdr, NULL, 0); |
| 704 | if (!task) | 698 | if (!task) |
| 705 | iscsi_conn_printk(KERN_ERR, conn, "Could not send nopout\n"); | 699 | iscsi_conn_printk(KERN_ERR, conn, "Could not send nopout\n"); |
| 700 | else if (!rhdr) { | ||
| 701 | /* only track our nops */ | ||
| 702 | conn->ping_task = task; | ||
| 703 | conn->last_ping = jiffies; | ||
| 704 | } | ||
| 706 | } | 705 | } |
| 707 | 706 | ||
| 708 | static int iscsi_handle_reject(struct iscsi_conn *conn, struct iscsi_hdr *hdr, | 707 | static int iscsi_handle_reject(struct iscsi_conn *conn, struct iscsi_hdr *hdr, |
diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c index fa45a1a66867..148d3af92aef 100644 --- a/drivers/scsi/scsi_lib.c +++ b/drivers/scsi/scsi_lib.c | |||
| @@ -648,8 +648,8 @@ static void scsi_requeue_command(struct request_queue *q, struct scsi_cmnd *cmd) | |||
| 648 | struct request *req = cmd->request; | 648 | struct request *req = cmd->request; |
| 649 | unsigned long flags; | 649 | unsigned long flags; |
| 650 | 650 | ||
| 651 | scsi_unprep_request(req); | ||
| 652 | spin_lock_irqsave(q->queue_lock, flags); | 651 | spin_lock_irqsave(q->queue_lock, flags); |
| 652 | scsi_unprep_request(req); | ||
| 653 | blk_requeue_request(q, req); | 653 | blk_requeue_request(q, req); |
| 654 | spin_unlock_irqrestore(q->queue_lock, flags); | 654 | spin_unlock_irqrestore(q->queue_lock, flags); |
| 655 | 655 | ||
diff --git a/fs/9p/fid.c b/fs/9p/fid.c index 3031e3233dd6..2a983d49d19c 100644 --- a/fs/9p/fid.c +++ b/fs/9p/fid.c | |||
| @@ -45,7 +45,7 @@ int v9fs_fid_add(struct dentry *dentry, struct p9_fid *fid) | |||
| 45 | struct v9fs_dentry *dent; | 45 | struct v9fs_dentry *dent; |
| 46 | 46 | ||
| 47 | P9_DPRINTK(P9_DEBUG_VFS, "fid %d dentry %s\n", | 47 | P9_DPRINTK(P9_DEBUG_VFS, "fid %d dentry %s\n", |
| 48 | fid->fid, dentry->d_iname); | 48 | fid->fid, dentry->d_name.name); |
| 49 | 49 | ||
| 50 | dent = dentry->d_fsdata; | 50 | dent = dentry->d_fsdata; |
| 51 | if (!dent) { | 51 | if (!dent) { |
| @@ -79,7 +79,7 @@ static struct p9_fid *v9fs_fid_find(struct dentry *dentry, u32 uid, int any) | |||
| 79 | struct p9_fid *fid, *ret; | 79 | struct p9_fid *fid, *ret; |
| 80 | 80 | ||
| 81 | P9_DPRINTK(P9_DEBUG_VFS, " dentry: %s (%p) uid %d any %d\n", | 81 | P9_DPRINTK(P9_DEBUG_VFS, " dentry: %s (%p) uid %d any %d\n", |
| 82 | dentry->d_iname, dentry, uid, any); | 82 | dentry->d_name.name, dentry, uid, any); |
| 83 | dent = (struct v9fs_dentry *) dentry->d_fsdata; | 83 | dent = (struct v9fs_dentry *) dentry->d_fsdata; |
| 84 | ret = NULL; | 84 | ret = NULL; |
| 85 | if (dent) { | 85 | if (dent) { |
diff --git a/fs/9p/v9fs.c b/fs/9p/v9fs.c index 24eb01087b6d..332b5ff02fec 100644 --- a/fs/9p/v9fs.c +++ b/fs/9p/v9fs.c | |||
| @@ -160,7 +160,7 @@ static int v9fs_parse_options(struct v9fs_session_info *v9ses) | |||
| 160 | v9ses->flags |= V9FS_ACCESS_ANY; | 160 | v9ses->flags |= V9FS_ACCESS_ANY; |
| 161 | else { | 161 | else { |
| 162 | v9ses->flags |= V9FS_ACCESS_SINGLE; | 162 | v9ses->flags |= V9FS_ACCESS_SINGLE; |
| 163 | v9ses->uid = simple_strtol(s, &e, 10); | 163 | v9ses->uid = simple_strtoul(s, &e, 10); |
| 164 | if (*e != '\0') | 164 | if (*e != '\0') |
| 165 | v9ses->uid = ~0; | 165 | v9ses->uid = ~0; |
| 166 | } | 166 | } |
diff --git a/fs/9p/vfs_dentry.c b/fs/9p/vfs_dentry.c index f9534f18df0a..06dcc7c4f234 100644 --- a/fs/9p/vfs_dentry.c +++ b/fs/9p/vfs_dentry.c | |||
| @@ -52,7 +52,8 @@ | |||
| 52 | 52 | ||
| 53 | static int v9fs_dentry_delete(struct dentry *dentry) | 53 | static int v9fs_dentry_delete(struct dentry *dentry) |
| 54 | { | 54 | { |
| 55 | P9_DPRINTK(P9_DEBUG_VFS, " dentry: %s (%p)\n", dentry->d_iname, dentry); | 55 | P9_DPRINTK(P9_DEBUG_VFS, " dentry: %s (%p)\n", dentry->d_name.name, |
| 56 | dentry); | ||
| 56 | 57 | ||
| 57 | return 1; | 58 | return 1; |
| 58 | } | 59 | } |
| @@ -69,7 +70,8 @@ static int v9fs_dentry_delete(struct dentry *dentry) | |||
| 69 | static int v9fs_cached_dentry_delete(struct dentry *dentry) | 70 | static int v9fs_cached_dentry_delete(struct dentry *dentry) |
| 70 | { | 71 | { |
| 71 | struct inode *inode = dentry->d_inode; | 72 | struct inode *inode = dentry->d_inode; |
| 72 | P9_DPRINTK(P9_DEBUG_VFS, " dentry: %s (%p)\n", dentry->d_iname, dentry); | 73 | P9_DPRINTK(P9_DEBUG_VFS, " dentry: %s (%p)\n", dentry->d_name.name, |
| 74 | dentry); | ||
| 73 | 75 | ||
| 74 | if(!inode) | 76 | if(!inode) |
| 75 | return 1; | 77 | return 1; |
| @@ -88,7 +90,8 @@ void v9fs_dentry_release(struct dentry *dentry) | |||
| 88 | struct v9fs_dentry *dent; | 90 | struct v9fs_dentry *dent; |
| 89 | struct p9_fid *temp, *current_fid; | 91 | struct p9_fid *temp, *current_fid; |
| 90 | 92 | ||
| 91 | P9_DPRINTK(P9_DEBUG_VFS, " dentry: %s (%p)\n", dentry->d_iname, dentry); | 93 | P9_DPRINTK(P9_DEBUG_VFS, " dentry: %s (%p)\n", dentry->d_name.name, |
| 94 | dentry); | ||
| 92 | dent = dentry->d_fsdata; | 95 | dent = dentry->d_fsdata; |
| 93 | if (dent) { | 96 | if (dent) { |
| 94 | list_for_each_entry_safe(current_fid, temp, &dent->fidlist, | 97 | list_for_each_entry_safe(current_fid, temp, &dent->fidlist, |
diff --git a/fs/9p/vfs_inode.c b/fs/9p/vfs_inode.c index 8314d3f43b71..2dfcf5487efe 100644 --- a/fs/9p/vfs_inode.c +++ b/fs/9p/vfs_inode.c | |||
| @@ -963,7 +963,8 @@ static int v9fs_vfs_readlink(struct dentry *dentry, char __user * buffer, | |||
| 963 | if (buflen > PATH_MAX) | 963 | if (buflen > PATH_MAX) |
| 964 | buflen = PATH_MAX; | 964 | buflen = PATH_MAX; |
| 965 | 965 | ||
| 966 | P9_DPRINTK(P9_DEBUG_VFS, " dentry: %s (%p)\n", dentry->d_iname, dentry); | 966 | P9_DPRINTK(P9_DEBUG_VFS, " dentry: %s (%p)\n", dentry->d_name.name, |
| 967 | dentry); | ||
| 967 | 968 | ||
| 968 | retval = v9fs_readlink(dentry, link, buflen); | 969 | retval = v9fs_readlink(dentry, link, buflen); |
| 969 | 970 | ||
| @@ -1022,7 +1023,8 @@ v9fs_vfs_put_link(struct dentry *dentry, struct nameidata *nd, void *p) | |||
| 1022 | { | 1023 | { |
| 1023 | char *s = nd_get_link(nd); | 1024 | char *s = nd_get_link(nd); |
| 1024 | 1025 | ||
| 1025 | P9_DPRINTK(P9_DEBUG_VFS, " %s %s\n", dentry->d_name.name, s); | 1026 | P9_DPRINTK(P9_DEBUG_VFS, " %s %s\n", dentry->d_name.name, |
| 1027 | IS_ERR(s) ? "<error>" : s); | ||
| 1026 | if (!IS_ERR(s)) | 1028 | if (!IS_ERR(s)) |
| 1027 | __putname(s); | 1029 | __putname(s); |
| 1028 | } | 1030 | } |
diff --git a/kernel/posix-timers.c b/kernel/posix-timers.c index 5e79c662294b..a140e44eebba 100644 --- a/kernel/posix-timers.c +++ b/kernel/posix-timers.c | |||
| @@ -197,6 +197,11 @@ static int common_timer_create(struct k_itimer *new_timer) | |||
| 197 | return 0; | 197 | return 0; |
| 198 | } | 198 | } |
| 199 | 199 | ||
| 200 | static int no_timer_create(struct k_itimer *new_timer) | ||
| 201 | { | ||
| 202 | return -EOPNOTSUPP; | ||
| 203 | } | ||
| 204 | |||
| 200 | /* | 205 | /* |
| 201 | * Return nonzero if we know a priori this clockid_t value is bogus. | 206 | * Return nonzero if we know a priori this clockid_t value is bogus. |
| 202 | */ | 207 | */ |
| @@ -248,6 +253,7 @@ static __init int init_posix_timers(void) | |||
| 248 | .clock_getres = hrtimer_get_res, | 253 | .clock_getres = hrtimer_get_res, |
| 249 | .clock_get = posix_get_monotonic_raw, | 254 | .clock_get = posix_get_monotonic_raw, |
| 250 | .clock_set = do_posix_clock_nosettime, | 255 | .clock_set = do_posix_clock_nosettime, |
| 256 | .timer_create = no_timer_create, | ||
| 251 | }; | 257 | }; |
| 252 | 258 | ||
| 253 | register_posix_clock(CLOCK_REALTIME, &clock_realtime); | 259 | register_posix_clock(CLOCK_REALTIME, &clock_realtime); |
diff --git a/net/bluetooth/rfcomm/core.c b/net/bluetooth/rfcomm/core.c index ba537fae0a4c..ce68e046d963 100644 --- a/net/bluetooth/rfcomm/core.c +++ b/net/bluetooth/rfcomm/core.c | |||
| @@ -1786,8 +1786,6 @@ static inline void rfcomm_accept_connection(struct rfcomm_session *s) | |||
| 1786 | if (err < 0) | 1786 | if (err < 0) |
| 1787 | return; | 1787 | return; |
| 1788 | 1788 | ||
| 1789 | __module_get(nsock->ops->owner); | ||
| 1790 | |||
| 1791 | /* Set our callbacks */ | 1789 | /* Set our callbacks */ |
| 1792 | nsock->sk->sk_data_ready = rfcomm_l2data_ready; | 1790 | nsock->sk->sk_data_ready = rfcomm_l2data_ready; |
| 1793 | nsock->sk->sk_state_change = rfcomm_l2state_change; | 1791 | nsock->sk->sk_state_change = rfcomm_l2state_change; |
diff --git a/net/socket.c b/net/socket.c index 92764d836891..76ba80aeac1a 100644 --- a/net/socket.c +++ b/net/socket.c | |||
| @@ -2307,6 +2307,7 @@ int kernel_accept(struct socket *sock, struct socket **newsock, int flags) | |||
| 2307 | } | 2307 | } |
| 2308 | 2308 | ||
| 2309 | (*newsock)->ops = sock->ops; | 2309 | (*newsock)->ops = sock->ops; |
| 2310 | __module_get((*newsock)->ops->owner); | ||
| 2310 | 2311 | ||
| 2311 | done: | 2312 | done: |
| 2312 | return err; | 2313 | return err; |
diff --git a/sound/pci/hda/patch_sigmatel.c b/sound/pci/hda/patch_sigmatel.c index 5dd3e89f620a..596ceabd6504 100644 --- a/sound/pci/hda/patch_sigmatel.c +++ b/sound/pci/hda/patch_sigmatel.c | |||
| @@ -69,6 +69,7 @@ enum { | |||
| 69 | }; | 69 | }; |
| 70 | 70 | ||
| 71 | enum { | 71 | enum { |
| 72 | STAC_92HD73XX_NO_JD, /* no jack-detection */ | ||
| 72 | STAC_92HD73XX_REF, | 73 | STAC_92HD73XX_REF, |
| 73 | STAC_DELL_M6_AMIC, | 74 | STAC_DELL_M6_AMIC, |
| 74 | STAC_DELL_M6_DMIC, | 75 | STAC_DELL_M6_DMIC, |
| @@ -127,6 +128,7 @@ enum { | |||
| 127 | }; | 128 | }; |
| 128 | 129 | ||
| 129 | enum { | 130 | enum { |
| 131 | STAC_D965_REF_NO_JD, /* no jack-detection */ | ||
| 130 | STAC_D965_REF, | 132 | STAC_D965_REF, |
| 131 | STAC_D965_3ST, | 133 | STAC_D965_3ST, |
| 132 | STAC_D965_5ST, | 134 | STAC_D965_5ST, |
| @@ -1611,6 +1613,7 @@ static unsigned int *stac92hd73xx_brd_tbl[STAC_92HD73XX_MODELS] = { | |||
| 1611 | }; | 1613 | }; |
| 1612 | 1614 | ||
| 1613 | static const char *stac92hd73xx_models[STAC_92HD73XX_MODELS] = { | 1615 | static const char *stac92hd73xx_models[STAC_92HD73XX_MODELS] = { |
| 1616 | [STAC_92HD73XX_NO_JD] = "no-jd", | ||
| 1614 | [STAC_92HD73XX_REF] = "ref", | 1617 | [STAC_92HD73XX_REF] = "ref", |
| 1615 | [STAC_DELL_M6_AMIC] = "dell-m6-amic", | 1618 | [STAC_DELL_M6_AMIC] = "dell-m6-amic", |
| 1616 | [STAC_DELL_M6_DMIC] = "dell-m6-dmic", | 1619 | [STAC_DELL_M6_DMIC] = "dell-m6-dmic", |
| @@ -1640,6 +1643,8 @@ static struct snd_pci_quirk stac92hd73xx_cfg_tbl[] = { | |||
| 1640 | "unknown Dell", STAC_DELL_M6_DMIC), | 1643 | "unknown Dell", STAC_DELL_M6_DMIC), |
| 1641 | SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x029f, | 1644 | SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x029f, |
| 1642 | "Dell Studio 1537", STAC_DELL_M6_DMIC), | 1645 | "Dell Studio 1537", STAC_DELL_M6_DMIC), |
| 1646 | SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x02a0, | ||
| 1647 | "Dell Studio 17", STAC_DELL_M6_DMIC), | ||
| 1643 | {} /* terminator */ | 1648 | {} /* terminator */ |
| 1644 | }; | 1649 | }; |
| 1645 | 1650 | ||
| @@ -2027,6 +2032,7 @@ static unsigned int dell_3st_pin_configs[14] = { | |||
| 2027 | }; | 2032 | }; |
| 2028 | 2033 | ||
| 2029 | static unsigned int *stac927x_brd_tbl[STAC_927X_MODELS] = { | 2034 | static unsigned int *stac927x_brd_tbl[STAC_927X_MODELS] = { |
| 2035 | [STAC_D965_REF_NO_JD] = ref927x_pin_configs, | ||
| 2030 | [STAC_D965_REF] = ref927x_pin_configs, | 2036 | [STAC_D965_REF] = ref927x_pin_configs, |
| 2031 | [STAC_D965_3ST] = d965_3st_pin_configs, | 2037 | [STAC_D965_3ST] = d965_3st_pin_configs, |
| 2032 | [STAC_D965_5ST] = d965_5st_pin_configs, | 2038 | [STAC_D965_5ST] = d965_5st_pin_configs, |
| @@ -2035,6 +2041,7 @@ static unsigned int *stac927x_brd_tbl[STAC_927X_MODELS] = { | |||
| 2035 | }; | 2041 | }; |
| 2036 | 2042 | ||
| 2037 | static const char *stac927x_models[STAC_927X_MODELS] = { | 2043 | static const char *stac927x_models[STAC_927X_MODELS] = { |
| 2044 | [STAC_D965_REF_NO_JD] = "ref-no-jd", | ||
| 2038 | [STAC_D965_REF] = "ref", | 2045 | [STAC_D965_REF] = "ref", |
| 2039 | [STAC_D965_3ST] = "3stack", | 2046 | [STAC_D965_3ST] = "3stack", |
| 2040 | [STAC_D965_5ST] = "5stack", | 2047 | [STAC_D965_5ST] = "5stack", |
| @@ -2896,7 +2903,7 @@ static int stac92xx_auto_create_multi_out_ctls(struct hda_codec *codec, | |||
| 2896 | } | 2903 | } |
| 2897 | 2904 | ||
| 2898 | if ((spec->multiout.num_dacs - cfg->line_outs) > 0 && | 2905 | if ((spec->multiout.num_dacs - cfg->line_outs) > 0 && |
| 2899 | cfg->hp_outs && !spec->multiout.hp_nid) | 2906 | cfg->hp_outs == 1 && !spec->multiout.hp_nid) |
| 2900 | spec->multiout.hp_nid = nid; | 2907 | spec->multiout.hp_nid = nid; |
| 2901 | 2908 | ||
| 2902 | if (cfg->hp_outs > 1 && cfg->line_out_type == AUTO_PIN_LINE_OUT) { | 2909 | if (cfg->hp_outs > 1 && cfg->line_out_type == AUTO_PIN_LINE_OUT) { |
| @@ -4254,14 +4261,17 @@ again: | |||
| 4254 | 4261 | ||
| 4255 | switch (spec->multiout.num_dacs) { | 4262 | switch (spec->multiout.num_dacs) { |
| 4256 | case 0x3: /* 6 Channel */ | 4263 | case 0x3: /* 6 Channel */ |
| 4264 | spec->multiout.hp_nid = 0x17; | ||
| 4257 | spec->mixer = stac92hd73xx_6ch_mixer; | 4265 | spec->mixer = stac92hd73xx_6ch_mixer; |
| 4258 | spec->init = stac92hd73xx_6ch_core_init; | 4266 | spec->init = stac92hd73xx_6ch_core_init; |
| 4259 | break; | 4267 | break; |
| 4260 | case 0x4: /* 8 Channel */ | 4268 | case 0x4: /* 8 Channel */ |
| 4269 | spec->multiout.hp_nid = 0x18; | ||
| 4261 | spec->mixer = stac92hd73xx_8ch_mixer; | 4270 | spec->mixer = stac92hd73xx_8ch_mixer; |
| 4262 | spec->init = stac92hd73xx_8ch_core_init; | 4271 | spec->init = stac92hd73xx_8ch_core_init; |
| 4263 | break; | 4272 | break; |
| 4264 | case 0x5: /* 10 Channel */ | 4273 | case 0x5: /* 10 Channel */ |
| 4274 | spec->multiout.hp_nid = 0x19; | ||
| 4265 | spec->mixer = stac92hd73xx_10ch_mixer; | 4275 | spec->mixer = stac92hd73xx_10ch_mixer; |
| 4266 | spec->init = stac92hd73xx_10ch_core_init; | 4276 | spec->init = stac92hd73xx_10ch_core_init; |
| 4267 | }; | 4277 | }; |
| @@ -4297,6 +4307,7 @@ again: | |||
| 4297 | spec->amp_nids = &stac92hd73xx_amp_nids[DELL_M6_AMP]; | 4307 | spec->amp_nids = &stac92hd73xx_amp_nids[DELL_M6_AMP]; |
| 4298 | spec->eapd_switch = 0; | 4308 | spec->eapd_switch = 0; |
| 4299 | spec->num_amps = 1; | 4309 | spec->num_amps = 1; |
| 4310 | spec->multiout.hp_nid = 0; /* dual HPs */ | ||
| 4300 | 4311 | ||
| 4301 | if (!spec->init) | 4312 | if (!spec->init) |
| 4302 | spec->init = dell_m6_core_init; | 4313 | spec->init = dell_m6_core_init; |
| @@ -4351,6 +4362,9 @@ again: | |||
| 4351 | return err; | 4362 | return err; |
| 4352 | } | 4363 | } |
| 4353 | 4364 | ||
| 4365 | if (spec->board_config == STAC_92HD73XX_NO_JD) | ||
| 4366 | spec->hp_detect = 0; | ||
| 4367 | |||
| 4354 | codec->patch_ops = stac92xx_patch_ops; | 4368 | codec->patch_ops = stac92xx_patch_ops; |
| 4355 | 4369 | ||
| 4356 | return 0; | 4370 | return 0; |
| @@ -4899,6 +4913,10 @@ static int patch_stac927x(struct hda_codec *codec) | |||
| 4899 | */ | 4913 | */ |
| 4900 | codec->bus->needs_damn_long_delay = 1; | 4914 | codec->bus->needs_damn_long_delay = 1; |
| 4901 | 4915 | ||
| 4916 | /* no jack detecion for ref-no-jd model */ | ||
| 4917 | if (spec->board_config == STAC_D965_REF_NO_JD) | ||
| 4918 | spec->hp_detect = 0; | ||
| 4919 | |||
| 4902 | return 0; | 4920 | return 0; |
| 4903 | } | 4921 | } |
| 4904 | 4922 | ||
diff --git a/sound/soc/omap/omap-pcm.c b/sound/soc/omap/omap-pcm.c index e9084fdd2082..acd68efb2b75 100644 --- a/sound/soc/omap/omap-pcm.c +++ b/sound/soc/omap/omap-pcm.c | |||
| @@ -233,7 +233,7 @@ static int omap_pcm_open(struct snd_pcm_substream *substream) | |||
| 233 | if (ret < 0) | 233 | if (ret < 0) |
| 234 | goto out; | 234 | goto out; |
| 235 | 235 | ||
| 236 | prtd = kzalloc(sizeof(prtd), GFP_KERNEL); | 236 | prtd = kzalloc(sizeof(*prtd), GFP_KERNEL); |
| 237 | if (prtd == NULL) { | 237 | if (prtd == NULL) { |
| 238 | ret = -ENOMEM; | 238 | ret = -ENOMEM; |
| 239 | goto out; | 239 | goto out; |
