Changeset 19332
- Timestamp:
- 06/07/12 14:29:21 (12 months ago)
- Location:
- src/linux/universal/linux-3.4
- Files:
-
- 1 deleted
- 89 edited
-
Makefile (modified) (1 diff)
-
arch/arm/mach-ixp4xx/common.c (modified) (5 diffs)
-
arch/arm/mach-ixp4xx/include/mach/gpio.h (deleted)
-
arch/microblaze/Kconfig (modified) (1 diff)
-
arch/mips/include/asm/mach-bcm63xx/bcm63xx_gpio.h (modified) (1 diff)
-
arch/parisc/kernel/entry.S (modified) (11 diffs)
-
arch/parisc/kernel/vmlinux.lds.S (modified) (2 diffs)
-
arch/x86/include/asm/pgtable-3level.h (modified) (1 diff)
-
arch/x86/kernel/nmi.c (modified) (2 diffs)
-
arch/x86/kernel/ptrace.c (modified) (1 diff)
-
arch/x86/xen/enlighten.c (modified) (1 diff)
-
drivers/acpi/battery.c (modified) (1 diff)
-
drivers/atm/solos-pci.c (modified) (2 diffs)
-
drivers/gpu/drm/i915/intel_display.c (modified) (1 diff)
-
drivers/gpu/drm/i915/intel_dp.c (modified) (3 diffs)
-
drivers/gpu/drm/i915/intel_lvds.c (modified) (1 diff)
-
drivers/gpu/drm/i915/intel_sdvo.c (modified) (2 diffs)
-
drivers/gpu/drm/i915/intel_sdvo_regs.h (modified) (1 diff)
-
drivers/gpu/drm/i915/intel_tv.c (modified) (2 diffs)
-
drivers/gpu/drm/radeon/evergreen.c (modified) (3 diffs)
-
drivers/gpu/drm/radeon/evergreend.h (modified) (1 diff)
-
drivers/gpu/drm/radeon/ni.c (modified) (2 diffs)
-
drivers/gpu/drm/radeon/r600_audio.c (modified) (2 diffs)
-
drivers/gpu/drm/radeon/radeon_atombios.c (modified) (1 diff)
-
drivers/gpu/drm/radeon/radeon_cs.c (modified) (2 diffs)
-
drivers/gpu/drm/radeon/radeon_gart.c (modified) (3 diffs)
-
drivers/gpu/drm/radeon/rv770.c (modified) (2 diffs)
-
drivers/gpu/drm/radeon/rv770d.h (modified) (1 diff)
-
drivers/gpu/drm/ttm/ttm_bo.c (modified) (1 diff)
-
drivers/gpu/drm/vmwgfx/vmwgfx_gmr.c (modified) (1 diff)
-
drivers/iommu/amd_iommu.c (modified) (8 diffs)
-
drivers/iommu/amd_iommu_init.c (modified) (4 diffs)
-
drivers/iommu/amd_iommu_types.h (modified) (1 diff)
-
drivers/md/raid1.c (modified) (2 diffs)
-
drivers/md/raid10.c (modified) (2 diffs)
-
drivers/mtd/Kconfig (modified) (1 diff)
-
drivers/mtd/devices/block2mtd.c (modified) (1 diff)
-
drivers/mtd/nand/mxc_nand.c (modified) (2 diffs)
-
drivers/mtd/nand/nand_bbt.c (modified) (1 diff)
-
drivers/net/ethernet/freescale/fec_mpc52xx.c (modified) (1 diff)
-
drivers/net/usb/asix.c (modified) (2 diffs)
-
drivers/net/wireless/ath/ath9k/xmit.c (modified) (7 diffs)
-
drivers/net/wireless/iwlwifi/iwl-2000.c (modified) (2 diffs)
-
drivers/net/wireless/iwlwifi/iwl-6000.c (modified) (3 diffs)
-
drivers/net/wireless/iwlwifi/iwl-agn-rs.c (modified) (1 diff)
-
drivers/net/wireless/wl1251/sdio.c (modified) (2 diffs)
-
drivers/net/wireless/wl1251/spi.c (modified) (2 diffs)
-
drivers/scsi/scsi_lib.c (modified) (2 diffs)
-
drivers/scsi/scsi_wait_scan.c (modified) (1 diff)
-
fs/attr.c (modified) (1 diff)
-
fs/cifs/cifsglob.h (modified) (1 diff)
-
fs/cifs/cifsproto.h (modified) (1 diff)
-
fs/cifs/cifssmb.c (modified) (4 diffs)
-
fs/cifs/file.c (modified) (4 diffs)
-
fs/cifs/readdir.c (modified) (5 diffs)
-
fs/exofs/super.c (modified) (2 diffs)
-
fs/ext4/ialloc.c (modified) (1 diff)
-
fs/ext4/ioctl.c (modified) (2 diffs)
-
fs/ext4/mballoc.c (modified) (3 diffs)
-
fs/ext4/namei.c (modified) (1 diff)
-
fs/ext4/resize.c (modified) (1 diff)
-
fs/ext4/super.c (modified) (2 diffs)
-
fs/namespace.c (modified) (1 diff)
-
fs/nfs/idmap.c (modified) (1 diff)
-
fs/nfs/nfs4proc.c (modified) (1 diff)
-
fs/proc/base.c (modified) (3 diffs)
-
fs/proc/task_mmu.c (modified) (1 diff)
-
include/asm-generic/pgtable.h (modified) (2 diffs)
-
include/drm/drm_pciids.h (modified) (7 diffs)
-
include/linux/Kbuild (modified) (1 diff)
-
include/linux/kernel-page-flags.h (modified) (2 diffs)
-
include/linux/radix-tree.h (modified) (1 diff)
-
include/net/dst.h (modified) (1 diff)
-
kernel/fork.c (modified) (1 diff)
-
lib/radix-tree.c (modified) (1 diff)
-
mm/hugetlb.c (modified) (5 diffs)
-
mm/slub.c (modified) (3 diffs)
-
mm/vmalloc.c (modified) (1 diff)
-
mm/vmscan.c (modified) (1 diff)
-
net/ipv4/esp4.c (modified) (1 diff)
-
net/ipv4/fib_semantics.c (modified) (2 diffs)
-
net/ipv6/esp6.c (modified) (1 diff)
-
net/ipv6/ip6_output.c (modified) (6 diffs)
-
net/l2tp/l2tp_ip.c (modified) (5 diffs)
-
net/mac80211/util.c (modified) (2 diffs)
-
net/sunrpc/clnt.c (modified) (1 diff)
-
net/sunrpc/xprt.c (modified) (1 diff)
-
net/xfrm/xfrm_policy.c (modified) (1 diff)
-
sound/usb/pcm.c (modified) (1 diff)
-
tools/vm/page-types.c (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/linux/universal/linux-3.4/Makefile
r19323 r19332 1 1 VERSION = 3 2 2 PATCHLEVEL = 4 3 SUBLEVEL = 14 EXTRAVERSION = 3 SUBLEVEL = 2 4 EXTRAVERSION = -rc1 5 5 NAME = Saber-toothed Squirrel 6 6 -
src/linux/universal/linux-3.4/arch/arm/mach-ixp4xx/common.c
r19285 r19332 29 29 #include <linux/io.h> 30 30 #include <linux/export.h> 31 #include <linux/gpio.h> 31 32 32 33 #include <mach/udc.h> … … 108 109 }; 109 110 110 int gpio_to_irq(intgpio)111 static int ixp4xx_gpio_to_irq(struct gpio_chip *chip, unsigned gpio) 111 112 { 112 113 int irq; … … 118 119 return -EINVAL; 119 120 } 120 EXPORT_SYMBOL(gpio_to_irq);121 121 122 122 int irq_to_gpio(unsigned int irq) … … 384 384 EXPORT_SYMBOL(ixp4xx_exp_bus_size); 385 385 386 static int ixp4xx_gpio_direction_input(struct gpio_chip *chip, unsigned gpio) 387 { 388 gpio_line_config(gpio, IXP4XX_GPIO_IN); 389 390 return 0; 391 } 392 393 static int ixp4xx_gpio_direction_output(struct gpio_chip *chip, unsigned gpio, 394 int level) 395 { 396 gpio_line_set(gpio, level); 397 gpio_line_config(gpio, IXP4XX_GPIO_OUT); 398 399 return 0; 400 } 401 402 static int ixp4xx_gpio_get_value(struct gpio_chip *chip, unsigned gpio) 403 { 404 int value; 405 406 gpio_line_get(gpio, &value); 407 408 return value; 409 } 410 411 static void ixp4xx_gpio_set_value(struct gpio_chip *chip, unsigned gpio, 412 int value) 413 { 414 gpio_line_set(gpio, value); 415 } 416 417 static struct gpio_chip ixp4xx_gpio_chip = { 418 .label = "IXP4XX_GPIO_CHIP", 419 .direction_input = ixp4xx_gpio_direction_input, 420 .direction_output = ixp4xx_gpio_direction_output, 421 .get = ixp4xx_gpio_get_value, 422 .set = ixp4xx_gpio_set_value, 423 .to_irq = ixp4xx_gpio_to_irq, 424 .base = 0, 425 .ngpio = 16, 426 }; 427 386 428 void __init ixp4xx_sys_init(void) 387 429 { … … 389 431 390 432 platform_add_devices(ixp4xx_devices, ARRAY_SIZE(ixp4xx_devices)); 433 434 gpiochip_add(&ixp4xx_gpio_chip); 391 435 392 436 if (cpu_is_ixp46x()) { -
src/linux/universal/linux-3.4/arch/microblaze/Kconfig
r19285 r19332 58 58 59 59 config GENERIC_GPIO 60 def_bool y60 bool 61 61 62 62 config GENERIC_CSUM -
src/linux/universal/linux-3.4/arch/mips/include/asm/mach-bcm63xx/bcm63xx_gpio.h
r19285 r19332 3 3 4 4 #include <linux/init.h> 5 #include <bcm63xx_cpu.h> 5 6 6 7 int __init bcm63xx_gpio_init(void); -
src/linux/universal/linux-3.4/arch/parisc/kernel/entry.S
r19285 r19332 553 553 * the from tlb entry (or nothing if only a to entry---for 554 554 * clear_user_page_asm) */ 555 .macro do_alias spc,tmp,tmp1,va,pte,prot,fault 555 .macro do_alias spc,tmp,tmp1,va,pte,prot,fault,patype 556 556 cmpib,COND(<>),n 0,\spc,\fault 557 557 ldil L%(TMPALIAS_MAP_START),\tmp … … 582 582 cmpiclr,= 0x01,\tmp,%r0 583 583 ldi (_PAGE_DIRTY|_PAGE_READ|_PAGE_WRITE),\prot 584 #ifdef CONFIG_64BIT 584 .ifc \patype,20 585 585 depd,z \prot,8,7,\prot 586 #else 586 .else 587 .ifc \patype,11 587 588 depw,z \prot,8,7,\prot 588 #endif 589 .else 590 .error "undefined PA type to do_alias" 591 .endif 592 .endif 589 593 /* 590 594 * OK, it is in the temp alias region, check whether "from" or "to". … … 1190 1194 1191 1195 dtlb_check_alias_20w: 1192 do_alias spc,t0,t1,va,pte,prot,dtlb_fault 1196 do_alias spc,t0,t1,va,pte,prot,dtlb_fault,20 1193 1197 1194 1198 idtlbt pte,prot … … 1214 1218 1215 1219 nadtlb_check_alias_20w: 1216 do_alias spc,t0,t1,va,pte,prot,nadtlb_emulate 1220 do_alias spc,t0,t1,va,pte,prot,nadtlb_emulate,20 1217 1221 1218 1222 idtlbt pte,prot … … 1246 1250 1247 1251 dtlb_check_alias_11: 1248 do_alias spc,t0,t1,va,pte,prot,dtlb_fault 1252 do_alias spc,t0,t1,va,pte,prot,dtlb_fault,11 1249 1253 1250 1254 idtlba pte,(va) … … 1278 1282 1279 1283 nadtlb_check_alias_11: 1280 do_alias spc,t0,t1,va,pte,prot,nadtlb_emulate 1284 do_alias spc,t0,t1,va,pte,prot,nadtlb_emulate,11 1281 1285 1282 1286 idtlba pte,(va) … … 1305 1309 1306 1310 dtlb_check_alias_20: 1307 do_alias spc,t0,t1,va,pte,prot,dtlb_fault 1311 do_alias spc,t0,t1,va,pte,prot,dtlb_fault,20 1308 1312 1309 1313 idtlbt pte,prot … … 1331 1335 1332 1336 nadtlb_check_alias_20: 1333 do_alias spc,t0,t1,va,pte,prot,nadtlb_emulate 1337 do_alias spc,t0,t1,va,pte,prot,nadtlb_emulate,20 1334 1338 1335 1339 idtlbt pte,prot … … 1458 1462 1459 1463 naitlb_check_alias_20w: 1460 do_alias spc,t0,t1,va,pte,prot,naitlb_fault 1464 do_alias spc,t0,t1,va,pte,prot,naitlb_fault,20 1461 1465 1462 1466 iitlbt pte,prot … … 1512 1516 1513 1517 naitlb_check_alias_11: 1514 do_alias spc,t0,t1,va,pte,prot,itlb_fault 1518 do_alias spc,t0,t1,va,pte,prot,itlb_fault,11 1515 1519 1516 1520 iitlba pte,(%sr0, va) … … 1558 1562 1559 1563 naitlb_check_alias_20: 1560 do_alias spc,t0,t1,va,pte,prot,naitlb_fault 1564 do_alias spc,t0,t1,va,pte,prot,naitlb_fault,20 1561 1565 1562 1566 iitlbt pte,prot -
src/linux/universal/linux-3.4/arch/parisc/kernel/vmlinux.lds.S
r19285 r19332 51 51 52 52 _text = .; /* Text and read-only data */ 53 .head ALIGN(16) : { 54 HEAD_TEXT 55 } = 0 53 56 .text ALIGN(16) : { 54 HEAD_TEXT55 57 TEXT_TEXT 56 58 SCHED_TEXT … … 66 68 *(.lock.text) /* out-of-line lock text */ 67 69 *(.gnu.warning) 68 } = 070 } 69 71 /* End of text section */ 70 72 _etext = .; -
src/linux/universal/linux-3.4/arch/x86/include/asm/pgtable-3level.h
r19285 r19332 31 31 ptep->pte_low = pte.pte_low; 32 32 } 33 34 #define pmd_read_atomic pmd_read_atomic 35 /* 36 * pte_offset_map_lock on 32bit PAE kernels was reading the pmd_t with 37 * a "*pmdp" dereference done by gcc. Problem is, in certain places 38 * where pte_offset_map_lock is called, concurrent page faults are 39 * allowed, if the mmap_sem is hold for reading. An example is mincore 40 * vs page faults vs MADV_DONTNEED. On the page fault side 41 * pmd_populate rightfully does a set_64bit, but if we're reading the 42 * pmd_t with a "*pmdp" on the mincore side, a SMP race can happen 43 * because gcc will not read the 64bit of the pmd atomically. To fix 44 * this all places running pmd_offset_map_lock() while holding the 45 * mmap_sem in read mode, shall read the pmdp pointer using this 46 * function to know if the pmd is null nor not, and in turn to know if 47 * they can run pmd_offset_map_lock or pmd_trans_huge or other pmd 48 * operations. 49 * 50 * Without THP if the mmap_sem is hold for reading, the 51 * pmd can only transition from null to not null while pmd_read_atomic runs. 52 * So there's no need of literally reading it atomically. 53 * 54 * With THP if the mmap_sem is hold for reading, the pmd can become 55 * THP or null or point to a pte (and in turn become "stable") at any 56 * time under pmd_read_atomic, so it's mandatory to read it atomically 57 * with cmpxchg8b. 58 */ 59 #ifndef CONFIG_TRANSPARENT_HUGEPAGE 60 static inline pmd_t pmd_read_atomic(pmd_t *pmdp) 61 { 62 pmdval_t ret; 63 u32 *tmp = (u32 *)pmdp; 64 65 ret = (pmdval_t) (*tmp); 66 if (ret) { 67 /* 68 * If the low part is null, we must not read the high part 69 * or we can end up with a partial pmd. 70 */ 71 smp_rmb(); 72 ret |= ((pmdval_t)*(tmp + 1)) << 32; 73 } 74 75 return (pmd_t) { ret }; 76 } 77 #else /* CONFIG_TRANSPARENT_HUGEPAGE */ 78 static inline pmd_t pmd_read_atomic(pmd_t *pmdp) 79 { 80 return (pmd_t) { atomic64_read((atomic64_t *)pmdp) }; 81 } 82 #endif /* CONFIG_TRANSPARENT_HUGEPAGE */ 33 83 34 84 static inline void native_set_pte_atomic(pte_t *ptep, pte_t pte) -
src/linux/universal/linux-3.4/arch/x86/kernel/nmi.c
r19285 r19332 492 492 if (unlikely(is_debug_stack(regs->sp))) { 493 493 debug_stack_set_zero(); 494 __get_cpu_var(update_debug_stack) = 1;494 this_cpu_write(update_debug_stack, 1); 495 495 } 496 496 } … … 498 498 static inline void nmi_nesting_postprocess(void) 499 499 { 500 if (unlikely( __get_cpu_var(update_debug_stack)))500 if (unlikely(this_cpu_read(update_debug_stack))) { 501 501 debug_stack_reset(); 502 this_cpu_write(update_debug_stack, 0); 503 } 502 504 } 503 505 #endif -
src/linux/universal/linux-3.4/arch/x86/kernel/ptrace.c
r19285 r19332 1211 1211 0, sizeof(struct user_i387_struct), 1212 1212 datap); 1213 1214 /* normal 64bit interface to access TLS data.1215 Works just like arch_prctl, except that the arguments1216 are reversed. */1217 case PTRACE_ARCH_PRCTL:1218 return do_arch_prctl(child, data, addr);1219 1213 1220 1214 default: -
src/linux/universal/linux-3.4/arch/x86/xen/enlighten.c
r19285 r19332 1107 1107 1108 1108 .read_msr = native_read_msr_safe, 1109 .rdmsr_regs = native_rdmsr_safe_regs, 1109 1110 .write_msr = xen_write_msr_safe, 1111 .wrmsr_regs = native_wrmsr_safe_regs, 1112 1110 1113 .read_tsc = native_read_tsc, 1111 1114 .read_pmc = native_read_pmc, -
src/linux/universal/linux-3.4/drivers/acpi/battery.c
r19285 r19332 644 644 static void acpi_battery_refresh(struct acpi_battery *battery) 645 645 { 646 int power_unit; 647 646 648 if (!battery->bat.dev) 647 649 return; 648 650 651 power_unit = battery->power_unit; 652 649 653 acpi_battery_get_info(battery); 650 /* The battery may have changed its reporting units. */ 654 655 if (power_unit == battery->power_unit) 656 return; 657 658 /* The battery has changed its reporting units. */ 651 659 sysfs_remove_battery(battery); 652 660 sysfs_add_battery(battery); -
src/linux/universal/linux-3.4/drivers/atm/solos-pci.c
r19285 r19332 985 985 SKB_CB(skb)->dma_addr = pci_map_single(card->dev, skb->data, 986 986 skb->len, PCI_DMA_TODEVICE); 987 card->tx_skb[port] = skb; 987 988 iowrite32(SKB_CB(skb)->dma_addr, 988 989 card->config_regs + TX_DMA_ADDR(port)); … … 1153 1154 } 1154 1155 1155 if (card->fpga_version >= DMA_SUPPORTED){ 1156 if (card->fpga_version >= DMA_SUPPORTED) { 1157 pci_set_master(dev); 1156 1158 card->using_dma = 1; 1157 1159 } else { -
src/linux/universal/linux-3.4/drivers/gpu/drm/i915/intel_display.c
r19314 r19332 8369 8369 I915_WRITE(GEN6_RP_CONTROL, 8370 8370 GEN6_RP_MEDIA_TURBO | 8371 GEN6_RP_MEDIA_HW_ MODE |8371 GEN6_RP_MEDIA_HW_NORMAL_MODE | 8372 8372 GEN6_RP_MEDIA_IS_GFX | 8373 8373 GEN6_RP_ENABLE | -
src/linux/universal/linux-3.4/drivers/gpu/drm/i915/intel_dp.c
r19285 r19332 1149 1149 DRM_DEBUG_KMS("Turn eDP power off\n"); 1150 1150 1151 WARN( intel_dp->want_panel_vdd, "Cannot turn power off while VDD is on\n");1151 WARN(!intel_dp->want_panel_vdd, "Need VDD to turn off panel\n"); 1152 1152 1153 1153 pp = ironlake_get_pp_control(dev_priv); 1154 pp &= ~(POWER_TARGET_ON | EDP_FORCE_VDD |PANEL_POWER_RESET | EDP_BLC_ENABLE);1154 pp &= ~(POWER_TARGET_ON | PANEL_POWER_RESET | EDP_BLC_ENABLE); 1155 1155 I915_WRITE(PCH_PP_CONTROL, pp); 1156 1156 POSTING_READ(PCH_PP_CONTROL); … … 1260 1260 struct intel_dp *intel_dp = enc_to_intel_dp(encoder); 1261 1261 1262 1263 /* Make sure the panel is off before trying to change the mode. But also 1264 * ensure that we have vdd while we switch off the panel. */ 1265 ironlake_edp_panel_vdd_on(intel_dp); 1262 1266 ironlake_edp_backlight_off(intel_dp); 1263 1267 ironlake_edp_panel_off(intel_dp); 1264 1268 1265 /* Wake up the sink first */1266 ironlake_edp_panel_vdd_on(intel_dp);1267 1269 intel_dp_sink_dpms(intel_dp, DRM_MODE_DPMS_ON); 1268 1270 intel_dp_link_down(intel_dp); 1269 1271 ironlake_edp_panel_vdd_off(intel_dp, false); 1270 1271 /* Make sure the panel is off before trying to1272 * change the mode1273 */1274 1272 } 1275 1273 … … 1303 1301 1304 1302 if (mode != DRM_MODE_DPMS_ON) { 1303 /* Switching the panel off requires vdd. */ 1304 ironlake_edp_panel_vdd_on(intel_dp); 1305 1305 ironlake_edp_backlight_off(intel_dp); 1306 1306 ironlake_edp_panel_off(intel_dp); 1307 1307 1308 ironlake_edp_panel_vdd_on(intel_dp);1309 1308 intel_dp_sink_dpms(intel_dp, mode); 1310 1309 intel_dp_link_down(intel_dp); -
src/linux/universal/linux-3.4/drivers/gpu/drm/i915/intel_lvds.c
r19285 r19332 748 748 { 749 749 .callback = intel_no_lvds_dmi_callback, 750 .ident = "Hewlett-Packard HP t5740e Thin Client", 751 .matches = { 752 DMI_MATCH(DMI_BOARD_VENDOR, "Hewlett-Packard"), 753 DMI_MATCH(DMI_PRODUCT_NAME, "HP t5740e Thin Client"), 754 }, 755 }, 756 { 757 .callback = intel_no_lvds_dmi_callback, 750 758 .ident = "Hewlett-Packard t5745", 751 759 .matches = { -
src/linux/universal/linux-3.4/drivers/gpu/drm/i915/intel_sdvo.c
r19285 r19332 770 770 771 771 dtd->part2.dtd_flags = 0x18; 772 if (mode->flags & DRM_MODE_FLAG_INTERLACE) 773 dtd->part2.dtd_flags |= DTD_FLAG_INTERLACE; 772 774 if (mode->flags & DRM_MODE_FLAG_PHSYNC) 773 dtd->part2.dtd_flags |= 0x2;775 dtd->part2.dtd_flags |= DTD_FLAG_HSYNC_POSITIVE; 774 776 if (mode->flags & DRM_MODE_FLAG_PVSYNC) 775 dtd->part2.dtd_flags |= 0x4;777 dtd->part2.dtd_flags |= DTD_FLAG_VSYNC_POSITIVE; 776 778 777 779 dtd->part2.sdvo_flags = 0; … … 807 809 808 810 mode->flags &= ~(DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC); 809 if (dtd->part2.dtd_flags & 0x2) 811 if (dtd->part2.dtd_flags & DTD_FLAG_INTERLACE) 812 mode->flags |= DRM_MODE_FLAG_INTERLACE; 813 if (dtd->part2.dtd_flags & DTD_FLAG_HSYNC_POSITIVE) 810 814 mode->flags |= DRM_MODE_FLAG_PHSYNC; 811 if (dtd->part2.dtd_flags & 0x4)815 if (dtd->part2.dtd_flags & DTD_FLAG_VSYNC_POSITIVE) 812 816 mode->flags |= DRM_MODE_FLAG_PVSYNC; 813 817 } -
src/linux/universal/linux-3.4/drivers/gpu/drm/i915/intel_sdvo_regs.h
r19285 r19332 61 61 u16 output_flags; 62 62 } __attribute__((packed)); 63 64 /* Note: SDVO detailed timing flags match EDID misc flags. */ 65 #define DTD_FLAG_HSYNC_POSITIVE (1 << 1) 66 #define DTD_FLAG_VSYNC_POSITIVE (1 << 2) 67 #define DTD_FLAG_INTERLACE (1 << 7) 63 68 64 69 /** This matches the EDID DTD structure, more or less */ -
src/linux/universal/linux-3.4/drivers/gpu/drm/i915/intel_tv.c
r19285 r19332 675 675 }, 676 676 { 677 .name = "480p", 678 .clock = 107520, 679 .refresh = 59940, 680 .oversample = TV_OVERSAMPLE_4X, 681 .component_only = 1, 682 683 .hsync_end = 64, .hblank_end = 122, 684 .hblank_start = 842, .htotal = 857, 685 686 .progressive = true, .trilevel_sync = false, 687 688 .vsync_start_f1 = 12, .vsync_start_f2 = 12, 689 .vsync_len = 12, 690 691 .veq_ena = false, 692 693 .vi_end_f1 = 44, .vi_end_f2 = 44, 694 .nbr_end = 479, 695 696 .burst_ena = false, 697 698 .filter_table = filter_table, 699 }, 700 { 701 .name = "576p", 702 .clock = 107520, 703 .refresh = 50000, 704 .oversample = TV_OVERSAMPLE_4X, 705 .component_only = 1, 706 707 .hsync_end = 64, .hblank_end = 139, 708 .hblank_start = 859, .htotal = 863, 709 710 .progressive = true, .trilevel_sync = false, 711 712 .vsync_start_f1 = 10, .vsync_start_f2 = 10, 713 .vsync_len = 10, 714 715 .veq_ena = false, 716 717 .vi_end_f1 = 48, .vi_end_f2 = 48, 718 .nbr_end = 575, 719 720 .burst_ena = false, 721 722 .filter_table = filter_table, 723 }, 724 { 677 725 .name = "720p@60Hz", 678 726 .clock = 148800, … … 1186 1234 I915_WRITE(TV_DAC, save_tv_dac & ~TVDAC_STATE_CHG_EN); 1187 1235 I915_WRITE(TV_CTL, save_tv_ctl); 1236 POSTING_READ(TV_CTL); 1237 1238 /* For unknown reasons the hw barfs if we don't do this vblank wait. */ 1239 intel_wait_for_vblank(intel_tv->base.base.dev, 1240 to_intel_crtc(intel_tv->base.base.crtc)->pipe); 1188 1241 1189 1242 /* Restore interrupt config */ -
src/linux/universal/linux-3.4/drivers/gpu/drm/radeon/evergreen.c
r19285 r19332 1030 1030 WREG32(MC_VM_MD_L1_TLB1_CNTL, tmp); 1031 1031 WREG32(MC_VM_MD_L1_TLB2_CNTL, tmp); 1032 if ((rdev->family == CHIP_JUNIPER) || 1033 (rdev->family == CHIP_CYPRESS) || 1034 (rdev->family == CHIP_HEMLOCK) || 1035 (rdev->family == CHIP_BARTS)) 1036 WREG32(MC_VM_MD_L1_TLB3_CNTL, tmp); 1032 1037 } 1033 1038 WREG32(MC_VM_MB_L1_TLB0_CNTL, tmp); … … 2137 2142 if (rdev->flags & RADEON_IS_IGP) 2138 2143 rdev->config.evergreen.tile_config |= 1 << 4; 2139 else 2140 rdev->config.evergreen.tile_config |= 2141 ((mc_arb_ramcfg & NOOFBANK_MASK) >> NOOFBANK_SHIFT) << 4; 2144 else { 2145 if ((mc_arb_ramcfg & NOOFBANK_MASK) >> NOOFBANK_SHIFT) 2146 rdev->config.evergreen.tile_config |= 1 << 4; 2147 else 2148 rdev->config.evergreen.tile_config |= 0 << 4; 2149 } 2142 2150 rdev->config.evergreen.tile_config |= 2143 2151 ((mc_arb_ramcfg & BURSTLENGTH_MASK) >> BURSTLENGTH_SHIFT) << 8; … … 2171 2179 WREG32(GC_USER_RB_BACKEND_DISABLE, rb); 2172 2180 WREG32(CC_GC_SHADER_PIPE_CONFIG, sp); 2173 }2174 2175 grbm_gfx_index |=SE_BROADCAST_WRITES;2181 } 2182 2183 grbm_gfx_index = INSTANCE_BROADCAST_WRITES | SE_BROADCAST_WRITES; 2176 2184 WREG32(GRBM_GFX_INDEX, grbm_gfx_index); 2177 2185 WREG32(RLC_GFX_INDEX, grbm_gfx_index); -
src/linux/universal/linux-3.4/drivers/gpu/drm/radeon/evergreend.h
r19285 r19332 233 233 #define MC_VM_MD_L1_TLB1_CNTL 0x2658 234 234 #define MC_VM_MD_L1_TLB2_CNTL 0x265C 235 #define MC_VM_MD_L1_TLB3_CNTL 0x2698 235 236 236 237 #define FUS_MC_VM_MD_L1_TLB0_CNTL 0x265C -
src/linux/universal/linux-3.4/drivers/gpu/drm/radeon/ni.c
r19285 r19332 658 658 rdev->config.cayman.max_tile_pipes = 2; 659 659 if ((rdev->pdev->device == 0x9900) || 660 (rdev->pdev->device == 0x9901)) { 660 (rdev->pdev->device == 0x9901) || 661 (rdev->pdev->device == 0x9905) || 662 (rdev->pdev->device == 0x9906) || 663 (rdev->pdev->device == 0x9907) || 664 (rdev->pdev->device == 0x9908) || 665 (rdev->pdev->device == 0x9909) || 666 (rdev->pdev->device == 0x9910) || 667 (rdev->pdev->device == 0x9917)) { 661 668 rdev->config.cayman.max_simds_per_se = 6; 662 669 rdev->config.cayman.max_backends_per_se = 2; 663 670 } else if ((rdev->pdev->device == 0x9903) || 664 (rdev->pdev->device == 0x9904)) { 671 (rdev->pdev->device == 0x9904) || 672 (rdev->pdev->device == 0x990A) || 673 (rdev->pdev->device == 0x9913) || 674 (rdev->pdev->device == 0x9918)) { 665 675 rdev->config.cayman.max_simds_per_se = 4; 666 676 rdev->config.cayman.max_backends_per_se = 2; 667 } else if ((rdev->pdev->device == 0x9990) || 668 (rdev->pdev->device == 0x9991)) { 677 } else if ((rdev->pdev->device == 0x9919) || 678 (rdev->pdev->device == 0x9990) || 679 (rdev->pdev->device == 0x9991) || 680 (rdev->pdev->device == 0x9994) || 681 (rdev->pdev->device == 0x99A0)) { 669 682 rdev->config.cayman.max_simds_per_se = 3; 670 683 rdev->config.cayman.max_backends_per_se = 1; … … 866 879 /* num banks is 8 on all fusion asics. 0 = 4, 1 = 8, 2 = 16 */ 867 880 if (rdev->flags & RADEON_IS_IGP) 868 rdev->config.evergreen.tile_config |= 1 << 4; 869 else 870 rdev->config.cayman.tile_config |= 871 ((mc_arb_ramcfg & NOOFBANK_MASK) >> NOOFBANK_SHIFT) << 4; 881 rdev->config.cayman.tile_config |= 1 << 4; 882 else { 883 if ((mc_arb_ramcfg & NOOFBANK_MASK) >> NOOFBANK_SHIFT) 884 rdev->config.cayman.tile_config |= 1 << 4; 885 else 886 rdev->config.cayman.tile_config |= 0 << 4; 887 } 872 888 rdev->config.cayman.tile_config |= 873 889 ((gb_addr_config & PIPE_INTERLEAVE_SIZE_MASK) >> PIPE_INTERLEAVE_SIZE_SHIFT) << 8; -
src/linux/universal/linux-3.4/drivers/gpu/drm/radeon/r600_audio.c
r19285 r19332 240 240 struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder); 241 241 struct radeon_encoder_atom_dig *dig = radeon_encoder->enc_priv; 242 struct radeon_crtc *radeon_crtc = to_radeon_crtc(encoder->crtc); 242 243 int base_rate = 48000; 243 244 … … 265 266 WREG32(EVERGREEN_AUDIO_PLL1_UNK, 0x00000071); 266 267 267 /* S ome magic trigger or src sel?*/268 WREG32 _P(0x5ac, 0x01, ~0x77);268 /* Select DTO source */ 269 WREG32(0x5ac, radeon_crtc->crtc_id); 269 270 } else { 270 271 switch (dig->dig_encoder) { -
src/linux/universal/linux-3.4/drivers/gpu/drm/radeon/radeon_atombios.c
r19285 r19332 445 445 if ((dev->pdev->device == 0x9498) && 446 446 (dev->pdev->subsystem_vendor == 0x1682) && 447 (dev->pdev->subsystem_device == 0x2452)) { 447 (dev->pdev->subsystem_device == 0x2452) && 448 (i2c_bus->valid == false) && 449 !(supported_device & (ATOM_DEVICE_TV_SUPPORT | ATOM_DEVICE_CV_SUPPORT))) { 448 450 struct radeon_device *rdev = dev->dev_private; 449 451 *i2c_bus = radeon_lookup_i2c_gpio(rdev, 0x93); -
src/linux/universal/linux-3.4/drivers/gpu/drm/radeon/radeon_cs.c
r19285 r19332 159 159 } 160 160 161 /* XXX: note that this is called from the legacy UMS CS ioctl as well */ 161 162 int radeon_cs_parser_init(struct radeon_cs_parser *p, void *data) 162 163 { … … 253 254 } 254 255 255 if ((p->cs_flags & RADEON_CS_USE_VM) && 256 !p->rdev->vm_manager.enabled) { 257 DRM_ERROR("VM not active on asic!\n"); 258 return -EINVAL; 259 } 260 261 /* we only support VM on SI+ */ 262 if ((p->rdev->family >= CHIP_TAHITI) && 263 ((p->cs_flags & RADEON_CS_USE_VM) == 0)) { 264 DRM_ERROR("VM required on SI+!\n"); 265 return -EINVAL; 266 } 267 268 if (radeon_cs_get_ring(p, ring, priority)) 269 return -EINVAL; 270 256 /* these are KMS only */ 257 if (p->rdev) { 258 if ((p->cs_flags & RADEON_CS_USE_VM) && 259 !p->rdev->vm_manager.enabled) { 260 DRM_ERROR("VM not active on asic!\n"); 261 return -EINVAL; 262 } 263 264 /* we only support VM on SI+ */ 265 if ((p->rdev->family >= CHIP_TAHITI) && 266 ((p->cs_flags & RADEON_CS_USE_VM) == 0)) { 267 DRM_ERROR("VM required on SI+!\n"); 268 return -EINVAL; 269 } 270 271 if (radeon_cs_get_ring(p, ring, priority)) 272 return -EINVAL; 273 } 271 274 272 275 /* deal with non-vm */ -
src/linux/universal/linux-3.4/drivers/gpu/drm/radeon/radeon_gart.c
r19285 r19332 479 479 mutex_lock(&vm->mutex); 480 480 if (last_pfn > vm->last_pfn) { 481 /* grow va space 32M by 32M*/482 unsigned align = ((32 << 20) >> 12) - 1;481 /* release mutex and lock in right order */ 482 mutex_unlock(&vm->mutex); 483 483 radeon_mutex_lock(&rdev->cs_mutex); 484 radeon_vm_unbind_locked(rdev, vm); 484 mutex_lock(&vm->mutex); 485 /* and check again */ 486 if (last_pfn > vm->last_pfn) { 487 /* grow va space 32M by 32M */ 488 unsigned align = ((32 << 20) >> 12) - 1; 489 radeon_vm_unbind_locked(rdev, vm); 490 vm->last_pfn = (last_pfn + align) & ~align; 491 } 485 492 radeon_mutex_unlock(&rdev->cs_mutex); 486 vm->last_pfn = (last_pfn + align) & ~align;487 493 } 488 494 head = &vm->va; … … 598 604 return 0; 599 605 606 radeon_mutex_lock(&rdev->cs_mutex); 600 607 mutex_lock(&vm->mutex); 601 radeon_mutex_lock(&rdev->cs_mutex);602 608 radeon_vm_bo_update_pte(rdev, vm, bo, NULL); 603 609 radeon_mutex_unlock(&rdev->cs_mutex); … … 644 650 int r; 645 651 652 radeon_mutex_lock(&rdev->cs_mutex); 646 653 mutex_lock(&vm->mutex); 647 648 radeon_mutex_lock(&rdev->cs_mutex);649 654 radeon_vm_unbind_locked(rdev, vm); 650 655 radeon_mutex_unlock(&rdev->cs_mutex); -
src/linux/universal/linux-3.4/drivers/gpu/drm/radeon/rv770.c
r19285 r19332 152 152 WREG32(MC_VM_MD_L1_TLB1_CNTL, tmp); 153 153 WREG32(MC_VM_MD_L1_TLB2_CNTL, tmp); 154 if (rdev->family == CHIP_RV740) 155 WREG32(MC_VM_MD_L1_TLB3_CNTL, tmp); 154 156 WREG32(MC_VM_MB_L1_TLB0_CNTL, tmp); 155 157 WREG32(MC_VM_MB_L1_TLB1_CNTL, tmp); … … 690 692 if (rdev->family == CHIP_RV770) 691 693 gb_tiling_config |= BANK_TILING(1); 692 else 693 gb_tiling_config |= BANK_TILING((mc_arb_ramcfg & NOOFBANK_MASK) >> NOOFBANK_SHIFT); 694 else { 695 if ((mc_arb_ramcfg & NOOFBANK_MASK) >> NOOFBANK_SHIFT) 696 gb_tiling_config |= BANK_TILING(1); 697 else 698 gb_tiling_config |= BANK_TILING(0); 699 } 694 700 rdev->config.rv770.tiling_nbanks = 4 << ((gb_tiling_config >> 4) & 0x3); 695 701 gb_tiling_config |= GROUP_SIZE((mc_arb_ramcfg & BURSTLENGTH_MASK) >> BURSTLENGTH_SHIFT); -
src/linux/universal/linux-3.4/drivers/gpu/drm/radeon/rv770d.h
r19285 r19332 175 175 #define MC_VM_MD_L1_TLB1_CNTL 0x2658 176 176 #define MC_VM_MD_L1_TLB2_CNTL 0x265C 177 #define MC_VM_MD_L1_TLB3_CNTL 0x2698 177 178 #define MC_VM_SYSTEM_APERTURE_DEFAULT_ADDR 0x203C 178 179 #define MC_VM_SYSTEM_APERTURE_HIGH_ADDR 0x2038 -
src/linux/universal/linux-3.4/drivers/gpu/drm/ttm/ttm_bo.c
r19285 r19332 1822 1822 (void) ttm_bo_cleanup_refs(bo, false, false, false); 1823 1823 kref_put(&bo->list_kref, ttm_bo_release_list); 1824 spin_lock(&glob->lru_lock); 1824 1825 continue; 1825 1826 } -
src/linux/universal/linux-3.4/drivers/gpu/drm/vmwgfx/vmwgfx_gmr.c
r19285 r19332 67 67 68 68 for (i = 0; i < num_pages; ++i) { 69 if (VMW_PPN_SIZE >4)69 if (VMW_PPN_SIZE <= 4) 70 70 *cmd = page_to_pfn(*pages++); 71 71 else -
src/linux/universal/linux-3.4/drivers/iommu/amd_iommu.c
r19285 r19332 451 451 static void iommu_print_event(struct amd_iommu *iommu, void *__evt) 452 452 { 453 u32 *event = __evt; 454 int type = (event[1] >> EVENT_TYPE_SHIFT) & EVENT_TYPE_MASK; 455 int devid = (event[0] >> EVENT_DEVID_SHIFT) & EVENT_DEVID_MASK; 456 int domid = (event[1] >> EVENT_DOMID_SHIFT) & EVENT_DOMID_MASK; 457 int flags = (event[1] >> EVENT_FLAGS_SHIFT) & EVENT_FLAGS_MASK; 458 u64 address = (u64)(((u64)event[3]) << 32) | event[2]; 453 int type, devid, domid, flags; 454 volatile u32 *event = __evt; 455 int count = 0; 456 u64 address; 457 458 retry: 459 type = (event[1] >> EVENT_TYPE_SHIFT) & EVENT_TYPE_MASK; 460 devid = (event[0] >> EVENT_DEVID_SHIFT) & EVENT_DEVID_MASK; 461 domid = (event[1] >> EVENT_DOMID_SHIFT) & EVENT_DOMID_MASK; 462 flags = (event[1] >> EVENT_FLAGS_SHIFT) & EVENT_FLAGS_MASK; 463 address = (u64)(((u64)event[3]) << 32) | event[2]; 464 465 if (type == 0) { 466 /* Did we hit the erratum? */ 467 if (++count == LOOP_TIMEOUT) { 468 pr_err("AMD-Vi: No event written to event log\n"); 469 return; 470 } 471 udelay(1); 472 goto retry; 473 } 459 474 460 475 printk(KERN_ERR "AMD-Vi: Event logged ["); … … 509 524 printk(KERN_ERR "UNKNOWN type=0x%02x]\n", type); 510 525 } 526 527 memset(__evt, 0, 4 * sizeof(u32)); 511 528 } 512 529 … … 531 548 } 532 549 533 static void iommu_handle_ppr_entry(struct amd_iommu *iommu, u 32 head)550 static void iommu_handle_ppr_entry(struct amd_iommu *iommu, u64 *raw) 534 551 { 535 552 struct amd_iommu_fault fault; 536 volatile u64 *raw;537 int i;538 553 539 554 INC_STATS_COUNTER(pri_requests); 540 541 raw = (u64 *)(iommu->ppr_log + head);542 543 /*544 * Hardware bug: Interrupt may arrive before the entry is written to545 * memory. If this happens we need to wait for the entry to arrive.546 */547 for (i = 0; i < LOOP_TIMEOUT; ++i) {548 if (PPR_REQ_TYPE(raw[0]) != 0)549 break;550 udelay(1);551 }552 555 553 556 if (PPR_REQ_TYPE(raw[0]) != PPR_REQ_FAULT) { … … 562 565 fault.flags = PPR_FLAGS(raw[0]); 563 566 564 /*565 * To detect the hardware bug we need to clear the entry566 * to back to zero.567 */568 raw[0] = raw[1] = 0;569 570 567 atomic_notifier_call_chain(&ppr_notifier, 0, &fault); 571 568 } … … 579 576 return; 580 577 578 /* enable ppr interrupts again */ 579 writel(MMIO_STATUS_PPR_INT_MASK, iommu->mmio_base + MMIO_STATUS_OFFSET); 580 581 581 spin_lock_irqsave(&iommu->lock, flags); 582 582 … … 585 585 586 586 while (head != tail) { 587 588 /* Handle PPR entry */ 589 iommu_handle_ppr_entry(iommu, head); 590 591 /* Update and refresh ring-buffer state*/ 587 volatile u64 *raw; 588 u64 entry[2]; 589 int i; 590 591 raw = (u64 *)(iommu->ppr_log + head); 592 593 /* 594 * Hardware bug: Interrupt may arrive before the entry is 595 * written to memory. If this happens we need to wait for the 596 * entry to arrive. 597 */ 598 for (i = 0; i < LOOP_TIMEOUT; ++i) { 599 if (PPR_REQ_TYPE(raw[0]) != 0) 600 break; 601 udelay(1); 602 } 603 604 /* Avoid memcpy function-call overhead */ 605 entry[0] = raw[0]; 606 entry[1] = raw[1]; 607 608 /* 609 * To detect the hardware bug we need to clear the entry 610 * back to zero. 611 */ 612 raw[0] = raw[1] = 0UL; 613 614 /* Update head pointer of hardware ring-buffer */ 592 615 head = (head + PPR_ENTRY_SIZE) % PPR_LOG_SIZE; 593 616 writel(head, iommu->mmio_base + MMIO_PPR_HEAD_OFFSET); 617 618 /* 619 * Release iommu->lock because ppr-handling might need to 620 * re-aquire it 621 */ 622 spin_unlock_irqrestore(&iommu->lock, flags); 623 624 /* Handle PPR entry */ 625 iommu_handle_ppr_entry(iommu, entry); 626 627 spin_lock_irqsave(&iommu->lock, flags); 628 629 /* Refresh ring-buffer information */ 630 head = readl(iommu->mmio_base + MMIO_PPR_HEAD_OFFSET); 594 631 tail = readl(iommu->mmio_base + MMIO_PPR_TAIL_OFFSET); 595 632 } 596 597 /* enable ppr interrupts again */598 writel(MMIO_STATUS_PPR_INT_MASK, iommu->mmio_base + MMIO_STATUS_OFFSET);599 633 600 634 spin_unlock_irqrestore(&iommu->lock, flags); … … 2036 2070 2037 2071 /* FIXME: Move this to PCI code */ 2038 #define PCI_PRI_TLP_OFF (1 << 2)2072 #define PCI_PRI_TLP_OFF (1 << 15) 2039 2073 2040 2074 bool pci_pri_tlp_required(struct pci_dev *pdev) 2041 2075 { 2042 u16 control;2076 u16 status; 2043 2077 int pos; 2044 2078 … … 2047 2081 return false; 2048 2082 2049 pci_read_config_word(pdev, pos + PCI_PRI_ CTRL, &control);2050 2051 return ( control& PCI_PRI_TLP_OFF) ? true : false;2083 pci_read_config_word(pdev, pos + PCI_PRI_STATUS, &status); 2084 2085 return (status & PCI_PRI_TLP_OFF) ? true : false; 2052 2086 } 2053 2087 -
src/linux/universal/linux-3.4/drivers/iommu/amd_iommu_init.c
r19285 r19332 1029 1029 if (!iommu->dev) 1030 1030 return 1; 1031 1032 iommu->root_pdev = pci_get_bus_and_slot(iommu->dev->bus->number, 1033 PCI_DEVFN(0, 0)); 1031 1034 1032 1035 iommu->cap_ptr = h->cap_ptr; … … 1324 1327 int i, j; 1325 1328 u32 ioc_feature_control; 1326 struct pci_dev *pdev = NULL;1329 struct pci_dev *pdev = iommu->root_pdev; 1327 1330 1328 1331 /* RD890 BIOSes may not have completely reconfigured the iommu */ 1329 if (!is_rd890_iommu(iommu->dev) )1332 if (!is_rd890_iommu(iommu->dev) || !pdev) 1330 1333 return; 1331 1334 … … 1334 1337 * controlled by a register in the northbridge 1335 1338 */ 1336 pdev = pci_get_bus_and_slot(iommu->dev->bus->number, PCI_DEVFN(0, 0));1337 1338 if (!pdev)1339 return;1340 1339 1341 1340 /* Select Northbridge indirect register 0x75 and enable writing */ … … 1346 1345 if (!(ioc_feature_control & 0x1)) 1347 1346 pci_write_config_dword(pdev, 0x64, ioc_feature_control | 1); 1348 1349 pci_dev_put(pdev);1350 1347 1351 1348 /* Restore the iommu BAR */ -
src/linux/universal/linux-3.4/drivers/iommu/amd_iommu_types.h
r19285 r19332 482 482 struct pci_dev *dev; 483 483 484 /* Cache pdev to root device for resume quirks */ 485 struct pci_dev *root_pdev; 486 484 487 /* physical address of MMIO space */ 485 488 u64 mmio_phys; -
src/linux/universal/linux-3.4/drivers/md/raid1.c
r19285 r19332 2549 2549 spin_lock_init(&conf->device_lock); 2550 2550 rdev_for_each(rdev, mddev) { 2551 struct request_queue *q; 2551 2552 int disk_idx = rdev->raid_disk; 2552 2553 if (disk_idx >= mddev->raid_disks … … 2561 2562 goto abort; 2562 2563 disk->rdev = rdev; 2564 q = bdev_get_queue(rdev->bdev); 2565 if (q->merge_bvec_fn) 2566 mddev->merge_check_needed = 1; 2563 2567 2564 2568 disk->head_position = 0; -
src/linux/universal/linux-3.4/drivers/md/raid10.c
r19285 r19332 3312 3312 3313 3313 rdev_for_each(rdev, mddev) { 3314 3314 struct request_queue *q; 3315 3315 disk_idx = rdev->raid_disk; 3316 3316 if (disk_idx >= conf->raid_disks … … 3328 3328 disk->rdev = rdev; 3329 3329 } 3330 q = bdev_get_queue(rdev->bdev); 3331 if (q->merge_bvec_fn) 3332 mddev->merge_check_needed = 1; 3330 3333 3331 3334 disk_stack_limits(mddev->gendisk, rdev->bdev, -
src/linux/universal/linux-3.4/drivers/mtd/Kconfig
r19285 r19332 140 140 config MTD_OF_PARTS 141 141 tristate "OpenFirmware partitioning information support" 142 default Y142 default y 143 143 depends on OF 144 144 help -
src/linux/universal/linux-3.4/drivers/mtd/devices/block2mtd.c
r19285 r19332 370 370 dev->mtd._erase = block2mtd_erase; 371 371 dev->mtd._write = block2mtd_write; 372 dev->mtd._writev = mtd_writev;373 372 dev->mtd._sync = block2mtd_sync; 374 373 dev->mtd._read = block2mtd_read; -
src/linux/universal/linux-3.4/drivers/mtd/nand/mxc_nand.c
r19285 r19332 1220 1220 this->ecc.layout = &nandv2_hw_eccoob_4k; 1221 1221 1222 /* second phase scan */1223 if (nand_scan_tail(mtd)) {1224 err = -ENXIO;1225 goto escan;1226 }1227 1228 1222 if (this->ecc.mode == NAND_ECC_HW) { 1229 1223 if (nfc_is_v1()) … … 1231 1225 else 1232 1226 this->ecc.strength = (host->eccsize == 4) ? 4 : 8; 1227 } 1228 1229 /* second phase scan */ 1230 if (nand_scan_tail(mtd)) { 1231 err = -ENXIO; 1232 goto escan; 1233 1233 } 1234 1234 -
src/linux/universal/linux-3.4/drivers/mtd/nand/nand_bbt.c
r19285 r19332 325 325 buf += mtd->oobsize + mtd->writesize; 326 326 len -= mtd->writesize; 327 offs += mtd->writesize; 327 328 } 328 329 return 0; -
src/linux/universal/linux-3.4/drivers/net/ethernet/freescale/fec_mpc52xx.c
r19285 r19332 438 438 skb_put(rskb, length - 4); /* length without CRC32 */ 439 439 rskb->protocol = eth_type_trans(rskb, dev); 440 if (!skb_defer_rx_timestamp( skb))440 if (!skb_defer_rx_timestamp(rskb)) 441 441 netif_rx(rskb); 442 442 -
src/linux/universal/linux-3.4/drivers/net/usb/asix.c
r19285 r19332 36 36 #include <linux/usb/usbnet.h> 37 37 #include <linux/slab.h> 38 #include <linux/if_vlan.h> 38 39 39 40 #define DRIVER_VERSION "22-Dec-2011" … … 322 323 } 323 324 324 if ((size > dev->net->mtu + ETH_HLEN ) ||325 if ((size > dev->net->mtu + ETH_HLEN + VLAN_HLEN) || 325 326 (size + offset > skb->len)) { 326 327 netdev_err(dev->net, "asix_rx_fixup() Bad RX Length %d\n", -
src/linux/universal/linux-3.4/drivers/net/wireless/ath/ath9k/xmit.c
r19285 r19332 65 65 struct ath_txq *txq, 66 66 struct ath_atx_tid *tid, 67 struct sk_buff *skb); 67 struct sk_buff *skb, 68 bool dequeue); 68 69 69 70 enum { … … 812 813 bf = fi->bf; 813 814 if (!fi->bf) 814 bf = ath_tx_setup_buffer(sc, txq, tid, skb );815 bf = ath_tx_setup_buffer(sc, txq, tid, skb, true); 815 816 816 817 if (!bf) … … 1727 1728 } 1728 1729 1729 bf = ath_tx_setup_buffer(sc, txctl->txq, tid, skb );1730 bf = ath_tx_setup_buffer(sc, txctl->txq, tid, skb, false); 1730 1731 if (!bf) 1731 1732 return; … … 1754 1755 bf = fi->bf; 1755 1756 if (!bf) 1756 bf = ath_tx_setup_buffer(sc, txq, tid, skb );1757 bf = ath_tx_setup_buffer(sc, txq, tid, skb, false); 1757 1758 1758 1759 if (!bf) … … 1815 1816 struct ath_txq *txq, 1816 1817 struct ath_atx_tid *tid, 1817 struct sk_buff *skb) 1818 struct sk_buff *skb, 1819 bool dequeue) 1818 1820 { 1819 1821 struct ath_common *common = ath9k_hw_common(sc->sc_ah); … … 1864 1866 1865 1867 error: 1868 if (dequeue) 1869 __skb_unlink(skb, &tid->buf_q); 1866 1870 dev_kfree_skb_any(skb); 1867 1871 return NULL; … … 1894 1898 ath_tx_send_ampdu(sc, tid, skb, txctl); 1895 1899 } else { 1896 bf = ath_tx_setup_buffer(sc, txctl->txq, tid, skb );1900 bf = ath_tx_setup_buffer(sc, txctl->txq, tid, skb, false); 1897 1901 if (!bf) 1898 1902 return; -
src/linux/universal/linux-3.4/drivers/net/wireless/iwlwifi/iwl-2000.c
r19285 r19332 184 184 .wd_timeout = IWL_DEF_WD_TIMEOUT, 185 185 .max_event_log_size = 512, 186 .shadow_reg_enable = true,186 .shadow_reg_enable = false, /* TODO: fix bugs using this feature */ 187 187 .hd_v2 = true, 188 188 }; … … 203 203 .wd_timeout = IWL_LONG_WD_TIMEOUT, 204 204 .max_event_log_size = 512, 205 .shadow_reg_enable = true,205 .shadow_reg_enable = false, /* TODO: fix bugs using this feature */ 206 206 .hd_v2 = true, 207 207 }; -
src/linux/universal/linux-3.4/drivers/net/wireless/iwlwifi/iwl-6000.c
r19323 r19332 283 283 .wd_timeout = IWL_DEF_WD_TIMEOUT, 284 284 .max_event_log_size = 512, 285 .shadow_reg_enable = true,285 .shadow_reg_enable = false, /* TODO: fix bugs using this feature */ 286 286 }; 287 287 … … 300 300 .wd_timeout = IWL_DEF_WD_TIMEOUT, 301 301 .max_event_log_size = 1024, 302 .shadow_reg_enable = true,302 .shadow_reg_enable = false, /* TODO: fix bugs using this feature */ 303 303 }; 304 304 … … 317 317 .wd_timeout = IWL_LONG_WD_TIMEOUT, 318 318 .max_event_log_size = 512, 319 .shadow_reg_enable = true,319 .shadow_reg_enable = false, /* TODO: fix bugs using this feature */ 320 320 }; 321 321 -
src/linux/universal/linux-3.4/drivers/net/wireless/iwlwifi/iwl-agn-rs.c
r19285 r19332 885 885 (priv->bt_full_concurrent != full_concurrent)) { 886 886 priv->bt_full_concurrent = full_concurrent; 887 priv->last_bt_traffic_load = priv->bt_traffic_load; 887 888 888 889 /* Update uCode's rate table. */ -
src/linux/universal/linux-3.4/drivers/net/wireless/wl1251/sdio.c
r19285 r19332 261 261 262 262 if (wl->irq) { 263 irq_set_status_flags(wl->irq, IRQ_NOAUTOEN); 263 264 ret = request_irq(wl->irq, wl1251_line_irq, 0, "wl1251", wl); 264 265 if (ret < 0) { … … 268 269 269 270 irq_set_irq_type(wl->irq, IRQ_TYPE_EDGE_RISING); 270 disable_irq(wl->irq);271 271 272 272 wl1251_sdio_ops.enable_irq = wl1251_enable_line_irq; -
src/linux/universal/linux-3.4/drivers/net/wireless/wl1251/spi.c
r19285 r19332 282 282 wl->use_eeprom = pdata->use_eeprom; 283 283 284 irq_set_status_flags(wl->irq, IRQ_NOAUTOEN); 284 285 ret = request_irq(wl->irq, wl1251_irq, 0, DRIVER_NAME, wl); 285 286 if (ret < 0) { … … 289 290 290 291 irq_set_irq_type(wl->irq, IRQ_TYPE_EDGE_RISING); 291 292 disable_irq(wl->irq);293 292 294 293 ret = wl1251_init_ieee80211(wl); -
src/linux/universal/linux-3.4/drivers/scsi/scsi_lib.c
r19285 r19332 1379 1379 struct scsi_device *sdev = q->queuedata; 1380 1380 struct Scsi_Host *shost; 1381 struct scsi_target *starget;1382 1381 1383 1382 if (!sdev) … … 1385 1384 1386 1385 shost = sdev->host; 1387 starget = scsi_target(sdev); 1388 1389 if (scsi_host_in_recovery(shost) || scsi_host_is_busy(shost) || 1390 scsi_target_is_busy(starget) || scsi_device_is_busy(sdev)) 1386 1387 /* 1388 * Ignore host/starget busy state. 1389 * Since block layer does not have a concept of fairness across 1390 * multiple queues, congestion of host/starget needs to be handled 1391 * in SCSI layer. 1392 */ 1393 if (scsi_host_in_recovery(shost) || scsi_device_is_busy(sdev)) 1391 1394 return 1; 1392 1395 -
src/linux/universal/linux-3.4/drivers/scsi/scsi_wait_scan.c
r19285 r19332 13 13 #include <linux/module.h> 14 14 #include <linux/device.h> 15 #include <scsi/scsi_scan.h>15 #include "scsi_priv.h" 16 16 17 17 static int __init wait_scan_init(void) -
src/linux/universal/linux-3.4/fs/attr.c
r19285 r19332 177 177 } 178 178 179 if ((ia_valid & ATTR_SIZE) && IS_I_VERSION(inode)) { 180 if (attr->ia_size != inode->i_size) 181 inode_inc_iversion(inode); 182 } 183 179 184 if ((ia_valid & ATTR_MODE)) { 180 185 umode_t amode = attr->ia_mode; -
src/linux/universal/linux-3.4/fs/cifs/cifsglob.h
r19285 r19332 44 44 #define CIFS_MIN_RCV_POOL 4 45 45 46 #define MAX_REOPEN_ATT 5 /* these many maximum attempts to reopen a file */ 46 47 /* 47 48 * default attribute cache timeout (jiffies) -
src/linux/universal/linux-3.4/fs/cifs/cifsproto.h
r19285 r19332 193 193 extern int CIFSFindFirst(const int xid, struct cifs_tcon *tcon, 194 194 const char *searchName, const struct nls_table *nls_codepage, 195 __u16 *searchHandle, struct cifs_search_info *psrch_inf, 195 __u16 *searchHandle, __u16 search_flags, 196 struct cifs_search_info *psrch_inf, 196 197 int map, const char dirsep); 197 198 198 199 extern int CIFSFindNext(const int xid, struct cifs_tcon *tcon, 199 __u16 searchHandle, struct cifs_search_info *psrch_inf); 200 __u16 searchHandle, __u16 search_flags, 201 struct cifs_search_info *psrch_inf); 200 202 201 203 extern int CIFSFindClose(const int, struct cifs_tcon *tcon, -
src/linux/universal/linux-3.4/fs/cifs/cifssmb.c
r19285 r19332 4345 4345 const char *searchName, 4346 4346 const struct nls_table *nls_codepage, 4347 __u16 *pnetfid, 4347 __u16 *pnetfid, __u16 search_flags, 4348 4348 struct cifs_search_info *psrch_inf, int remap, const char dirsep) 4349 4349 { … … 4417 4417 ATTR_DIRECTORY); 4418 4418 pSMB->SearchCount = cpu_to_le16(CIFSMaxBufSize/sizeof(FILE_UNIX_INFO)); 4419 pSMB->SearchFlags = cpu_to_le16(CIFS_SEARCH_CLOSE_AT_END | 4420 CIFS_SEARCH_RETURN_RESUME); 4419 pSMB->SearchFlags = cpu_to_le16(search_flags); 4421 4420 pSMB->InformationLevel = cpu_to_le16(psrch_inf->info_level); 4422 4421 … … 4488 4487 } 4489 4488 4490 int CIFSFindNext(const int xid, struct cifs_tcon *tcon, 4491 __u16 search Handle, struct cifs_search_info *psrch_inf)4489 int CIFSFindNext(const int xid, struct cifs_tcon *tcon, __u16 searchHandle, 4490 __u16 search_flags, struct cifs_search_info *psrch_inf) 4492 4491 { 4493 4492 TRANSACTION2_FNEXT_REQ *pSMB = NULL; … … 4532 4531 pSMB->InformationLevel = cpu_to_le16(psrch_inf->info_level); 4533 4532 pSMB->ResumeKey = psrch_inf->resume_key; 4534 pSMB->SearchFlags = 4535 cpu_to_le16(CIFS_SEARCH_CLOSE_AT_END | CIFS_SEARCH_RETURN_RESUME); 4533 pSMB->SearchFlags = cpu_to_le16(search_flags); 4536 4534 4537 4535 name_len = psrch_inf->resume_name_len; -
src/linux/universal/linux-3.4/fs/cifs/file.c
r19285 r19332 1540 1540 bool fsuid_only) 1541 1541 { 1542 struct cifsFileInfo *open_file ;1542 struct cifsFileInfo *open_file, *inv_file = NULL; 1543 1543 struct cifs_sb_info *cifs_sb; 1544 1544 bool any_available = false; 1545 1545 int rc; 1546 unsigned int refind = 0; 1546 1547 1547 1548 /* Having a null inode here (because mapping->host was set to zero by … … 1563 1564 spin_lock(&cifs_file_list_lock); 1564 1565 refind_writable: 1566 if (refind > MAX_REOPEN_ATT) { 1567 spin_unlock(&cifs_file_list_lock); 1568 return NULL; 1569 } 1565 1570 list_for_each_entry(open_file, &cifs_inode->openFileList, flist) { 1566 1571 if (!any_available && open_file->pid != current->tgid) … … 1569 1574 continue; 1570 1575 if (OPEN_FMODE(open_file->f_flags) & FMODE_WRITE) { 1571 cifsFileInfo_get(open_file);1572 1573 1576 if (!open_file->invalidHandle) { 1574 1577 /* found a good writable file */ 1578 cifsFileInfo_get(open_file); 1575 1579 spin_unlock(&cifs_file_list_lock); 1576 1580 return open_file; 1581 } else { 1582 if (!inv_file) 1583 inv_file = open_file; 1577 1584 } 1578 1579 spin_unlock(&cifs_file_list_lock);1580 1581 /* Had to unlock since following call can block */1582 rc = cifs_reopen_file(open_file, false);1583 if (!rc)1584 return open_file;1585 1586 /* if it fails, try another handle if possible */1587 cFYI(1, "wp failed on reopen file");1588 cifsFileInfo_put(open_file);1589 1590 spin_lock(&cifs_file_list_lock);1591 1592 /* else we simply continue to the next entry. Thus1593 we do not loop on reopen errors. If we1594 can not reopen the file, for example if we1595 reconnected to a server with another client1596 racing to delete or lock the file we would not1597 make progress if we restarted before the beginning1598 of the loop here. */1599 1585 } 1600 1586 } … … 1604 1590 goto refind_writable; 1605 1591 } 1592 1593 if (inv_file) { 1594 any_available = false; 1595 cifsFileInfo_get(inv_file); 1596 } 1597 1606 1598 spin_unlock(&cifs_file_list_lock); 1599 1600 if (inv_file) { 1601 rc = cifs_reopen_file(inv_file, false); 1602 if (!rc) 1603 return inv_file; 1604 else { 1605 spin_lock(&cifs_file_list_lock); 1606 list_move_tail(&inv_file->flist, 1607 &cifs_inode->openFileList); 1608 spin_unlock(&cifs_file_list_lock); 1609 cifsFileInfo_put(inv_file); 1610 spin_lock(&cifs_file_list_lock); 1611 ++refind; 1612 goto refind_writable; 1613 } 1614 } 1615 1607 1616 return NULL; 1608 1617 } -
src/linux/universal/linux-3.4/fs/cifs/readdir.c
r19285 r19332 220 220 static int initiate_cifs_search(const int xid, struct file *file) 221 221 { 222 __u16 search_flags; 222 223 int rc = 0; 223 224 char *full_path = NULL; … … 271 272 } 272 273 274 search_flags = CIFS_SEARCH_CLOSE_AT_END | CIFS_SEARCH_RETURN_RESUME; 275 if (backup_cred(cifs_sb)) 276 search_flags |= CIFS_SEARCH_BACKUP_SEARCH; 277 273 278 rc = CIFSFindFirst(xid, pTcon, full_path, cifs_sb->local_nls, 274 &cifsFile->netfid, &cifsFile->srch_inf,279 &cifsFile->netfid, search_flags, &cifsFile->srch_inf, 275 280 cifs_sb->mnt_cifs_flags & 276 281 CIFS_MOUNT_MAP_SPECIAL_CHR, CIFS_DIR_SEP(cifs_sb)); … … 503 508 struct file *file, char **ppCurrentEntry, int *num_to_ret) 504 509 { 510 __u16 search_flags; 505 511 int rc = 0; 506 512 int pos_in_buf = 0; … … 508 514 loff_t index_to_find = file->f_pos; 509 515 struct cifsFileInfo *cifsFile = file->private_data; 516 struct cifs_sb_info *cifs_sb = CIFS_SB(file->f_path.dentry->d_sb); 510 517 /* check if index in the buffer */ 511 518 … … 561 568 } 562 569 570 search_flags = CIFS_SEARCH_CLOSE_AT_END | CIFS_SEARCH_RETURN_RESUME; 571 if (backup_cred(cifs_sb)) 572 search_flags |= CIFS_SEARCH_BACKUP_SEARCH; 573 563 574 while ((index_to_find >= cifsFile->srch_inf.index_of_last_entry) && 564 575 (rc == 0) && !cifsFile->srch_inf.endOfSearch) { 565 576 cFYI(1, "calling findnext2"); 566 rc = CIFSFindNext(xid, pTcon, cifsFile->netfid, 577 rc = CIFSFindNext(xid, pTcon, cifsFile->netfid, search_flags, 567 578 &cifsFile->srch_inf); 568 579 /* FindFirst/Next set last_entry to NULL on malformed reply */ -
src/linux/universal/linux-3.4/fs/exofs/super.c
r19285 r19332 746 746 sbi->one_comp.obj.id = 0; 747 747 exofs_make_credential(sbi->one_comp.cred, &sbi->one_comp.obj); 748 sbi->oc.numdevs = 1;749 748 sbi->oc.single_comp = EC_SINGLE_COMP; 750 749 sbi->oc.comps = &sbi->one_comp; … … 805 804 806 805 ore_comp_set_dev(&sbi->oc, 0, od); 806 sbi->oc.numdevs = 1; 807 807 } 808 808 -
src/linux/universal/linux-3.4/fs/ext4/ialloc.c
r19285 r19332 489 489 grp = (parent_group + i) % ngroups; 490 490 desc = ext4_get_group_desc(sb, grp, NULL); 491 grp_free = ext4_free_inodes_count(sb, desc); 492 if (desc && grp_free && grp_free >= avefreei) { 493 *group = grp; 494 return 0; 491 if (desc) { 492 grp_free = ext4_free_inodes_count(sb, desc); 493 if (grp_free && grp_free >= avefreei) { 494 *group = grp; 495 return 0; 496 } 495 497 } 496 498 } -
src/linux/universal/linux-3.4/fs/ext4/ioctl.c
r19285 r19332 39 39 int err, migrate = 0; 40 40 struct ext4_iloc iloc; 41 unsigned int oldflags ;41 unsigned int oldflags, mask, i; 42 42 unsigned int jflag; 43 43 … … 116 116 goto flags_err; 117 117 118 flags = flags & EXT4_FL_USER_MODIFIABLE; 119 flags |= oldflags & ~EXT4_FL_USER_MODIFIABLE; 118 for (i = 0, mask = 1; i < 32; i++, mask <<= 1) { 119 if (!(mask & EXT4_FL_USER_MODIFIABLE)) 120 continue; 121 if (mask & flags) 122 ext4_set_inode_flag(inode, i); 123 else 124 ext4_clear_inode_flag(inode, i); 125 } 120 126 ei->i_flags = flags; 121 127 -
src/linux/universal/linux-3.4/fs/ext4/mballoc.c
r19285 r19332 2518 2518 struct kmem_cache *cachep = get_groupinfo_cache(sb->s_blocksize_bits); 2519 2519 2520 if (sbi->s_proc) 2521 remove_proc_entry("mb_groups", sbi->s_proc); 2522 2520 2523 if (sbi->s_group_info) { 2521 2524 for (i = 0; i < ngroups; i++) { … … 2565 2568 2566 2569 free_percpu(sbi->s_locality_groups); 2567 if (sbi->s_proc)2568 remove_proc_entry("mb_groups", sbi->s_proc);2569 2570 2570 2571 return 0; … … 4637 4638 new_entry = kmem_cache_alloc(ext4_free_data_cachep, GFP_NOFS); 4638 4639 if (!new_entry) { 4640 ext4_mb_unload_buddy(&e4b); 4639 4641 err = -ENOMEM; 4640 4642 goto error_return; -
src/linux/universal/linux-3.4/fs/ext4/namei.c
r19285 r19332 1036 1036 if (!ext4_valid_inum(dir->i_sb, ino)) { 1037 1037 EXT4_ERROR_INODE(dir, "bad inode number: %u", ino); 1038 return ERR_PTR(-EIO); 1039 } 1040 if (unlikely(ino == dir->i_ino)) { 1041 EXT4_ERROR_INODE(dir, "'%.*s' linked to parent dir", 1042 dentry->d_name.len, 1043 dentry->d_name.name); 1038 1044 return ERR_PTR(-EIO); 1039 1045 } -
src/linux/universal/linux-3.4/fs/ext4/resize.c
r19285 r19332 162 162 goto out3; 163 163 164 if (flexbg_size >= UINT_MAX / sizeof(struct ext4_new_flex_group_data)) 165 goto out2; 164 166 flex_gd->count = flexbg_size; 165 167 -
src/linux/universal/linux-3.4/fs/ext4/super.c
r19285 r19332 498 498 sb->s_id, function, line, current->comm, &vaf); 499 499 va_end(args); 500 save_error_info(sb, function, line); 500 501 501 502 ext4_handle_error(sb); … … 3593 3594 } 3594 3595 3595 ext4_setup_super(sb, es, sb->s_flags & MS_RDONLY); 3596 if (ext4_setup_super(sb, es, sb->s_flags & MS_RDONLY)) 3597 sb->s_flags |= MS_RDONLY; 3596 3598 3597 3599 /* determine the minimum size of new large inodes, if present */ -
src/linux/universal/linux-3.4/fs/namespace.c
r19285 r19332 1074 1074 list_del_init(&p->mnt_list); 1075 1075 __touch_mnt_namespace(p->mnt_ns); 1076 if (p->mnt_ns) 1077 __mnt_make_shortterm(p); 1076 1078 p->mnt_ns = NULL; 1077 __mnt_make_shortterm(p);1078 1079 list_del_init(&p->mnt_child); 1079 1080 if (mnt_has_parent(p)) { -
src/linux/universal/linux-3.4/fs/nfs/idmap.c
r19285 r19332 641 641 struct idmap *idmap = (struct idmap *)aux; 642 642 struct key *key = cons->key; 643 int ret ;643 int ret = -ENOMEM; 644 644 645 645 /* msg and im are freed in idmap_pipe_destroy_msg */ 646 646 msg = kmalloc(sizeof(*msg), GFP_KERNEL); 647 if (IS_ERR(msg)) { 648 ret = PTR_ERR(msg); 647 if (!msg) 649 648 goto out0; 650 }651 649 652 650 im = kmalloc(sizeof(*im), GFP_KERNEL); 653 if (IS_ERR(im)) { 654 ret = PTR_ERR(im); 651 if (!im) 655 652 goto out1; 656 }657 653 658 654 ret = nfs_idmap_prepare_message(key->description, im, msg); -
src/linux/universal/linux-3.4/fs/nfs/nfs4proc.c
r19285 r19332 102 102 case -NFS4ERR_BADNAME: 103 103 return -EINVAL; 104 case -NFS4ERR_SHARE_DENIED: 105 return -EACCES; 104 106 default: 105 107 dprintk("%s could not handle NFSv4 error %d\n", -
src/linux/universal/linux-3.4/fs/proc/base.c
r19285 r19332 1804 1804 file = fcheck_files(files, fd); 1805 1805 if (file) { 1806 unsigned i_mode,f_mode = file->f_mode;1806 unsigned f_mode = file->f_mode; 1807 1807 1808 1808 rcu_read_unlock(); … … 1820 1820 } 1821 1821 1822 i_mode = S_IFLNK; 1823 if (f_mode & FMODE_READ) 1824 i_mode |= S_IRUSR | S_IXUSR; 1825 if (f_mode & FMODE_WRITE) 1826 i_mode |= S_IWUSR | S_IXUSR; 1827 inode->i_mode = i_mode; 1822 if (S_ISLNK(inode->i_mode)) { 1823 unsigned i_mode = S_IFLNK; 1824 if (f_mode & FMODE_READ) 1825 i_mode |= S_IRUSR | S_IXUSR; 1826 if (f_mode & FMODE_WRITE) 1827 i_mode |= S_IWUSR | S_IXUSR; 1828 inode->i_mode = i_mode; 1829 } 1828 1830 1829 1831 security_task_to_inode(task, inode); … … 1860 1862 ei->fd = fd; 1861 1863 1864 inode->i_mode = S_IFLNK; 1862 1865 inode->i_op = &proc_pid_link_inode_operations; 1863 1866 inode->i_size = 64; -
src/linux/universal/linux-3.4/fs/proc/task_mmu.c
r19285 r19332 785 785 /* find the first VMA at or above 'addr' */ 786 786 vma = find_vma(walk->mm, addr); 787 if ( pmd_trans_huge_lock(pmd, vma) == 1) {787 if (vma && pmd_trans_huge_lock(pmd, vma) == 1) { 788 788 for (; addr != end; addr += PAGE_SIZE) { 789 789 unsigned long offset; -
src/linux/universal/linux-3.4/include/asm-generic/pgtable.h
r19285 r19332 447 447 #endif /* CONFIG_TRANSPARENT_HUGEPAGE */ 448 448 449 #ifndef pmd_read_atomic 450 static inline pmd_t pmd_read_atomic(pmd_t *pmdp) 451 { 452 /* 453 * Depend on compiler for an atomic pmd read. NOTE: this is 454 * only going to work, if the pmdval_t isn't larger than 455 * an unsigned long. 456 */ 457 return *pmdp; 458 } 459 #endif 460 449 461 /* 450 462 * This function is meant to be used by sites walking pagetables with … … 460 472 * can return none anyway). The compiler level barrier() is critically 461 473 * important to compute the two checks atomically on the same pmdval. 474 * 475 * For 32bit kernels with a 64bit large pmd_t this automatically takes 476 * care of reading the pmd atomically to avoid SMP race conditions 477 * against pmd_populate() when the mmap_sem is hold for reading by the 478 * caller (a special atomic read not done by "gcc" as in the generic 479 * version above, is also needed when THP is disabled because the page 480 * fault can populate the pmd from under us). 462 481 */ 463 482 static inline int pmd_none_or_trans_huge_or_clear_bad(pmd_t *pmd) 464 483 { 465 /* depend on compiler for an atomic pmd read */ 466 pmd_t pmdval = *pmd; 484 pmd_t pmdval = pmd_read_atomic(pmd); 467 485 /* 468 486 * The barrier will stabilize the pmdval in a register or on -
src/linux/universal/linux-3.4/include/drm/drm_pciids.h
r19285 r19332 182 182 {0x1002, 0x6748, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_TURKS|RADEON_NEW_MEMMAP}, \ 183 183 {0x1002, 0x6749, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_TURKS|RADEON_NEW_MEMMAP}, \ 184 {0x1002, 0x674A, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_TURKS|RADEON_NEW_MEMMAP}, \ 184 185 {0x1002, 0x6750, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_TURKS|RADEON_NEW_MEMMAP}, \ 185 186 {0x1002, 0x6751, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_TURKS|RADEON_NEW_MEMMAP}, \ … … 199 200 {0x1002, 0x6768, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_CAICOS|RADEON_NEW_MEMMAP}, \ 200 201 {0x1002, 0x6770, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_CAICOS|RADEON_NEW_MEMMAP}, \ 202 {0x1002, 0x6771, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_CAICOS|RADEON_NEW_MEMMAP}, \ 201 203 {0x1002, 0x6772, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_CAICOS|RADEON_NEW_MEMMAP}, \ 202 204 {0x1002, 0x6778, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_CAICOS|RADEON_NEW_MEMMAP}, \ … … 230 232 {0x1002, 0x6828, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_VERDE|RADEON_NEW_MEMMAP}, \ 231 233 {0x1002, 0x6829, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_VERDE|RADEON_NEW_MEMMAP}, \ 234 {0x1002, 0x682B, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_VERDE|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \ 232 235 {0x1002, 0x682D, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_VERDE|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \ 233 236 {0x1002, 0x682F, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_VERDE|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \ 234 {0x1002, 0x6830, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_VERDE|RADEON_ NEW_MEMMAP}, \235 {0x1002, 0x6831, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_VERDE|RADEON_ NEW_MEMMAP}, \237 {0x1002, 0x6830, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_VERDE|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \ 238 {0x1002, 0x6831, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_VERDE|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \ 236 239 {0x1002, 0x6837, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_VERDE|RADEON_NEW_MEMMAP}, \ 237 240 {0x1002, 0x6838, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_VERDE|RADEON_NEW_MEMMAP}, \ … … 532 535 {0x1002, 0x9647, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_SUMO|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP|RADEON_IS_IGP},\ 533 536 {0x1002, 0x9648, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_SUMO|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP|RADEON_IS_IGP},\ 537 {0x1002, 0x9649, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_SUMO|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP|RADEON_IS_IGP},\ 534 538 {0x1002, 0x964a, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_SUMO|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \ 535 539 {0x1002, 0x964b, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_SUMO|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \ … … 551 555 {0x1002, 0x9808, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_PALM|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \ 552 556 {0x1002, 0x9809, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_PALM|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \ 557 {0x1002, 0x980A, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_PALM|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \ 553 558 {0x1002, 0x9900, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_ARUBA|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \ 554 559 {0x1002, 0x9901, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_ARUBA|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \ … … 562 567 {0x1002, 0x990A, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_ARUBA|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \ 563 568 {0x1002, 0x990F, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_ARUBA|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \ 569 {0x1002, 0x9910, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_ARUBA|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \ 570 {0x1002, 0x9913, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_ARUBA|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \ 571 {0x1002, 0x9917, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_ARUBA|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \ 572 {0x1002, 0x9918, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_ARUBA|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \ 573 {0x1002, 0x9919, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_ARUBA|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \ 564 574 {0x1002, 0x9990, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_ARUBA|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \ 565 575 {0x1002, 0x9991, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_ARUBA|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \ … … 567 577 {0x1002, 0x9993, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_ARUBA|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \ 568 578 {0x1002, 0x9994, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_ARUBA|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \ 579 {0x1002, 0x99A0, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_ARUBA|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \ 580 {0x1002, 0x99A2, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_ARUBA|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \ 581 {0x1002, 0x99A4, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_ARUBA|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \ 569 582 {0, 0, 0} 570 583 -
src/linux/universal/linux-3.4/include/linux/Kbuild
r19285 r19332 230 230 header-y += kernel.h 231 231 header-y += kernelcapi.h 232 header-y += kernel-page-flags.h 232 233 header-y += keyboard.h 233 234 header-y += keyctl.h -
src/linux/universal/linux-3.4/include/linux/kernel-page-flags.h
r19285 r19332 33 33 #define KPF_THP 22 34 34 35 #ifdef __KERNEL__ 36 35 37 /* kernel hacking assistances 36 38 * WARNING: subject to change, never rely on them! … … 45 47 #define KPF_UNCACHED 39 46 48 49 #endif /* __KERNEL__ */ 50 47 51 #endif /* LINUX_KERNEL_PAGE_FLAGS_H */ -
src/linux/universal/linux-3.4/include/linux/radix-tree.h
r19285 r19332 369 369 if (likely(*slot)) 370 370 return slot; 371 if (flags & RADIX_TREE_ITER_CONTIG) 371 if (flags & RADIX_TREE_ITER_CONTIG) { 372 /* forbid switching to the next chunk */ 373 iter->next_index = 0; 372 374 break; 375 } 373 376 } 374 377 } -
src/linux/universal/linux-3.4/include/net/dst.h
r19285 r19332 61 61 #define DST_NOPEER 0x0040 62 62 #define DST_FAKE_RTABLE 0x0080 63 #define DST_XFRM_TUNNEL 0x0100 63 64 64 65 short error; -
src/linux/universal/linux-3.4/kernel/fork.c
r19285 r19332 357 357 charge = 0; 358 358 if (mpnt->vm_flags & VM_ACCOUNT) { 359 unsigned int len = (mpnt->vm_end - mpnt->vm_start) >> PAGE_SHIFT; 359 unsigned long len; 360 len = (mpnt->vm_end - mpnt->vm_start) >> PAGE_SHIFT; 360 361 if (security_vm_enough_memory_mm(oldmm, len)) /* sic */ 361 362 goto fail_nomem; -
src/linux/universal/linux-3.4/lib/radix-tree.c
r19285 r19332 674 674 * And we cannot overflow iter->next_index in a single step, 675 675 * because RADIX_TREE_MAP_SHIFT < BITS_PER_LONG. 676 * 677 * This condition also used by radix_tree_next_slot() to stop 678 * contiguous iterating, and forbid swithing to the next chunk. 676 679 */ 677 680 index = iter->next_index; -
src/linux/universal/linux-3.4/mm/hugetlb.c
r19285 r19332 2158 2158 } 2159 2159 2160 static void resv_map_put(struct vm_area_struct *vma) 2161 { 2162 struct resv_map *reservations = vma_resv_map(vma); 2163 2164 if (!reservations) 2165 return; 2166 kref_put(&reservations->refs, resv_map_release); 2167 } 2168 2160 2169 static void hugetlb_vm_op_close(struct vm_area_struct *vma) 2161 2170 { … … 2174 2183 region_count(&reservations->regions, start, end); 2175 2184 2176 kref_put(&reservations->refs, resv_map_release);2185 resv_map_put(vma); 2177 2186 2178 2187 if (reserve) { … … 2991 3000 } 2992 3001 2993 if (chg < 0) 2994 return chg; 3002 if (chg < 0) { 3003 ret = chg; 3004 goto out_err; 3005 } 2995 3006 2996 3007 /* There must be enough pages in the subpool for the mapping */ 2997 if (hugepage_subpool_get_pages(spool, chg)) 2998 return -ENOSPC; 3008 if (hugepage_subpool_get_pages(spool, chg)) { 3009 ret = -ENOSPC; 3010 goto out_err; 3011 } 2999 3012 3000 3013 /* … … 3005 3018 if (ret < 0) { 3006 3019 hugepage_subpool_put_pages(spool, chg); 3007 return ret;3020 goto out_err; 3008 3021 } 3009 3022 … … 3022 3035 region_add(&inode->i_mapping->private_list, from, to); 3023 3036 return 0; 3037 out_err: 3038 if (vma) 3039 resv_map_put(vma); 3040 return ret; 3024 3041 } 3025 3042 -
src/linux/universal/linux-3.4/mm/slub.c
r19285 r19332 1515 1515 counters = page->counters; 1516 1516 new.counters = counters; 1517 if (mode) 1517 if (mode) { 1518 1518 new.inuse = page->objects; 1519 new.freelist = NULL; 1520 } else { 1521 new.freelist = freelist; 1522 } 1519 1523 1520 1524 VM_BUG_ON(new.frozen); … … 1523 1527 } while (!__cmpxchg_double_slab(s, page, 1524 1528 freelist, counters, 1525 NULL, new.counters,1529 new.freelist, new.counters, 1526 1530 "lock and freeze")); 1527 1531 … … 1565 1569 available = page->objects - page->inuse; 1566 1570 } else { 1567 page->freelist = t;1568 1571 available = put_cpu_partial(s, page, 0); 1569 1572 stat(s, CPU_PARTIAL_NODE); -
src/linux/universal/linux-3.4/mm/vmalloc.c
r19285 r19332 1186 1186 for (tmp = vmlist; tmp; tmp = tmp->next) { 1187 1187 va = kzalloc(sizeof(struct vmap_area), GFP_NOWAIT); 1188 va->flags = tmp->flags |VM_VM_AREA;1188 va->flags = VM_VM_AREA; 1189 1189 va->va_start = (unsigned long)tmp->addr; 1190 1190 va->va_end = va->va_start + tmp->size; 1191 va->vm = tmp; 1191 1192 __insert_vmap_area(va); 1192 1193 } -
src/linux/universal/linux-3.4/mm/vmscan.c
r19285 r19332 723 723 724 724 if (referenced_ptes) { 725 if (Page Anon(page))725 if (PageSwapBacked(page)) 726 726 return PAGEREF_ACTIVATE; 727 727 /* -
src/linux/universal/linux-3.4/net/ipv4/esp4.c
r19285 r19332 460 460 u32 blksize = ALIGN(crypto_aead_blocksize(esp->aead), 4); 461 461 u32 align = max_t(u32, blksize, esp->padlen); 462 u32 rem; 463 464 mtu -= x->props.header_len + crypto_aead_authsize(esp->aead); 465 rem = mtu & (align - 1); 466 mtu &= ~(align - 1); 462 unsigned int net_adj; 467 463 468 464 switch (x->props.mode) { 465 case XFRM_MODE_TRANSPORT: 466 case XFRM_MODE_BEET: 467 net_adj = sizeof(struct iphdr); 468 break; 469 469 case XFRM_MODE_TUNNEL: 470 net_adj = 0; 470 471 break; 471 472 default: 472 case XFRM_MODE_TRANSPORT: 473 /* The worst case */ 474 mtu -= blksize - 4; 475 mtu += min_t(u32, blksize - 4, rem); 476 break; 477 case XFRM_MODE_BEET: 478 /* The worst case. */ 479 mtu += min_t(u32, IPV4_BEET_PHMAXLEN, rem); 480 break; 481 } 482 483 return mtu - 2; 473 BUG(); 474 } 475 476 return ((mtu - x->props.header_len - crypto_aead_authsize(esp->aead) - 477 net_adj) & ~(align - 1)) + (net_adj - 2); 484 478 } 485 479 -
src/linux/universal/linux-3.4/net/ipv4/fib_semantics.c
r19285 r19332 146 146 struct fib_info *fi = container_of(head, struct fib_info, rcu); 147 147 148 change_nexthops(fi) { 149 if (nexthop_nh->nh_dev) 150 dev_put(nexthop_nh->nh_dev); 151 } endfor_nexthops(fi); 152 153 release_net(fi->fib_net); 148 154 if (fi->fib_metrics != (u32 *) dst_default_metrics) 149 155 kfree(fi->fib_metrics); … … 157 163 return; 158 164 } 159 change_nexthops(fi) {160 if (nexthop_nh->nh_dev)161 dev_put(nexthop_nh->nh_dev);162 nexthop_nh->nh_dev = NULL;163 } endfor_nexthops(fi);164 165 fib_info_cnt--; 165 release_net(fi->fib_net);166 166 call_rcu(&fi->rcu, free_fib_info_rcu); 167 167 } -
src/linux/universal/linux-3.4/net/ipv6/esp6.c
r19285 r19332 412 412 u32 blksize = ALIGN(crypto_aead_blocksize(esp->aead), 4); 413 413 u32 align = max_t(u32, blksize, esp->padlen); 414 u32 rem; 415 416 mtu -= x->props.header_len + crypto_aead_authsize(esp->aead); 417 rem = mtu & (align - 1); 418 mtu &= ~(align - 1); 419 420 if (x->props.mode != XFRM_MODE_TUNNEL) { 421 u32 padsize = ((blksize - 1) & 7) + 1; 422 mtu -= blksize - padsize; 423 mtu += min_t(u32, blksize - padsize, rem); 424 } 425 426 return mtu - 2; 414 unsigned int net_adj; 415 416 if (x->props.mode != XFRM_MODE_TUNNEL) 417 net_adj = sizeof(struct ipv6hdr); 418 else 419 net_adj = 0; 420 421 return ((mtu - x->props.header_len - crypto_aead_authsize(esp->aead) - 422 net_adj) & ~(align - 1)) + (net_adj - 2); 427 423 } 428 424 -
src/linux/universal/linux-3.4/net/ipv6/ip6_output.c
r19285 r19332 1184 1184 } 1185 1185 1186 static void ip6_append_data_mtu(int *mtu, 1187 int *maxfraglen, 1188 unsigned int fragheaderlen, 1189 struct sk_buff *skb, 1190 struct rt6_info *rt) 1191 { 1192 if (!(rt->dst.flags & DST_XFRM_TUNNEL)) { 1193 if (skb == NULL) { 1194 /* first fragment, reserve header_len */ 1195 *mtu = *mtu - rt->dst.header_len; 1196 1197 } else { 1198 /* 1199 * this fragment is not first, the headers 1200 * space is regarded as data space. 1201 */ 1202 *mtu = dst_mtu(rt->dst.path); 1203 } 1204 *maxfraglen = ((*mtu - fragheaderlen) & ~7) 1205 + fragheaderlen - sizeof(struct frag_hdr); 1206 } 1207 } 1208 1186 1209 int ip6_append_data(struct sock *sk, int getfrag(void *from, char *to, 1187 1210 int offset, int len, int odd, struct sk_buff *skb), … … 1193 1216 struct ipv6_pinfo *np = inet6_sk(sk); 1194 1217 struct inet_cork *cork; 1195 struct sk_buff *skb ;1218 struct sk_buff *skb, *skb_prev = NULL; 1196 1219 unsigned int maxfraglen, fragheaderlen; 1197 1220 int exthdrlen; … … 1251 1274 np->cork.hop_limit = hlimit; 1252 1275 np->cork.tclass = tclass; 1253 mtu = np->pmtudisc == IPV6_PMTUDISC_PROBE ? 1254 rt->dst.dev->mtu : dst_mtu(&rt->dst); 1276 if (rt->dst.flags & DST_XFRM_TUNNEL) 1277 mtu = np->pmtudisc == IPV6_PMTUDISC_PROBE ? 1278 rt->dst.dev->mtu : dst_mtu(&rt->dst); 1279 else 1280 mtu = np->pmtudisc == IPV6_PMTUDISC_PROBE ? 1281 rt->dst.dev->mtu : dst_mtu(rt->dst.path); 1255 1282 if (np->frag_size < mtu) { 1256 1283 if (np->frag_size) … … 1348 1375 unsigned int fraggap; 1349 1376 unsigned int alloclen; 1350 struct sk_buff *skb_prev;1351 1377 alloc_new_skb: 1352 skb_prev = skb;1353 1354 1378 /* There's no room in the current skb */ 1355 if (skb _prev)1356 fraggap = skb _prev->len - maxfraglen;1379 if (skb) 1380 fraggap = skb->len - maxfraglen; 1357 1381 else 1358 1382 fraggap = 0; 1383 /* update mtu and maxfraglen if necessary */ 1384 if (skb == NULL || skb_prev == NULL) 1385 ip6_append_data_mtu(&mtu, &maxfraglen, 1386 fragheaderlen, skb, rt); 1387 1388 skb_prev = skb; 1359 1389 1360 1390 /* … … 1363 1393 */ 1364 1394 datalen = length + fraggap; 1395 1365 1396 if (datalen > (cork->length <= mtu && !(cork->flags & IPCORK_ALLFRAG) ? mtu : maxfraglen) - fragheaderlen) 1366 datalen = maxfraglen - fragheaderlen; 1367 1368 fraglen = datalen + fragheaderlen; 1397 datalen = maxfraglen - fragheaderlen - rt->dst.trailer_len; 1369 1398 if ((flags & MSG_MORE) && 1370 1399 !(rt->dst.dev->features&NETIF_F_SG)) … … 1375 1404 alloclen += dst_exthdrlen; 1376 1405 1377 /* 1378 * The last fragment gets additional space at tail. 1379 * Note: we overallocate on fragments with MSG_MODE 1380 * because we have no idea if we're the last one. 1381 */ 1382 if (datalen == length + fraggap) 1383 alloclen += rt->dst.trailer_len; 1406 if (datalen != length + fraggap) { 1407 /* 1408 * this is not the last fragment, the trailer 1409 * space is regarded as data space. 1410 */ 1411 datalen += rt->dst.trailer_len; 1412 } 1413 1414 alloclen += rt->dst.trailer_len; 1415 fraglen = datalen + fragheaderlen; 1384 1416 1385 1417 /* -
src/linux/universal/linux-3.4/net/l2tp/l2tp_ip.c
r19285 r19332 252 252 struct inet_sock *inet = inet_sk(sk); 253 253 struct sockaddr_l2tpip *addr = (struct sockaddr_l2tpip *) uaddr; 254 int ret = -EINVAL;254 int ret; 255 255 int chk_addr_ret; 256 257 if (!sock_flag(sk, SOCK_ZAPPED)) 258 return -EINVAL; 259 if (addr_len < sizeof(struct sockaddr_l2tpip)) 260 return -EINVAL; 261 if (addr->l2tp_family != AF_INET) 262 return -EINVAL; 256 263 257 264 ret = -EADDRINUSE; … … 285 292 write_unlock_bh(&l2tp_ip_lock); 286 293 ret = 0; 294 sock_reset_flag(sk, SOCK_ZAPPED); 295 287 296 out: 288 297 release_sock(sk); … … 305 314 int oif, rc; 306 315 307 rc = -EINVAL; 316 if (sock_flag(sk, SOCK_ZAPPED)) /* Must bind first - autobinding does not work */ 317 return -EINVAL; 318 308 319 if (addr_len < sizeof(*lsa)) 309 goto out; 310 311 rc = -EAFNOSUPPORT; 320 return -EINVAL; 321 312 322 if (lsa->l2tp_family != AF_INET) 313 goto out;323 return -EAFNOSUPPORT; 314 324 315 325 lock_sock(sk); … … 363 373 release_sock(sk); 364 374 return rc; 375 } 376 377 static int l2tp_ip_disconnect(struct sock *sk, int flags) 378 { 379 if (sock_flag(sk, SOCK_ZAPPED)) 380 return 0; 381 382 return udp_disconnect(sk, flags); 365 383 } 366 384 … … 600 618 .bind = l2tp_ip_bind, 601 619 .connect = l2tp_ip_connect, 602 .disconnect = udp_disconnect,620 .disconnect = l2tp_ip_disconnect, 603 621 .ioctl = udp_ioctl, 604 622 .destroy = l2tp_ip_destroy_sock, -
src/linux/universal/linux-3.4/net/mac80211/util.c
r19285 r19332 1322 1322 } 1323 1323 1324 /* add back keys */ 1325 list_for_each_entry(sdata, &local->interfaces, list) 1326 if (ieee80211_sdata_running(sdata)) 1327 ieee80211_enable_keys(sdata); 1328 1329 wake_up: 1324 1330 /* 1325 1331 * Clear the WLAN_STA_BLOCK_BA flag so new aggregation … … 1343 1349 } 1344 1350 1345 /* add back keys */1346 list_for_each_entry(sdata, &local->interfaces, list)1347 if (ieee80211_sdata_running(sdata))1348 ieee80211_enable_keys(sdata);1349 1350 wake_up:1351 1351 ieee80211_wake_queues_by_reason(hw, 1352 1352 IEEE80211_QUEUE_STOP_REASON_SUSPEND); -
src/linux/universal/linux-3.4/net/sunrpc/clnt.c
r19285 r19332 1289 1289 1290 1290 switch (status) { 1291 case -ENOMEM: 1292 rpc_delay(task, HZ >> 2); 1291 1293 case -EAGAIN: /* woken up; retry */ 1292 1294 task->tk_action = call_reserve; -
src/linux/universal/linux-3.4/net/sunrpc/xprt.c
r19285 r19332 985 985 switch (PTR_ERR(req)) { 986 986 case -ENOMEM: 987 rpc_delay(task, HZ >> 2);988 987 dprintk("RPC: dynamic allocation of request slot " 989 988 "failed! Retrying\n"); 989 task->tk_status = -ENOMEM; 990 990 break; 991 991 case -EAGAIN: 992 992 rpc_sleep_on(&xprt->backlog, task, NULL); 993 993 dprintk("RPC: waiting for request slot\n"); 994 } 995 task->tk_status = -EAGAIN; 994 default: 995 task->tk_status = -EAGAIN; 996 } 996 997 return; 997 998 out_init_req: -
src/linux/universal/linux-3.4/net/xfrm/xfrm_policy.c
r19285 r19332 1920 1920 ok: 1921 1921 xfrm_pols_put(pols, drop_pols); 1922 if (dst && dst->xfrm && 1923 dst->xfrm->props.mode == XFRM_MODE_TUNNEL) 1924 dst->flags |= DST_XFRM_TUNNEL; 1922 1925 return dst; 1923 1926 -
src/linux/universal/linux-3.4/sound/usb/pcm.c
r19285 r19332 699 699 int count = 0, needs_knot = 0; 700 700 int err; 701 702 kfree(subs->rate_list.list); 703 subs->rate_list.list = NULL; 701 704 702 705 list_for_each_entry(fp, &subs->fmt_list, list) { -
src/linux/universal/linux-3.4/tools/vm/page-types.c
r19285 r19332 36 36 #include <sys/statfs.h> 37 37 #include "../../include/linux/magic.h" 38 #include "../../include/linux/kernel-page-flags.h" 38 39 39 40 … … 73 74 #define KPF_BYTES 8 74 75 #define PROC_KPAGEFLAGS "/proc/kpageflags" 75 76 /* copied from kpageflags_read() */77 #define KPF_LOCKED 078 #define KPF_ERROR 179 #define KPF_REFERENCED 280 #define KPF_UPTODATE 381 #define KPF_DIRTY 482 #define KPF_LRU 583 #define KPF_ACTIVE 684 #define KPF_SLAB 785 #define KPF_WRITEBACK 886 #define KPF_RECLAIM 987 #define KPF_BUDDY 1088 89 /* [11-20] new additions in 2.6.31 */90 #define KPF_MMAP 1191 #define KPF_ANON 1292 #define KPF_SWAPCACHE 1393 #define KPF_SWAPBACKED 1494 #define KPF_COMPOUND_HEAD 1595 #define KPF_COMPOUND_TAIL 1696 #define KPF_HUGE 1797 #define KPF_UNEVICTABLE 1898 #define KPF_HWPOISON 1999 #define KPF_NOPAGE 20100 #define KPF_KSM 21101 #define KPF_THP 22102 76 103 77 /* [32-] kernel hacking assistances */
Note: See TracChangeset
for help on using the changeset viewer.
