Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net

+864 -280
+2 -3
arch/arm/boot/dts/imx7s.dtsi
··· 643 643 reg = <0x30730000 0x10000>; 644 644 interrupts = <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>; 645 645 clocks = <&clks IMX7D_LCDIF_PIXEL_ROOT_CLK>, 646 - <&clks IMX7D_CLK_DUMMY>, 647 - <&clks IMX7D_CLK_DUMMY>; 648 - clock-names = "pix", "axi", "disp_axi"; 646 + <&clks IMX7D_LCDIF_PIXEL_ROOT_CLK>; 647 + clock-names = "pix", "axi"; 649 648 status = "disabled"; 650 649 }; 651 650 };
+4
arch/arm/boot/dts/orion5x-linkstation-lsgl.dts
··· 82 82 gpios = <&gpio0 9 GPIO_ACTIVE_HIGH>; 83 83 }; 84 84 85 + &sata { 86 + nr-ports = <2>; 87 + }; 88 + 85 89 &ehci1 { 86 90 status = "okay"; 87 91 };
+1 -1
arch/arm/boot/dts/sun8i-h3.dtsi
··· 410 410 }; 411 411 412 412 uart3_pins: uart3 { 413 - allwinner,pins = "PG13", "PG14"; 413 + allwinner,pins = "PA13", "PA14"; 414 414 allwinner,function = "uart3"; 415 415 allwinner,drive = <SUN4I_PINCTRL_10_MA>; 416 416 allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
+6 -2
arch/m68k/configs/amiga_defconfig
··· 95 95 CONFIG_NF_TABLES_NETDEV=m 96 96 CONFIG_NFT_EXTHDR=m 97 97 CONFIG_NFT_META=m 98 + CONFIG_NFT_NUMGEN=m 98 99 CONFIG_NFT_CT=m 99 - CONFIG_NFT_RBTREE=m 100 - CONFIG_NFT_HASH=m 100 + CONFIG_NFT_SET_RBTREE=m 101 + CONFIG_NFT_SET_HASH=m 101 102 CONFIG_NFT_COUNTER=m 102 103 CONFIG_NFT_LOG=m 103 104 CONFIG_NFT_LIMIT=m ··· 106 105 CONFIG_NFT_REDIR=m 107 106 CONFIG_NFT_NAT=m 108 107 CONFIG_NFT_QUEUE=m 108 + CONFIG_NFT_QUOTA=m 109 109 CONFIG_NFT_REJECT=m 110 110 CONFIG_NFT_COMPAT=m 111 + CONFIG_NFT_HASH=m 111 112 CONFIG_NFT_DUP_NETDEV=m 112 113 CONFIG_NFT_FWD_NETDEV=m 113 114 CONFIG_NETFILTER_XT_SET=m ··· 369 366 CONFIG_NETCONSOLE_DYNAMIC=y 370 367 CONFIG_VETH=m 371 368 # CONFIG_NET_VENDOR_3COM is not set 369 + # CONFIG_NET_VENDOR_AMAZON is not set 372 370 CONFIG_A2065=y 373 371 CONFIG_ARIADNE=y 374 372 # CONFIG_NET_VENDOR_ARC is not set
+6 -2
arch/m68k/configs/apollo_defconfig
··· 93 93 CONFIG_NF_TABLES_NETDEV=m 94 94 CONFIG_NFT_EXTHDR=m 95 95 CONFIG_NFT_META=m 96 + CONFIG_NFT_NUMGEN=m 96 97 CONFIG_NFT_CT=m 97 - CONFIG_NFT_RBTREE=m 98 - CONFIG_NFT_HASH=m 98 + CONFIG_NFT_SET_RBTREE=m 99 + CONFIG_NFT_SET_HASH=m 99 100 CONFIG_NFT_COUNTER=m 100 101 CONFIG_NFT_LOG=m 101 102 CONFIG_NFT_LIMIT=m ··· 104 103 CONFIG_NFT_REDIR=m 105 104 CONFIG_NFT_NAT=m 106 105 CONFIG_NFT_QUEUE=m 106 + CONFIG_NFT_QUOTA=m 107 107 CONFIG_NFT_REJECT=m 108 108 CONFIG_NFT_COMPAT=m 109 + CONFIG_NFT_HASH=m 109 110 CONFIG_NFT_DUP_NETDEV=m 110 111 CONFIG_NFT_FWD_NETDEV=m 111 112 CONFIG_NETFILTER_XT_SET=m ··· 350 347 CONFIG_NETCONSOLE=m 351 348 CONFIG_NETCONSOLE_DYNAMIC=y 352 349 CONFIG_VETH=m 350 + # CONFIG_NET_VENDOR_AMAZON is not set 353 351 # CONFIG_NET_VENDOR_ARC is not set 354 352 # CONFIG_NET_CADENCE is not set 355 353 # CONFIG_NET_VENDOR_BROADCOM is not set
+6 -2
arch/m68k/configs/atari_defconfig
··· 93 93 CONFIG_NF_TABLES_NETDEV=m 94 94 CONFIG_NFT_EXTHDR=m 95 95 CONFIG_NFT_META=m 96 + CONFIG_NFT_NUMGEN=m 96 97 CONFIG_NFT_CT=m 97 - CONFIG_NFT_RBTREE=m 98 - CONFIG_NFT_HASH=m 98 + CONFIG_NFT_SET_RBTREE=m 99 + CONFIG_NFT_SET_HASH=m 99 100 CONFIG_NFT_COUNTER=m 100 101 CONFIG_NFT_LOG=m 101 102 CONFIG_NFT_LIMIT=m ··· 104 103 CONFIG_NFT_REDIR=m 105 104 CONFIG_NFT_NAT=m 106 105 CONFIG_NFT_QUEUE=m 106 + CONFIG_NFT_QUOTA=m 107 107 CONFIG_NFT_REJECT=m 108 108 CONFIG_NFT_COMPAT=m 109 + CONFIG_NFT_HASH=m 109 110 CONFIG_NFT_DUP_NETDEV=m 110 111 CONFIG_NFT_FWD_NETDEV=m 111 112 CONFIG_NETFILTER_XT_SET=m ··· 359 356 CONFIG_NETCONSOLE=m 360 357 CONFIG_NETCONSOLE_DYNAMIC=y 361 358 CONFIG_VETH=m 359 + # CONFIG_NET_VENDOR_AMAZON is not set 362 360 CONFIG_ATARILANCE=y 363 361 # CONFIG_NET_VENDOR_ARC is not set 364 362 # CONFIG_NET_CADENCE is not set
+6 -2
arch/m68k/configs/bvme6000_defconfig
··· 91 91 CONFIG_NF_TABLES_NETDEV=m 92 92 CONFIG_NFT_EXTHDR=m 93 93 CONFIG_NFT_META=m 94 + CONFIG_NFT_NUMGEN=m 94 95 CONFIG_NFT_CT=m 95 - CONFIG_NFT_RBTREE=m 96 - CONFIG_NFT_HASH=m 96 + CONFIG_NFT_SET_RBTREE=m 97 + CONFIG_NFT_SET_HASH=m 97 98 CONFIG_NFT_COUNTER=m 98 99 CONFIG_NFT_LOG=m 99 100 CONFIG_NFT_LIMIT=m ··· 102 101 CONFIG_NFT_REDIR=m 103 102 CONFIG_NFT_NAT=m 104 103 CONFIG_NFT_QUEUE=m 104 + CONFIG_NFT_QUOTA=m 105 105 CONFIG_NFT_REJECT=m 106 106 CONFIG_NFT_COMPAT=m 107 + CONFIG_NFT_HASH=m 107 108 CONFIG_NFT_DUP_NETDEV=m 108 109 CONFIG_NFT_FWD_NETDEV=m 109 110 CONFIG_NETFILTER_XT_SET=m ··· 349 346 CONFIG_NETCONSOLE=m 350 347 CONFIG_NETCONSOLE_DYNAMIC=y 351 348 CONFIG_VETH=m 349 + # CONFIG_NET_VENDOR_AMAZON is not set 352 350 # CONFIG_NET_VENDOR_ARC is not set 353 351 # CONFIG_NET_CADENCE is not set 354 352 # CONFIG_NET_VENDOR_BROADCOM is not set
+6 -2
arch/m68k/configs/hp300_defconfig
··· 93 93 CONFIG_NF_TABLES_NETDEV=m 94 94 CONFIG_NFT_EXTHDR=m 95 95 CONFIG_NFT_META=m 96 + CONFIG_NFT_NUMGEN=m 96 97 CONFIG_NFT_CT=m 97 - CONFIG_NFT_RBTREE=m 98 - CONFIG_NFT_HASH=m 98 + CONFIG_NFT_SET_RBTREE=m 99 + CONFIG_NFT_SET_HASH=m 99 100 CONFIG_NFT_COUNTER=m 100 101 CONFIG_NFT_LOG=m 101 102 CONFIG_NFT_LIMIT=m ··· 104 103 CONFIG_NFT_REDIR=m 105 104 CONFIG_NFT_NAT=m 106 105 CONFIG_NFT_QUEUE=m 106 + CONFIG_NFT_QUOTA=m 107 107 CONFIG_NFT_REJECT=m 108 108 CONFIG_NFT_COMPAT=m 109 + CONFIG_NFT_HASH=m 109 110 CONFIG_NFT_DUP_NETDEV=m 110 111 CONFIG_NFT_FWD_NETDEV=m 111 112 CONFIG_NETFILTER_XT_SET=m ··· 350 347 CONFIG_NETCONSOLE=m 351 348 CONFIG_NETCONSOLE_DYNAMIC=y 352 349 CONFIG_VETH=m 350 + # CONFIG_NET_VENDOR_AMAZON is not set 353 351 CONFIG_HPLANCE=y 354 352 # CONFIG_NET_VENDOR_ARC is not set 355 353 # CONFIG_NET_CADENCE is not set
+6 -2
arch/m68k/configs/mac_defconfig
··· 92 92 CONFIG_NF_TABLES_NETDEV=m 93 93 CONFIG_NFT_EXTHDR=m 94 94 CONFIG_NFT_META=m 95 + CONFIG_NFT_NUMGEN=m 95 96 CONFIG_NFT_CT=m 96 - CONFIG_NFT_RBTREE=m 97 - CONFIG_NFT_HASH=m 97 + CONFIG_NFT_SET_RBTREE=m 98 + CONFIG_NFT_SET_HASH=m 98 99 CONFIG_NFT_COUNTER=m 99 100 CONFIG_NFT_LOG=m 100 101 CONFIG_NFT_LIMIT=m ··· 103 102 CONFIG_NFT_REDIR=m 104 103 CONFIG_NFT_NAT=m 105 104 CONFIG_NFT_QUEUE=m 105 + CONFIG_NFT_QUOTA=m 106 106 CONFIG_NFT_REJECT=m 107 107 CONFIG_NFT_COMPAT=m 108 + CONFIG_NFT_HASH=m 108 109 CONFIG_NFT_DUP_NETDEV=m 109 110 CONFIG_NFT_FWD_NETDEV=m 110 111 CONFIG_NETFILTER_XT_SET=m ··· 366 363 CONFIG_NETCONSOLE=m 367 364 CONFIG_NETCONSOLE_DYNAMIC=y 368 365 CONFIG_VETH=m 366 + # CONFIG_NET_VENDOR_AMAZON is not set 369 367 CONFIG_MACMACE=y 370 368 # CONFIG_NET_VENDOR_ARC is not set 371 369 # CONFIG_NET_CADENCE is not set
+6 -2
arch/m68k/configs/multi_defconfig
··· 102 102 CONFIG_NF_TABLES_NETDEV=m 103 103 CONFIG_NFT_EXTHDR=m 104 104 CONFIG_NFT_META=m 105 + CONFIG_NFT_NUMGEN=m 105 106 CONFIG_NFT_CT=m 106 - CONFIG_NFT_RBTREE=m 107 - CONFIG_NFT_HASH=m 107 + CONFIG_NFT_SET_RBTREE=m 108 + CONFIG_NFT_SET_HASH=m 108 109 CONFIG_NFT_COUNTER=m 109 110 CONFIG_NFT_LOG=m 110 111 CONFIG_NFT_LIMIT=m ··· 113 112 CONFIG_NFT_REDIR=m 114 113 CONFIG_NFT_NAT=m 115 114 CONFIG_NFT_QUEUE=m 115 + CONFIG_NFT_QUOTA=m 116 116 CONFIG_NFT_REJECT=m 117 117 CONFIG_NFT_COMPAT=m 118 + CONFIG_NFT_HASH=m 118 119 CONFIG_NFT_DUP_NETDEV=m 119 120 CONFIG_NFT_FWD_NETDEV=m 120 121 CONFIG_NETFILTER_XT_SET=m ··· 400 397 CONFIG_NETCONSOLE_DYNAMIC=y 401 398 CONFIG_VETH=m 402 399 # CONFIG_NET_VENDOR_3COM is not set 400 + # CONFIG_NET_VENDOR_AMAZON is not set 403 401 CONFIG_A2065=y 404 402 CONFIG_ARIADNE=y 405 403 CONFIG_ATARILANCE=y
+6 -2
arch/m68k/configs/mvme147_defconfig
··· 90 90 CONFIG_NF_TABLES_NETDEV=m 91 91 CONFIG_NFT_EXTHDR=m 92 92 CONFIG_NFT_META=m 93 + CONFIG_NFT_NUMGEN=m 93 94 CONFIG_NFT_CT=m 94 - CONFIG_NFT_RBTREE=m 95 - CONFIG_NFT_HASH=m 95 + CONFIG_NFT_SET_RBTREE=m 96 + CONFIG_NFT_SET_HASH=m 96 97 CONFIG_NFT_COUNTER=m 97 98 CONFIG_NFT_LOG=m 98 99 CONFIG_NFT_LIMIT=m ··· 101 100 CONFIG_NFT_REDIR=m 102 101 CONFIG_NFT_NAT=m 103 102 CONFIG_NFT_QUEUE=m 103 + CONFIG_NFT_QUOTA=m 104 104 CONFIG_NFT_REJECT=m 105 105 CONFIG_NFT_COMPAT=m 106 + CONFIG_NFT_HASH=m 106 107 CONFIG_NFT_DUP_NETDEV=m 107 108 CONFIG_NFT_FWD_NETDEV=m 108 109 CONFIG_NETFILTER_XT_SET=m ··· 348 345 CONFIG_NETCONSOLE=m 349 346 CONFIG_NETCONSOLE_DYNAMIC=y 350 347 CONFIG_VETH=m 348 + # CONFIG_NET_VENDOR_AMAZON is not set 351 349 CONFIG_MVME147_NET=y 352 350 # CONFIG_NET_VENDOR_ARC is not set 353 351 # CONFIG_NET_CADENCE is not set
+6 -2
arch/m68k/configs/mvme16x_defconfig
··· 91 91 CONFIG_NF_TABLES_NETDEV=m 92 92 CONFIG_NFT_EXTHDR=m 93 93 CONFIG_NFT_META=m 94 + CONFIG_NFT_NUMGEN=m 94 95 CONFIG_NFT_CT=m 95 - CONFIG_NFT_RBTREE=m 96 - CONFIG_NFT_HASH=m 96 + CONFIG_NFT_SET_RBTREE=m 97 + CONFIG_NFT_SET_HASH=m 97 98 CONFIG_NFT_COUNTER=m 98 99 CONFIG_NFT_LOG=m 99 100 CONFIG_NFT_LIMIT=m ··· 102 101 CONFIG_NFT_REDIR=m 103 102 CONFIG_NFT_NAT=m 104 103 CONFIG_NFT_QUEUE=m 104 + CONFIG_NFT_QUOTA=m 105 105 CONFIG_NFT_REJECT=m 106 106 CONFIG_NFT_COMPAT=m 107 + CONFIG_NFT_HASH=m 107 108 CONFIG_NFT_DUP_NETDEV=m 108 109 CONFIG_NFT_FWD_NETDEV=m 109 110 CONFIG_NETFILTER_XT_SET=m ··· 349 346 CONFIG_NETCONSOLE=m 350 347 CONFIG_NETCONSOLE_DYNAMIC=y 351 348 CONFIG_VETH=m 349 + # CONFIG_NET_VENDOR_AMAZON is not set 352 350 # CONFIG_NET_VENDOR_ARC is not set 353 351 # CONFIG_NET_CADENCE is not set 354 352 # CONFIG_NET_VENDOR_BROADCOM is not set
+6 -2
arch/m68k/configs/q40_defconfig
··· 91 91 CONFIG_NF_TABLES_NETDEV=m 92 92 CONFIG_NFT_EXTHDR=m 93 93 CONFIG_NFT_META=m 94 + CONFIG_NFT_NUMGEN=m 94 95 CONFIG_NFT_CT=m 95 - CONFIG_NFT_RBTREE=m 96 - CONFIG_NFT_HASH=m 96 + CONFIG_NFT_SET_RBTREE=m 97 + CONFIG_NFT_SET_HASH=m 97 98 CONFIG_NFT_COUNTER=m 98 99 CONFIG_NFT_LOG=m 99 100 CONFIG_NFT_LIMIT=m ··· 102 101 CONFIG_NFT_REDIR=m 103 102 CONFIG_NFT_NAT=m 104 103 CONFIG_NFT_QUEUE=m 104 + CONFIG_NFT_QUOTA=m 105 105 CONFIG_NFT_REJECT=m 106 106 CONFIG_NFT_COMPAT=m 107 + CONFIG_NFT_HASH=m 107 108 CONFIG_NFT_DUP_NETDEV=m 108 109 CONFIG_NFT_FWD_NETDEV=m 109 110 CONFIG_NETFILTER_XT_SET=m ··· 356 353 CONFIG_NETCONSOLE_DYNAMIC=y 357 354 CONFIG_VETH=m 358 355 # CONFIG_NET_VENDOR_3COM is not set 356 + # CONFIG_NET_VENDOR_AMAZON is not set 359 357 # CONFIG_NET_VENDOR_AMD is not set 360 358 # CONFIG_NET_VENDOR_ARC is not set 361 359 # CONFIG_NET_CADENCE is not set
+6 -2
arch/m68k/configs/sun3_defconfig
··· 88 88 CONFIG_NF_TABLES_NETDEV=m 89 89 CONFIG_NFT_EXTHDR=m 90 90 CONFIG_NFT_META=m 91 + CONFIG_NFT_NUMGEN=m 91 92 CONFIG_NFT_CT=m 92 - CONFIG_NFT_RBTREE=m 93 - CONFIG_NFT_HASH=m 93 + CONFIG_NFT_SET_RBTREE=m 94 + CONFIG_NFT_SET_HASH=m 94 95 CONFIG_NFT_COUNTER=m 95 96 CONFIG_NFT_LOG=m 96 97 CONFIG_NFT_LIMIT=m ··· 99 98 CONFIG_NFT_REDIR=m 100 99 CONFIG_NFT_NAT=m 101 100 CONFIG_NFT_QUEUE=m 101 + CONFIG_NFT_QUOTA=m 102 102 CONFIG_NFT_REJECT=m 103 103 CONFIG_NFT_COMPAT=m 104 + CONFIG_NFT_HASH=m 104 105 CONFIG_NFT_DUP_NETDEV=m 105 106 CONFIG_NFT_FWD_NETDEV=m 106 107 CONFIG_NETFILTER_XT_SET=m ··· 346 343 CONFIG_NETCONSOLE=m 347 344 CONFIG_NETCONSOLE_DYNAMIC=y 348 345 CONFIG_VETH=m 346 + # CONFIG_NET_VENDOR_AMAZON is not set 349 347 CONFIG_SUN3LANCE=y 350 348 # CONFIG_NET_VENDOR_ARC is not set 351 349 # CONFIG_NET_CADENCE is not set
+6 -2
arch/m68k/configs/sun3x_defconfig
··· 88 88 CONFIG_NF_TABLES_NETDEV=m 89 89 CONFIG_NFT_EXTHDR=m 90 90 CONFIG_NFT_META=m 91 + CONFIG_NFT_NUMGEN=m 91 92 CONFIG_NFT_CT=m 92 - CONFIG_NFT_RBTREE=m 93 - CONFIG_NFT_HASH=m 93 + CONFIG_NFT_SET_RBTREE=m 94 + CONFIG_NFT_SET_HASH=m 94 95 CONFIG_NFT_COUNTER=m 95 96 CONFIG_NFT_LOG=m 96 97 CONFIG_NFT_LIMIT=m ··· 99 98 CONFIG_NFT_REDIR=m 100 99 CONFIG_NFT_NAT=m 101 100 CONFIG_NFT_QUEUE=m 101 + CONFIG_NFT_QUOTA=m 102 102 CONFIG_NFT_REJECT=m 103 103 CONFIG_NFT_COMPAT=m 104 + CONFIG_NFT_HASH=m 104 105 CONFIG_NFT_DUP_NETDEV=m 105 106 CONFIG_NFT_FWD_NETDEV=m 106 107 CONFIG_NETFILTER_XT_SET=m ··· 346 343 CONFIG_NETCONSOLE=m 347 344 CONFIG_NETCONSOLE_DYNAMIC=y 348 345 CONFIG_VETH=m 346 + # CONFIG_NET_VENDOR_AMAZON is not set 349 347 CONFIG_SUN3LANCE=y 350 348 # CONFIG_NET_VENDOR_ARC is not set 351 349 # CONFIG_NET_CADENCE is not set
+1 -1
arch/m68k/include/asm/delay.h
··· 114 114 */ 115 115 #define HZSCALE (268435456 / (1000000 / HZ)) 116 116 117 - #define ndelay(n) __delay(DIV_ROUND_UP((n) * ((((HZSCALE) >> 11) * (loops_per_jiffy >> 11)) >> 6), 1000)); 117 + #define ndelay(n) __delay(DIV_ROUND_UP((n) * ((((HZSCALE) >> 11) * (loops_per_jiffy >> 11)) >> 6), 1000)) 118 118 119 119 #endif /* defined(_M68K_DELAY_H) */
+4 -4
arch/parisc/include/asm/pgtable.h
··· 65 65 unsigned long flags; \ 66 66 spin_lock_irqsave(&pa_tlb_lock, flags); \ 67 67 old_pte = *ptep; \ 68 - set_pte(ptep, pteval); \ 69 68 if (pte_inserted(old_pte)) \ 70 69 purge_tlb_entries(mm, addr); \ 70 + set_pte(ptep, pteval); \ 71 71 spin_unlock_irqrestore(&pa_tlb_lock, flags); \ 72 72 } while (0) 73 73 ··· 478 478 spin_unlock_irqrestore(&pa_tlb_lock, flags); 479 479 return 0; 480 480 } 481 - set_pte(ptep, pte_mkold(pte)); 482 481 purge_tlb_entries(vma->vm_mm, addr); 482 + set_pte(ptep, pte_mkold(pte)); 483 483 spin_unlock_irqrestore(&pa_tlb_lock, flags); 484 484 return 1; 485 485 } ··· 492 492 493 493 spin_lock_irqsave(&pa_tlb_lock, flags); 494 494 old_pte = *ptep; 495 - set_pte(ptep, __pte(0)); 496 495 if (pte_inserted(old_pte)) 497 496 purge_tlb_entries(mm, addr); 497 + set_pte(ptep, __pte(0)); 498 498 spin_unlock_irqrestore(&pa_tlb_lock, flags); 499 499 500 500 return old_pte; ··· 504 504 { 505 505 unsigned long flags; 506 506 spin_lock_irqsave(&pa_tlb_lock, flags); 507 - set_pte(ptep, pte_wrprotect(*ptep)); 508 507 purge_tlb_entries(mm, addr); 508 + set_pte(ptep, pte_wrprotect(*ptep)); 509 509 spin_unlock_irqrestore(&pa_tlb_lock, flags); 510 510 } 511 511
+11
arch/parisc/kernel/cache.c
··· 393 393 394 394 /* calculate TLB flush threshold */ 395 395 396 + /* On SMP machines, skip the TLB measure of kernel text which 397 + * has been mapped as huge pages. */ 398 + if (num_online_cpus() > 1 && !parisc_requires_coherency()) { 399 + threshold = max(cache_info.it_size, cache_info.dt_size); 400 + threshold *= PAGE_SIZE; 401 + threshold /= num_online_cpus(); 402 + goto set_tlb_threshold; 403 + } 404 + 396 405 alltime = mfctl(16); 397 406 flush_tlb_all(); 398 407 alltime = mfctl(16) - alltime; ··· 420 411 alltime, size, rangetime); 421 412 422 413 threshold = PAGE_ALIGN(num_online_cpus() * size * alltime / rangetime); 414 + 415 + set_tlb_threshold: 423 416 if (threshold) 424 417 parisc_tlb_flush_threshold = threshold; 425 418 printk(KERN_INFO "TLB flush threshold set to %lu KiB\n",
+1 -21
arch/parisc/kernel/pacache.S
··· 892 892 fdc,m r31(%r28) 893 893 fdc,m r31(%r28) 894 894 fdc,m r31(%r28) 895 - cmpb,COND(<<) %r28, %r25,1b 895 + cmpb,COND(<<) %r28, %r25,1b 896 896 fdc,m r31(%r28) 897 897 898 898 sync 899 - 900 - #ifdef CONFIG_PA20 901 - pdtlb,l %r0(%r25) 902 - #else 903 - tlb_lock %r20,%r21,%r22 904 - pdtlb %r0(%r25) 905 - tlb_unlock %r20,%r21,%r22 906 - #endif 907 - 908 899 bv %r0(%r2) 909 900 nop 910 901 .exit ··· 970 979 fic,m %r31(%sr4,%r28) 971 980 972 981 sync 973 - 974 - #ifdef CONFIG_PA20 975 - pdtlb,l %r0(%r28) 976 - pitlb,l %r0(%sr4,%r25) 977 - #else 978 - tlb_lock %r20,%r21,%r22 979 - pdtlb %r0(%r28) 980 - pitlb %r0(%sr4,%r25) 981 - tlb_unlock %r20,%r21,%r22 982 - #endif 983 - 984 982 bv %r0(%r2) 985 983 nop 986 984 .exit
+1 -1
arch/x86/events/core.c
··· 69 69 int shift = 64 - x86_pmu.cntval_bits; 70 70 u64 prev_raw_count, new_raw_count; 71 71 int idx = hwc->idx; 72 - s64 delta; 72 + u64 delta; 73 73 74 74 if (idx == INTEL_PMC_IDX_FIXED_BTS) 75 75 return 0;
+1 -1
arch/x86/events/intel/core.c
··· 4034 4034 4035 4035 /* Support full width counters using alternative MSR range */ 4036 4036 if (x86_pmu.intel_cap.full_width_write) { 4037 - x86_pmu.max_period = x86_pmu.cntval_mask; 4037 + x86_pmu.max_period = x86_pmu.cntval_mask >> 1; 4038 4038 x86_pmu.perfctr = MSR_IA32_PMC0; 4039 4039 pr_cont("full-width counters, "); 4040 4040 }
+1
arch/x86/events/intel/cstate.c
··· 540 540 X86_CSTATES_MODEL(INTEL_FAM6_SKYLAKE_DESKTOP, snb_cstates), 541 541 542 542 X86_CSTATES_MODEL(INTEL_FAM6_XEON_PHI_KNL, knl_cstates), 543 + X86_CSTATES_MODEL(INTEL_FAM6_XEON_PHI_KNM, knl_cstates), 543 544 { }, 544 545 }; 545 546 MODULE_DEVICE_TABLE(x86cpu, intel_cstates_match);
+1 -3
arch/x86/include/asm/compat.h
··· 272 272 /* 273 273 * The type of struct elf_prstatus.pr_reg in compatible core dumps. 274 274 */ 275 - #ifdef CONFIG_X86_X32_ABI 276 275 typedef struct user_regs_struct compat_elf_gregset_t; 277 276 278 277 /* Full regset -- prstatus on x32, otherwise on ia32 */ ··· 280 281 do { *(int *) (((void *) &((S)->pr_reg)) + R) = (V); } \ 281 282 while (0) 282 283 284 + #ifdef CONFIG_X86_X32_ABI 283 285 #define COMPAT_USE_64BIT_TIME \ 284 286 (!!(task_pt_regs(current)->orig_ax & __X32_SYSCALL_BIT)) 285 - #else 286 - typedef struct user_regs_struct32 compat_elf_gregset_t; 287 287 #endif 288 288 289 289 /*
+2 -2
arch/x86/kernel/apic/x2apic_uv_x.c
··· 815 815 l = li; 816 816 } 817 817 addr1 = (base << shift) + 818 - f * (unsigned long)(1 << m_io); 818 + f * (1ULL << m_io); 819 819 addr2 = (base << shift) + 820 - (l + 1) * (unsigned long)(1 << m_io); 820 + (l + 1) * (1ULL << m_io); 821 821 pr_info("UV: %s[%03d..%03d] NASID 0x%04x ADDR 0x%016lx - 0x%016lx\n", 822 822 id, fi, li, lnasid, addr1, addr2); 823 823 if (max_io < l)
+6 -3
arch/x86/kernel/unwind_guess.c
··· 7 7 8 8 unsigned long unwind_get_return_address(struct unwind_state *state) 9 9 { 10 - unsigned long addr = READ_ONCE_NOCHECK(*state->sp); 10 + unsigned long addr; 11 11 12 12 if (unwind_done(state)) 13 13 return 0; 14 + 15 + addr = READ_ONCE_NOCHECK(*state->sp); 14 16 15 17 return ftrace_graph_ret_addr(state->task, &state->graph_idx, 16 18 addr, state->sp); ··· 27 25 return false; 28 26 29 27 do { 30 - unsigned long addr = READ_ONCE_NOCHECK(*state->sp); 28 + for (state->sp++; state->sp < info->end; state->sp++) { 29 + unsigned long addr = READ_ONCE_NOCHECK(*state->sp); 31 30 32 - for (state->sp++; state->sp < info->end; state->sp++) 33 31 if (__kernel_text_address(addr)) 34 32 return true; 33 + } 35 34 36 35 state->sp = info->next_sp; 37 36
+2
arch/x86/platform/olpc/olpc-xo15-sci.c
··· 196 196 return 0; 197 197 } 198 198 199 + #ifdef CONFIG_PM_SLEEP 199 200 static int xo15_sci_resume(struct device *dev) 200 201 { 201 202 /* Enable all EC events */ ··· 208 207 209 208 return 0; 210 209 } 210 + #endif 211 211 212 212 static SIMPLE_DEV_PM_OPS(xo15_sci_pm, NULL, xo15_sci_resume); 213 213
+1 -1
arch/x86/tools/relocs.h
··· 16 16 #include <regex.h> 17 17 #include <tools/le_byteshift.h> 18 18 19 - void die(char *fmt, ...); 19 + void die(char *fmt, ...) __attribute__((noreturn)); 20 20 21 21 #define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0])) 22 22
+4
block/blk-map.c
··· 118 118 struct iov_iter i; 119 119 int ret; 120 120 121 + if (!iter_is_iovec(iter)) 122 + goto fail; 123 + 121 124 if (map_data) 122 125 copy = true; 123 126 else if (iov_iter_alignment(iter) & align) ··· 143 140 144 141 unmap_rq: 145 142 __blk_rq_unmap_user(bio); 143 + fail: 146 144 rq->bio = NULL; 147 145 return -EINVAL; 148 146 }
+37 -22
crypto/algif_aead.c
··· 81 81 { 82 82 unsigned as = crypto_aead_authsize(crypto_aead_reqtfm(&ctx->aead_req)); 83 83 84 - return ctx->used >= ctx->aead_assoclen + as; 84 + /* 85 + * The minimum amount of memory needed for an AEAD cipher is 86 + * the AAD and in case of decryption the tag. 87 + */ 88 + return ctx->used >= ctx->aead_assoclen + (ctx->enc ? 0 : as); 85 89 } 86 90 87 91 static void aead_reset_ctx(struct aead_ctx *ctx) ··· 419 415 unsigned int i, reqlen = GET_REQ_SIZE(tfm); 420 416 int err = -ENOMEM; 421 417 unsigned long used; 422 - size_t outlen; 418 + size_t outlen = 0; 423 419 size_t usedpages = 0; 424 420 425 421 lock_sock(sk); ··· 429 425 goto unlock; 430 426 } 431 427 432 - used = ctx->used; 433 - outlen = used; 434 - 435 428 if (!aead_sufficient_data(ctx)) 436 429 goto unlock; 430 + 431 + used = ctx->used; 432 + if (ctx->enc) 433 + outlen = used + as; 434 + else 435 + outlen = used - as; 437 436 438 437 req = sock_kmalloc(sk, reqlen, GFP_KERNEL); 439 438 if (unlikely(!req)) ··· 451 444 aead_request_set_ad(req, ctx->aead_assoclen); 452 445 aead_request_set_callback(req, CRYPTO_TFM_REQ_MAY_BACKLOG, 453 446 aead_async_cb, sk); 454 - used -= ctx->aead_assoclen + (ctx->enc ? as : 0); 447 + used -= ctx->aead_assoclen; 455 448 456 449 /* take over all tx sgls from ctx */ 457 450 areq->tsgl = sock_kmalloc(sk, sizeof(*areq->tsgl) * sgl->cur, ··· 467 460 areq->tsgls = sgl->cur; 468 461 469 462 /* create rx sgls */ 470 - while (iov_iter_count(&msg->msg_iter)) { 463 + while (outlen > usedpages && iov_iter_count(&msg->msg_iter)) { 471 464 size_t seglen = min_t(size_t, iov_iter_count(&msg->msg_iter), 472 465 (outlen - usedpages)); 473 466 ··· 497 490 498 491 last_rsgl = rsgl; 499 492 500 - /* we do not need more iovecs as we have sufficient memory */ 501 - if (outlen <= usedpages) 502 - break; 503 - 504 493 iov_iter_advance(&msg->msg_iter, err); 505 494 } 506 - err = -EINVAL; 495 + 507 496 /* ensure output buffer is sufficiently large */ 508 - if (usedpages < outlen) 509 - goto free; 497 + if (usedpages < outlen) { 498 + err = -EINVAL; 499 + goto unlock; 500 + } 510 501 511 502 aead_request_set_crypt(req, areq->tsgl, areq->first_rsgl.sgl.sg, used, 512 503 areq->iv); ··· 575 570 goto unlock; 576 571 } 577 572 573 + /* data length provided by caller via sendmsg/sendpage */ 578 574 used = ctx->used; 579 575 580 576 /* ··· 590 584 if (!aead_sufficient_data(ctx)) 591 585 goto unlock; 592 586 593 - outlen = used; 587 + /* 588 + * Calculate the minimum output buffer size holding the result of the 589 + * cipher operation. When encrypting data, the receiving buffer is 590 + * larger by the tag length compared to the input buffer as the 591 + * encryption operation generates the tag. For decryption, the input 592 + * buffer provides the tag which is consumed resulting in only the 593 + * plaintext without a buffer for the tag returned to the caller. 594 + */ 595 + if (ctx->enc) 596 + outlen = used + as; 597 + else 598 + outlen = used - as; 594 599 595 600 /* 596 601 * The cipher operation input data is reduced by the associated data 597 602 * length as this data is processed separately later on. 598 603 */ 599 - used -= ctx->aead_assoclen + (ctx->enc ? as : 0); 604 + used -= ctx->aead_assoclen; 600 605 601 606 /* convert iovecs of output buffers into scatterlists */ 602 - while (iov_iter_count(&msg->msg_iter)) { 607 + while (outlen > usedpages && iov_iter_count(&msg->msg_iter)) { 603 608 size_t seglen = min_t(size_t, iov_iter_count(&msg->msg_iter), 604 609 (outlen - usedpages)); 605 610 ··· 637 620 638 621 last_rsgl = rsgl; 639 622 640 - /* we do not need more iovecs as we have sufficient memory */ 641 - if (outlen <= usedpages) 642 - break; 643 623 iov_iter_advance(&msg->msg_iter, err); 644 624 } 645 625 646 - err = -EINVAL; 647 626 /* ensure output buffer is sufficiently large */ 648 - if (usedpages < outlen) 627 + if (usedpages < outlen) { 628 + err = -EINVAL; 649 629 goto unlock; 630 + } 650 631 651 632 sg_mark_end(sgl->sg + sgl->cur - 1); 652 633 aead_request_set_crypt(&ctx->aead_req, sgl->sg, ctx->first_rsgl.sgl.sg,
+12 -7
crypto/mcryptd.c
··· 254 254 goto out; 255 255 } 256 256 257 - static inline void mcryptd_check_internal(struct rtattr **tb, u32 *type, 257 + static inline bool mcryptd_check_internal(struct rtattr **tb, u32 *type, 258 258 u32 *mask) 259 259 { 260 260 struct crypto_attr_type *algt; 261 261 262 262 algt = crypto_get_attr_type(tb); 263 263 if (IS_ERR(algt)) 264 - return; 265 - if ((algt->type & CRYPTO_ALG_INTERNAL)) 266 - *type |= CRYPTO_ALG_INTERNAL; 267 - if ((algt->mask & CRYPTO_ALG_INTERNAL)) 268 - *mask |= CRYPTO_ALG_INTERNAL; 264 + return false; 265 + 266 + *type |= algt->type & CRYPTO_ALG_INTERNAL; 267 + *mask |= algt->mask & CRYPTO_ALG_INTERNAL; 268 + 269 + if (*type & *mask & CRYPTO_ALG_INTERNAL) 270 + return true; 271 + else 272 + return false; 269 273 } 270 274 271 275 static int mcryptd_hash_init_tfm(struct crypto_tfm *tfm) ··· 496 492 u32 mask = 0; 497 493 int err; 498 494 499 - mcryptd_check_internal(tb, &type, &mask); 495 + if (!mcryptd_check_internal(tb, &type, &mask)) 496 + return -EINVAL; 500 497 501 498 halg = ahash_attr_alg(tb[1], type, mask); 502 499 if (IS_ERR(halg))
+40 -15
drivers/acpi/nfit/core.c
··· 94 94 return to_acpi_device(acpi_desc->dev); 95 95 } 96 96 97 - static int xlat_status(void *buf, unsigned int cmd, u32 status) 97 + static int xlat_bus_status(void *buf, unsigned int cmd, u32 status) 98 98 { 99 99 struct nd_cmd_clear_error *clear_err; 100 100 struct nd_cmd_ars_status *ars_status; ··· 113 113 flags = ND_ARS_PERSISTENT | ND_ARS_VOLATILE; 114 114 if ((status >> 16 & flags) == 0) 115 115 return -ENOTTY; 116 - break; 116 + return 0; 117 117 case ND_CMD_ARS_START: 118 118 /* ARS is in progress */ 119 119 if ((status & 0xffff) == NFIT_ARS_START_BUSY) ··· 122 122 /* Command failed */ 123 123 if (status & 0xffff) 124 124 return -EIO; 125 - break; 125 + return 0; 126 126 case ND_CMD_ARS_STATUS: 127 127 ars_status = buf; 128 128 /* Command failed */ ··· 146 146 * then just continue with the returned results. 147 147 */ 148 148 if (status == NFIT_ARS_STATUS_INTR) { 149 - if (ars_status->flags & NFIT_ARS_F_OVERFLOW) 149 + if (ars_status->out_length >= 40 && (ars_status->flags 150 + & NFIT_ARS_F_OVERFLOW)) 150 151 return -ENOSPC; 151 152 return 0; 152 153 } ··· 155 154 /* Unknown status */ 156 155 if (status >> 16) 157 156 return -EIO; 158 - break; 157 + return 0; 159 158 case ND_CMD_CLEAR_ERROR: 160 159 clear_err = buf; 161 160 if (status & 0xffff) ··· 164 163 return -EIO; 165 164 if (clear_err->length > clear_err->cleared) 166 165 return clear_err->cleared; 167 - break; 166 + return 0; 168 167 default: 169 168 break; 170 169 } ··· 175 174 return 0; 176 175 } 177 176 178 - static int acpi_nfit_ctl(struct nvdimm_bus_descriptor *nd_desc, 179 - struct nvdimm *nvdimm, unsigned int cmd, void *buf, 180 - unsigned int buf_len, int *cmd_rc) 177 + static int xlat_status(struct nvdimm *nvdimm, void *buf, unsigned int cmd, 178 + u32 status) 179 + { 180 + if (!nvdimm) 181 + return xlat_bus_status(buf, cmd, status); 182 + if (status) 183 + return -EIO; 184 + return 0; 185 + } 186 + 187 + int acpi_nfit_ctl(struct nvdimm_bus_descriptor *nd_desc, struct nvdimm *nvdimm, 188 + unsigned int cmd, void *buf, unsigned int buf_len, int *cmd_rc) 181 189 { 182 190 struct acpi_nfit_desc *acpi_desc = to_acpi_nfit_desc(nd_desc); 183 191 union acpi_object in_obj, in_buf, *out_obj; ··· 308 298 309 299 for (i = 0, offset = 0; i < desc->out_num; i++) { 310 300 u32 out_size = nd_cmd_out_size(nvdimm, cmd, desc, i, buf, 311 - (u32 *) out_obj->buffer.pointer); 301 + (u32 *) out_obj->buffer.pointer, 302 + out_obj->buffer.length - offset); 312 303 313 304 if (offset + out_size > out_obj->buffer.length) { 314 305 dev_dbg(dev, "%s:%s output object underflow cmd: %s field: %d\n", ··· 344 333 */ 345 334 rc = buf_len - offset - in_buf.buffer.length; 346 335 if (cmd_rc) 347 - *cmd_rc = xlat_status(buf, cmd, fw_status); 336 + *cmd_rc = xlat_status(nvdimm, buf, cmd, 337 + fw_status); 348 338 } else { 349 339 dev_err(dev, "%s:%s underrun cmd: %s buf_len: %d out_len: %d\n", 350 340 __func__, dimm_name, cmd_name, buf_len, ··· 355 343 } else { 356 344 rc = 0; 357 345 if (cmd_rc) 358 - *cmd_rc = xlat_status(buf, cmd, fw_status); 346 + *cmd_rc = xlat_status(nvdimm, buf, cmd, fw_status); 359 347 } 360 348 361 349 out: ··· 363 351 364 352 return rc; 365 353 } 354 + EXPORT_SYMBOL_GPL(acpi_nfit_ctl); 366 355 367 356 static const char *spa_type_name(u16 type) 368 357 { ··· 2014 2001 return cmd_rc; 2015 2002 } 2016 2003 2017 - static int ars_status_process_records(struct nvdimm_bus *nvdimm_bus, 2004 + static int ars_status_process_records(struct acpi_nfit_desc *acpi_desc, 2018 2005 struct nd_cmd_ars_status *ars_status) 2019 2006 { 2007 + struct nvdimm_bus *nvdimm_bus = acpi_desc->nvdimm_bus; 2020 2008 int rc; 2021 2009 u32 i; 2022 2010 2011 + /* 2012 + * First record starts at 44 byte offset from the start of the 2013 + * payload. 2014 + */ 2015 + if (ars_status->out_length < 44) 2016 + return 0; 2023 2017 for (i = 0; i < ars_status->num_records; i++) { 2018 + /* only process full records */ 2019 + if (ars_status->out_length 2020 + < 44 + sizeof(struct nd_ars_record) * (i + 1)) 2021 + break; 2024 2022 rc = nvdimm_bus_add_poison(nvdimm_bus, 2025 2023 ars_status->records[i].err_address, 2026 2024 ars_status->records[i].length); 2027 2025 if (rc) 2028 2026 return rc; 2029 2027 } 2028 + if (i < ars_status->num_records) 2029 + dev_warn(acpi_desc->dev, "detected truncated ars results\n"); 2030 2030 2031 2031 return 0; 2032 2032 } ··· 2292 2266 if (rc < 0 && rc != -ENOSPC) 2293 2267 return rc; 2294 2268 2295 - if (ars_status_process_records(acpi_desc->nvdimm_bus, 2296 - acpi_desc->ars_status)) 2269 + if (ars_status_process_records(acpi_desc, acpi_desc->ars_status)) 2297 2270 return -ENOMEM; 2298 2271 2299 2272 return 0;
+2
drivers/acpi/nfit/nfit.h
··· 240 240 int acpi_nfit_init(struct acpi_nfit_desc *acpi_desc, void *nfit, acpi_size sz); 241 241 void __acpi_nfit_notify(struct device *dev, acpi_handle handle, u32 event); 242 242 void __acpi_nvdimm_notify(struct device *dev, u32 event); 243 + int acpi_nfit_ctl(struct nvdimm_bus_descriptor *nd_desc, struct nvdimm *nvdimm, 244 + unsigned int cmd, void *buf, unsigned int buf_len, int *cmd_rc); 243 245 void acpi_nfit_desc_init(struct acpi_nfit_desc *acpi_desc, struct device *dev); 244 246 #endif /* __NFIT_H__ */
+1
drivers/ata/libata-scsi.c
··· 1159 1159 { 1160 1160 sdev->use_10_for_rw = 1; 1161 1161 sdev->use_10_for_ms = 1; 1162 + sdev->no_write_same = 1; 1162 1163 1163 1164 /* Schedule policy is determined by ->qc_defer() callback and 1164 1165 * it needs to see every deferred qc. Set dev_blocked to 1 to
+14 -1
drivers/ata/sata_mv.c
··· 4090 4090 4091 4091 /* allocate host */ 4092 4092 if (pdev->dev.of_node) { 4093 - of_property_read_u32(pdev->dev.of_node, "nr-ports", &n_ports); 4093 + rc = of_property_read_u32(pdev->dev.of_node, "nr-ports", 4094 + &n_ports); 4095 + if (rc) { 4096 + dev_err(&pdev->dev, 4097 + "error parsing nr-ports property: %d\n", rc); 4098 + return rc; 4099 + } 4100 + 4101 + if (n_ports <= 0) { 4102 + dev_err(&pdev->dev, "nr-ports must be positive: %d\n", 4103 + n_ports); 4104 + return -EINVAL; 4105 + } 4106 + 4094 4107 irq = irq_of_parse_and_map(pdev->dev.of_node, 0); 4095 4108 } else { 4096 4109 mv_platform_data = dev_get_platdata(&pdev->dev);
+7 -1
drivers/block/zram/zram_drv.c
··· 1413 1413 return ret ? ret : count; 1414 1414 } 1415 1415 1416 + /* 1417 + * NOTE: hot_add attribute is not the usual read-only sysfs attribute. In a 1418 + * sense that reading from this file does alter the state of your system -- it 1419 + * creates a new un-initialized zram device and returns back this device's 1420 + * device_id (or an error code if it fails to create a new device). 1421 + */ 1416 1422 static struct class_attribute zram_control_class_attrs[] = { 1417 - __ATTR_RO(hot_add), 1423 + __ATTR(hot_add, 0400, hot_add_show, NULL), 1418 1424 __ATTR_WO(hot_remove), 1419 1425 __ATTR_NULL, 1420 1426 };
+3 -2
drivers/crypto/caam/ctrl.c
··· 558 558 * Enable DECO watchdogs and, if this is a PHYS_ADDR_T_64BIT kernel, 559 559 * long pointers in master configuration register 560 560 */ 561 - clrsetbits_32(&ctrl->mcr, MCFGR_AWCACHE_MASK, MCFGR_AWCACHE_CACH | 562 - MCFGR_AWCACHE_BUFF | MCFGR_WDENABLE | MCFGR_LARGE_BURST | 561 + clrsetbits_32(&ctrl->mcr, MCFGR_AWCACHE_MASK | MCFGR_LONG_PTR, 562 + MCFGR_AWCACHE_CACH | MCFGR_AWCACHE_BUFF | 563 + MCFGR_WDENABLE | MCFGR_LARGE_BURST | 563 564 (sizeof(dma_addr_t) == sizeof(u64) ? MCFGR_LONG_PTR : 0)); 564 565 565 566 /*
+5 -6
drivers/crypto/marvell/hash.c
··· 168 168 mv_cesa_adjust_op(engine, &creq->op_tmpl); 169 169 memcpy_toio(engine->sram, &creq->op_tmpl, sizeof(creq->op_tmpl)); 170 170 171 - digsize = crypto_ahash_digestsize(crypto_ahash_reqtfm(req)); 172 - for (i = 0; i < digsize / 4; i++) 173 - writel_relaxed(creq->state[i], engine->regs + CESA_IVDIG(i)); 174 - 175 - mv_cesa_adjust_op(engine, &creq->op_tmpl); 176 - memcpy_toio(engine->sram, &creq->op_tmpl, sizeof(creq->op_tmpl)); 171 + if (!sreq->offset) { 172 + digsize = crypto_ahash_digestsize(crypto_ahash_reqtfm(req)); 173 + for (i = 0; i < digsize / 4; i++) 174 + writel_relaxed(creq->state[i], engine->regs + CESA_IVDIG(i)); 175 + } 177 176 178 177 if (creq->cache_ptr) 179 178 memcpy_toio(engine->sram + CESA_SA_DATA_SRAM_OFFSET,
+1 -1
drivers/dax/dax.c
··· 271 271 return -ENXIO; 272 272 273 273 /* prevent private mappings from being established */ 274 - if ((vma->vm_flags & VM_SHARED) != VM_SHARED) { 274 + if ((vma->vm_flags & VM_MAYSHARE) != VM_MAYSHARE) { 275 275 dev_info(dev, "%s: %s: fail, attempted private mapping\n", 276 276 current->comm, func); 277 277 return -EINVAL;
+1
drivers/gpu/drm/amd/amdgpu/amdgpu.h
··· 2472 2472 struct drm_file *file_priv); 2473 2473 void amdgpu_driver_preclose_kms(struct drm_device *dev, 2474 2474 struct drm_file *file_priv); 2475 + int amdgpu_suspend(struct amdgpu_device *adev); 2475 2476 int amdgpu_device_suspend(struct drm_device *dev, bool suspend, bool fbcon); 2476 2477 int amdgpu_device_resume(struct drm_device *dev, bool resume, bool fbcon); 2477 2478 u32 amdgpu_get_vblank_counter_kms(struct drm_device *dev, unsigned int pipe);
+1 -1
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
··· 1493 1493 return 0; 1494 1494 } 1495 1495 1496 - static int amdgpu_suspend(struct amdgpu_device *adev) 1496 + int amdgpu_suspend(struct amdgpu_device *adev) 1497 1497 { 1498 1498 int i, r; 1499 1499
+4 -1
drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
··· 479 479 static void 480 480 amdgpu_pci_shutdown(struct pci_dev *pdev) 481 481 { 482 + struct drm_device *dev = pci_get_drvdata(pdev); 483 + struct amdgpu_device *adev = dev->dev_private; 484 + 482 485 /* if we are running in a VM, make sure the device 483 486 * torn down properly on reboot/shutdown. 484 487 * unfortunately we can't detect certain 485 488 * hypervisors so just do this all the time. 486 489 */ 487 - amdgpu_pci_remove(pdev); 490 + amdgpu_suspend(adev); 488 491 } 489 492 490 493 static int amdgpu_pmops_suspend(struct device *dev)
+3 -1
drivers/isdn/gigaset/ser-gigaset.c
··· 755 755 driver = gigaset_initdriver(GIGASET_MINOR, GIGASET_MINORS, 756 756 GIGASET_MODULENAME, GIGASET_DEVNAME, 757 757 &ops, THIS_MODULE); 758 - if (!driver) 758 + if (!driver) { 759 + rc = -ENOMEM; 759 760 goto error; 761 + } 760 762 761 763 rc = tty_register_ldisc(N_GIGASET_M101, &gigaset_ldisc); 762 764 if (rc != 0) {
+4 -2
drivers/net/can/usb/peak_usb/pcan_usb_core.c
··· 870 870 static void peak_usb_disconnect(struct usb_interface *intf) 871 871 { 872 872 struct peak_usb_device *dev; 873 + struct peak_usb_device *dev_prev_siblings; 873 874 874 875 /* unregister as many netdev devices as siblings */ 875 - for (dev = usb_get_intfdata(intf); dev; dev = dev->prev_siblings) { 876 + for (dev = usb_get_intfdata(intf); dev; dev = dev_prev_siblings) { 876 877 struct net_device *netdev = dev->netdev; 877 878 char name[IFNAMSIZ]; 878 879 880 + dev_prev_siblings = dev->prev_siblings; 879 881 dev->state &= ~PCAN_USB_STATE_CONNECTED; 880 882 strncpy(name, netdev->name, IFNAMSIZ); 881 883 882 884 unregister_netdev(netdev); 883 - free_candev(netdev); 884 885 885 886 kfree(dev->cmd_buf); 886 887 dev->next_siblings = NULL; 887 888 if (dev->adapter->dev_free) 888 889 dev->adapter->dev_free(dev); 889 890 891 + free_candev(netdev); 890 892 dev_info(&intf->dev, "%s removed\n", name); 891 893 } 892 894
+1
drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
··· 4921 4921 */ 4922 4922 for_each_port(adapter, i) { 4923 4923 pi = adap2pinfo(adapter, i); 4924 + adapter->port[i]->dev_port = pi->lport; 4924 4925 netif_set_real_num_tx_queues(adapter->port[i], pi->nqsets); 4925 4926 netif_set_real_num_rx_queues(adapter->port[i], pi->nqsets); 4926 4927
-1
drivers/net/ethernet/chelsio/cxgb4/t4_hw.c
··· 7851 7851 return ret; 7852 7852 7853 7853 memcpy(adap->port[i]->dev_addr, addr, ETH_ALEN); 7854 - adap->port[i]->dev_port = j; 7855 7854 j++; 7856 7855 } 7857 7856 return 0;
+1
drivers/net/ethernet/chelsio/cxgb4vf/cxgb4vf_main.c
··· 2960 2960 2961 2961 netdev->netdev_ops = &cxgb4vf_netdev_ops; 2962 2962 netdev->ethtool_ops = &cxgb4vf_ethtool_ops; 2963 + netdev->dev_port = pi->port_id; 2963 2964 2964 2965 /* 2965 2966 * Initialize the hardware/software state for the port.
+63 -2
drivers/net/ethernet/ibm/ibmveth.c
··· 58 58 59 59 static const char ibmveth_driver_name[] = "ibmveth"; 60 60 static const char ibmveth_driver_string[] = "IBM Power Virtual Ethernet Driver"; 61 - #define ibmveth_driver_version "1.05" 61 + #define ibmveth_driver_version "1.06" 62 62 63 63 MODULE_AUTHOR("Santiago Leon <santil@linux.vnet.ibm.com>"); 64 64 MODULE_DESCRIPTION("IBM Power Virtual Ethernet Driver"); ··· 135 135 static inline int ibmveth_rxq_frame_offset(struct ibmveth_adapter *adapter) 136 136 { 137 137 return ibmveth_rxq_flags(adapter) & IBMVETH_RXQ_OFF_MASK; 138 + } 139 + 140 + static inline int ibmveth_rxq_large_packet(struct ibmveth_adapter *adapter) 141 + { 142 + return ibmveth_rxq_flags(adapter) & IBMVETH_RXQ_LRG_PKT; 138 143 } 139 144 140 145 static inline int ibmveth_rxq_frame_length(struct ibmveth_adapter *adapter) ··· 1179 1174 goto retry_bounce; 1180 1175 } 1181 1176 1177 + static void ibmveth_rx_mss_helper(struct sk_buff *skb, u16 mss, int lrg_pkt) 1178 + { 1179 + int offset = 0; 1180 + 1181 + /* only TCP packets will be aggregated */ 1182 + if (skb->protocol == htons(ETH_P_IP)) { 1183 + struct iphdr *iph = (struct iphdr *)skb->data; 1184 + 1185 + if (iph->protocol == IPPROTO_TCP) { 1186 + offset = iph->ihl * 4; 1187 + skb_shinfo(skb)->gso_type = SKB_GSO_TCPV4; 1188 + } else { 1189 + return; 1190 + } 1191 + } else if (skb->protocol == htons(ETH_P_IPV6)) { 1192 + struct ipv6hdr *iph6 = (struct ipv6hdr *)skb->data; 1193 + 1194 + if (iph6->nexthdr == IPPROTO_TCP) { 1195 + offset = sizeof(struct ipv6hdr); 1196 + skb_shinfo(skb)->gso_type = SKB_GSO_TCPV6; 1197 + } else { 1198 + return; 1199 + } 1200 + } else { 1201 + return; 1202 + } 1203 + /* if mss is not set through Large Packet bit/mss in rx buffer, 1204 + * expect that the mss will be written to the tcp header checksum. 1205 + */ 1206 + if (lrg_pkt) { 1207 + skb_shinfo(skb)->gso_size = mss; 1208 + } else if (offset) { 1209 + struct tcphdr *tcph = (struct tcphdr *)(skb->data + offset); 1210 + 1211 + skb_shinfo(skb)->gso_size = ntohs(tcph->check); 1212 + tcph->check = 0; 1213 + } 1214 + } 1215 + 1182 1216 static int ibmveth_poll(struct napi_struct *napi, int budget) 1183 1217 { 1184 1218 struct ibmveth_adapter *adapter = ··· 1226 1182 int frames_processed = 0; 1227 1183 unsigned long lpar_rc; 1228 1184 struct iphdr *iph; 1185 + u16 mss = 0; 1229 1186 1230 1187 restart_poll: 1231 1188 while (frames_processed < budget) { ··· 1244 1199 int length = ibmveth_rxq_frame_length(adapter); 1245 1200 int offset = ibmveth_rxq_frame_offset(adapter); 1246 1201 int csum_good = ibmveth_rxq_csum_good(adapter); 1202 + int lrg_pkt = ibmveth_rxq_large_packet(adapter); 1247 1203 1248 1204 skb = ibmveth_rxq_get_buffer(adapter); 1205 + 1206 + /* if the large packet bit is set in the rx queue 1207 + * descriptor, the mss will be written by PHYP eight 1208 + * bytes from the start of the rx buffer, which is 1209 + * skb->data at this stage 1210 + */ 1211 + if (lrg_pkt) { 1212 + __be64 *rxmss = (__be64 *)(skb->data + 8); 1213 + 1214 + mss = (u16)be64_to_cpu(*rxmss); 1215 + } 1249 1216 1250 1217 new_skb = NULL; 1251 1218 if (length < rx_copybreak) ··· 1292 1235 if (iph->check == 0xffff) { 1293 1236 iph->check = 0; 1294 1237 iph->check = ip_fast_csum((unsigned char *)iph, iph->ihl); 1295 - adapter->rx_large_packets++; 1296 1238 } 1297 1239 } 1240 + } 1241 + 1242 + if (length > netdev->mtu + ETH_HLEN) { 1243 + ibmveth_rx_mss_helper(skb, mss, lrg_pkt); 1244 + adapter->rx_large_packets++; 1298 1245 } 1299 1246 1300 1247 napi_gro_receive(napi, skb); /* send it up */
+1
drivers/net/ethernet/ibm/ibmveth.h
··· 209 209 #define IBMVETH_RXQ_TOGGLE 0x80000000 210 210 #define IBMVETH_RXQ_TOGGLE_SHIFT 31 211 211 #define IBMVETH_RXQ_VALID 0x40000000 212 + #define IBMVETH_RXQ_LRG_PKT 0x04000000 212 213 #define IBMVETH_RXQ_NO_CSUM 0x02000000 213 214 #define IBMVETH_RXQ_CSUM_GOOD 0x01000000 214 215 #define IBMVETH_RXQ_OFF_MASK 0x0000FFFF
+1
drivers/net/ethernet/lantiq_etop.c
··· 696 696 priv->pldata = dev_get_platdata(&pdev->dev); 697 697 priv->netdev = dev; 698 698 spin_lock_init(&priv->lock); 699 + SET_NETDEV_DEV(dev, &pdev->dev); 699 700 700 701 for (i = 0; i < MAX_DMA_CHAN; i++) { 701 702 if (IS_TX(i))
-2
drivers/net/ethernet/mellanox/mlx5/core/Kconfig
··· 18 18 default n 19 19 ---help--- 20 20 Ethernet support in Mellanox Technologies ConnectX-4 NIC. 21 - Ethernet and Infiniband support in ConnectX-4 are currently mutually 22 - exclusive. 23 21 24 22 config MLX5_CORE_EN_DCB 25 23 bool "Data Center Bridging (DCB) Support"
+8 -1
drivers/net/ethernet/smsc/smsc911x.c
··· 438 438 ret = regulator_bulk_get(&pdev->dev, 439 439 ARRAY_SIZE(pdata->supplies), 440 440 pdata->supplies); 441 - if (ret) 441 + if (ret) { 442 + /* 443 + * Retry on deferrals, else just report the error 444 + * and try to continue. 445 + */ 446 + if (ret == -EPROBE_DEFER) 447 + return ret; 442 448 netdev_err(ndev, "couldn't get regulators %d\n", 443 449 ret); 450 + } 444 451 445 452 /* Request optional RESET GPIO */ 446 453 pdata->reset_gpiod = devm_gpiod_get_optional(&pdev->dev,
+1
drivers/net/ethernet/ti/cpmac.c
··· 1112 1112 if (!dev) 1113 1113 return -ENOMEM; 1114 1114 1115 + SET_NETDEV_DEV(dev, &pdev->dev); 1115 1116 platform_set_drvdata(pdev, dev); 1116 1117 priv = netdev_priv(dev); 1117 1118
+1
drivers/net/ethernet/ti/cpsw-phy-sel.c
··· 81 81 }; 82 82 83 83 mask = GMII_SEL_MODE_MASK << (slave * 2) | BIT(slave + 6); 84 + mask |= BIT(slave + 4); 84 85 mode <<= slave * 2; 85 86 86 87 if (priv->rmii_clock_external) {
+5
drivers/net/hyperv/netvsc_drv.c
··· 47 47 NETIF_F_TSO | \ 48 48 NETIF_F_TSO6 | \ 49 49 NETIF_F_HW_CSUM) 50 + 51 + /* Restrict GSO size to account for NVGRE */ 52 + #define NETVSC_GSO_MAX_SIZE 62768 53 + 50 54 static int ring_size = 128; 51 55 module_param(ring_size, int, S_IRUGO); 52 56 MODULE_PARM_DESC(ring_size, "Ring buffer size (# of pages)"); ··· 1397 1393 nvdev = net_device_ctx->nvdev; 1398 1394 netif_set_real_num_tx_queues(net, nvdev->num_chn); 1399 1395 netif_set_real_num_rx_queues(net, nvdev->num_chn); 1396 + netif_set_gso_max_size(net, NETVSC_GSO_MAX_SIZE); 1400 1397 1401 1398 /* MTU range: 68 - 1500 or 65521 */ 1402 1399 net->min_mtu = NETVSC_MTU_MIN;
+3 -1
drivers/net/ipvlan/ipvlan_main.c
··· 546 546 } 547 547 err = ipvlan_set_port_mode(port, mode); 548 548 if (err) { 549 - goto unregister_netdev; 549 + goto unlink_netdev; 550 550 } 551 551 552 552 list_add_tail_rcu(&ipvlan->pnode, &port->ipvlans); 553 553 netif_stacked_transfer_operstate(phy_dev, dev); 554 554 return 0; 555 555 556 + unlink_netdev: 557 + netdev_upper_dev_unlink(phy_dev, dev); 556 558 unregister_netdev: 557 559 unregister_netdevice(dev); 558 560 destroy_ipvlan_port:
+13 -3
drivers/net/phy/phy_device.c
··· 905 905 int phy_attach_direct(struct net_device *dev, struct phy_device *phydev, 906 906 u32 flags, phy_interface_t interface) 907 907 { 908 + struct module *ndev_owner = dev->dev.parent->driver->owner; 908 909 struct mii_bus *bus = phydev->mdio.bus; 909 910 struct device *d = &phydev->mdio.dev; 910 911 int err; 911 912 912 - if (!try_module_get(bus->owner)) { 913 + /* For Ethernet device drivers that register their own MDIO bus, we 914 + * will have bus->owner match ndev_mod, so we do not want to increment 915 + * our own module->refcnt here, otherwise we would not be able to 916 + * unload later on. 917 + */ 918 + if (ndev_owner != bus->owner && !try_module_get(bus->owner)) { 913 919 dev_err(&dev->dev, "failed to get the bus module\n"); 914 920 return -EIO; 915 921 } ··· 977 971 error: 978 972 phy_detach(phydev); 979 973 put_device(d); 980 - module_put(bus->owner); 974 + if (ndev_owner != bus->owner) 975 + module_put(bus->owner); 981 976 return err; 982 977 } 983 978 EXPORT_SYMBOL(phy_attach_direct); ··· 1028 1021 */ 1029 1022 void phy_detach(struct phy_device *phydev) 1030 1023 { 1024 + struct net_device *dev = phydev->attached_dev; 1025 + struct module *ndev_owner = dev->dev.parent->driver->owner; 1031 1026 struct mii_bus *bus; 1032 1027 int i; 1033 1028 ··· 1059 1050 bus = phydev->mdio.bus; 1060 1051 1061 1052 put_device(&phydev->mdio.dev); 1062 - module_put(bus->owner); 1053 + if (ndev_owner != bus->owner) 1054 + module_put(bus->owner); 1063 1055 } 1064 1056 EXPORT_SYMBOL(phy_detach); 1065 1057
+21
drivers/net/usb/cdc_mbim.c
··· 602 602 .data = CDC_NCM_FLAG_NDP_TO_END, 603 603 }; 604 604 605 + /* Some modems (e.g. Telit LE922A6) do not work properly with altsetting 606 + * toggle done in cdc_ncm_bind_common. CDC_MBIM_FLAG_AVOID_ALTSETTING_TOGGLE 607 + * flag is used to avoid this procedure. 608 + */ 609 + static const struct driver_info cdc_mbim_info_avoid_altsetting_toggle = { 610 + .description = "CDC MBIM", 611 + .flags = FLAG_NO_SETINT | FLAG_MULTI_PACKET | FLAG_WWAN, 612 + .bind = cdc_mbim_bind, 613 + .unbind = cdc_mbim_unbind, 614 + .manage_power = cdc_mbim_manage_power, 615 + .rx_fixup = cdc_mbim_rx_fixup, 616 + .tx_fixup = cdc_mbim_tx_fixup, 617 + .data = CDC_MBIM_FLAG_AVOID_ALTSETTING_TOGGLE, 618 + }; 619 + 605 620 static const struct usb_device_id mbim_devs[] = { 606 621 /* This duplicate NCM entry is intentional. MBIM devices can 607 622 * be disguised as NCM by default, and this is necessary to ··· 641 626 { USB_VENDOR_AND_INTERFACE_INFO(0x12d1, USB_CLASS_COMM, USB_CDC_SUBCLASS_MBIM, USB_CDC_PROTO_NONE), 642 627 .driver_info = (unsigned long)&cdc_mbim_info_ndp_to_end, 643 628 }, 629 + 630 + /* Telit LE922A6 in MBIM composition */ 631 + { USB_DEVICE_AND_INTERFACE_INFO(0x1bc7, 0x1041, USB_CLASS_COMM, USB_CDC_SUBCLASS_MBIM, USB_CDC_PROTO_NONE), 632 + .driver_info = (unsigned long)&cdc_mbim_info_avoid_altsetting_toggle, 633 + }, 634 + 644 635 /* default entry */ 645 636 { USB_INTERFACE_INFO(USB_CLASS_COMM, USB_CDC_SUBCLASS_MBIM, USB_CDC_PROTO_NONE), 646 637 .driver_info = (unsigned long)&cdc_mbim_info_zlp,
+9 -5
drivers/net/usb/cdc_ncm.c
··· 835 835 836 836 iface_no = ctx->data->cur_altsetting->desc.bInterfaceNumber; 837 837 838 + /* Device-specific flags */ 839 + ctx->drvflags = drvflags; 840 + 838 841 /* Reset data interface. Some devices will not reset properly 839 842 * unless they are configured first. Toggle the altsetting to 840 - * force a reset 843 + * force a reset. 844 + * Some other devices do not work properly with this procedure 845 + * that can be avoided using quirk CDC_MBIM_FLAG_AVOID_ALTSETTING_TOGGLE 841 846 */ 842 - usb_set_interface(dev->udev, iface_no, data_altsetting); 847 + if (!(ctx->drvflags & CDC_MBIM_FLAG_AVOID_ALTSETTING_TOGGLE)) 848 + usb_set_interface(dev->udev, iface_no, data_altsetting); 849 + 843 850 temp = usb_set_interface(dev->udev, iface_no, 0); 844 851 if (temp) { 845 852 dev_dbg(&intf->dev, "set interface failed\n"); ··· 892 885 893 886 /* finish setting up the device specific data */ 894 887 cdc_ncm_setup(dev); 895 - 896 - /* Device-specific flags */ 897 - ctx->drvflags = drvflags; 898 888 899 889 /* Allocate the delayed NDP if needed. */ 900 890 if (ctx->drvflags & CDC_NCM_FLAG_NDP_TO_END) {
+20 -5
drivers/nvdimm/bus.c
··· 715 715 716 716 u32 nd_cmd_out_size(struct nvdimm *nvdimm, int cmd, 717 717 const struct nd_cmd_desc *desc, int idx, const u32 *in_field, 718 - const u32 *out_field) 718 + const u32 *out_field, unsigned long remainder) 719 719 { 720 720 if (idx >= desc->out_num) 721 721 return UINT_MAX; ··· 727 727 return in_field[1]; 728 728 else if (nvdimm && cmd == ND_CMD_VENDOR && idx == 2) 729 729 return out_field[1]; 730 - else if (!nvdimm && cmd == ND_CMD_ARS_STATUS && idx == 2) 731 - return out_field[1] - 8; 732 - else if (cmd == ND_CMD_CALL) { 730 + else if (!nvdimm && cmd == ND_CMD_ARS_STATUS && idx == 2) { 731 + /* 732 + * Per table 9-276 ARS Data in ACPI 6.1, out_field[1] is 733 + * "Size of Output Buffer in bytes, including this 734 + * field." 735 + */ 736 + if (out_field[1] < 4) 737 + return 0; 738 + /* 739 + * ACPI 6.1 is ambiguous if 'status' is included in the 740 + * output size. If we encounter an output size that 741 + * overshoots the remainder by 4 bytes, assume it was 742 + * including 'status'. 743 + */ 744 + if (out_field[1] - 8 == remainder) 745 + return remainder; 746 + return out_field[1] - 4; 747 + } else if (cmd == ND_CMD_CALL) { 733 748 struct nd_cmd_pkg *pkg = (struct nd_cmd_pkg *) in_field; 734 749 735 750 return pkg->nd_size_out; ··· 891 876 /* process an output envelope */ 892 877 for (i = 0; i < desc->out_num; i++) { 893 878 u32 out_size = nd_cmd_out_size(nvdimm, cmd, desc, i, 894 - (u32 *) in_env, (u32 *) out_env); 879 + (u32 *) in_env, (u32 *) out_env, 0); 895 880 u32 copy; 896 881 897 882 if (out_size == UINT_MAX) {
+8 -6
drivers/scsi/lpfc/lpfc_sli.c
··· 1323 1323 { 1324 1324 lockdep_assert_held(&phba->hbalock); 1325 1325 1326 - BUG_ON(!piocb || !piocb->vport); 1326 + BUG_ON(!piocb); 1327 1327 1328 1328 list_add_tail(&piocb->list, &pring->txcmplq); 1329 1329 piocb->iocb_flag |= LPFC_IO_ON_TXCMPLQ; 1330 1330 1331 1331 if ((unlikely(pring->ringno == LPFC_ELS_RING)) && 1332 1332 (piocb->iocb.ulpCommand != CMD_ABORT_XRI_CN) && 1333 - (piocb->iocb.ulpCommand != CMD_CLOSE_XRI_CN) && 1334 - (!(piocb->vport->load_flag & FC_UNLOADING))) 1335 - mod_timer(&piocb->vport->els_tmofunc, 1336 - jiffies + 1337 - msecs_to_jiffies(1000 * (phba->fc_ratov << 1))); 1333 + (piocb->iocb.ulpCommand != CMD_CLOSE_XRI_CN)) { 1334 + BUG_ON(!piocb->vport); 1335 + if (!(piocb->vport->load_flag & FC_UNLOADING)) 1336 + mod_timer(&piocb->vport->els_tmofunc, 1337 + jiffies + 1338 + msecs_to_jiffies(1000 * (phba->fc_ratov << 1))); 1339 + } 1338 1340 1339 1341 return 0; 1340 1342 }
+1 -1
drivers/vhost/vsock.c
··· 503 503 * executing. 504 504 */ 505 505 506 - if (!vhost_vsock_get(vsk->local_addr.svm_cid)) { 506 + if (!vhost_vsock_get(vsk->remote_addr.svm_cid)) { 507 507 sock_set_flag(sk, SOCK_DONE); 508 508 vsk->peer_shutdown = SHUTDOWN_MASK; 509 509 sk->sk_state = SS_UNCONNECTED;
+14 -10
fs/ceph/dir.c
··· 1261 1261 return -ECHILD; 1262 1262 1263 1263 op = ceph_snap(dir) == CEPH_SNAPDIR ? 1264 - CEPH_MDS_OP_LOOKUPSNAP : CEPH_MDS_OP_LOOKUP; 1264 + CEPH_MDS_OP_LOOKUPSNAP : CEPH_MDS_OP_GETATTR; 1265 1265 req = ceph_mdsc_create_request(mdsc, op, USE_ANY_MDS); 1266 1266 if (!IS_ERR(req)) { 1267 1267 req->r_dentry = dget(dentry); 1268 - req->r_num_caps = 2; 1268 + req->r_num_caps = op == CEPH_MDS_OP_GETATTR ? 1 : 2; 1269 1269 1270 1270 mask = CEPH_STAT_CAP_INODE | CEPH_CAP_AUTH_SHARED; 1271 1271 if (ceph_security_xattr_wanted(dir)) 1272 1272 mask |= CEPH_CAP_XATTR_SHARED; 1273 1273 req->r_args.getattr.mask = mask; 1274 1274 1275 - req->r_locked_dir = dir; 1276 1275 err = ceph_mdsc_do_request(mdsc, NULL, req); 1277 - if (err == 0 || err == -ENOENT) { 1278 - if (dentry == req->r_dentry) { 1279 - valid = !d_unhashed(dentry); 1280 - } else { 1281 - d_invalidate(req->r_dentry); 1282 - err = -EAGAIN; 1283 - } 1276 + switch (err) { 1277 + case 0: 1278 + if (d_really_is_positive(dentry) && 1279 + d_inode(dentry) == req->r_target_inode) 1280 + valid = 1; 1281 + break; 1282 + case -ENOENT: 1283 + if (d_really_is_negative(dentry)) 1284 + valid = 1; 1285 + /* Fallthrough */ 1286 + default: 1287 + break; 1284 1288 } 1285 1289 ceph_mdsc_put_request(req); 1286 1290 dout("d_revalidate %p lookup result=%d\n",
+2 -5
fs/fuse/dir.c
··· 1739 1739 * This should be done on write(), truncate() and chown(). 1740 1740 */ 1741 1741 if (!fc->handle_killpriv) { 1742 - int kill; 1743 - 1744 1742 /* 1745 1743 * ia_mode calculation may have used stale i_mode. 1746 1744 * Refresh and recalculate. ··· 1748 1750 return ret; 1749 1751 1750 1752 attr->ia_mode = inode->i_mode; 1751 - kill = should_remove_suid(entry); 1752 - if (kill & ATTR_KILL_SUID) { 1753 + if (inode->i_mode & S_ISUID) { 1753 1754 attr->ia_valid |= ATTR_MODE; 1754 1755 attr->ia_mode &= ~S_ISUID; 1755 1756 } 1756 - if (kill & ATTR_KILL_SGID) { 1757 + if ((inode->i_mode & (S_ISGID | S_IXGRP)) == (S_ISGID | S_IXGRP)) { 1757 1758 attr->ia_valid |= ATTR_MODE; 1758 1759 attr->ia_mode &= ~S_ISGID; 1759 1760 }
-1
include/asm-generic/export.h
··· 54 54 KSYM(__kcrctab_\name): 55 55 __put KSYM(__crc_\name) 56 56 .weak KSYM(__crc_\name) 57 - .set KSYM(__crc_\name), 0 58 57 .previous 59 58 #endif 60 59 #endif
+1 -1
include/linux/libnvdimm.h
··· 143 143 const struct nd_cmd_desc *desc, int idx, void *buf); 144 144 u32 nd_cmd_out_size(struct nvdimm *nvdimm, int cmd, 145 145 const struct nd_cmd_desc *desc, int idx, const u32 *in_field, 146 - const u32 *out_field); 146 + const u32 *out_field, unsigned long remainder); 147 147 int nvdimm_bus_check_dimm_count(struct nvdimm_bus *nvdimm_bus, int dimm_count); 148 148 struct nd_region *nvdimm_pmem_region_create(struct nvdimm_bus *nvdimm_bus, 149 149 struct nd_region_desc *ndr_desc);
+2 -1
include/linux/usb/cdc_ncm.h
··· 81 81 #define CDC_NCM_TIMER_INTERVAL_MAX (U32_MAX / NSEC_PER_USEC) 82 82 83 83 /* Driver flags */ 84 - #define CDC_NCM_FLAG_NDP_TO_END 0x02 /* NDP is placed at end of frame */ 84 + #define CDC_NCM_FLAG_NDP_TO_END 0x02 /* NDP is placed at end of frame */ 85 + #define CDC_MBIM_FLAG_AVOID_ALTSETTING_TOGGLE 0x04 /* Avoid altsetting toggle during init */ 85 86 86 87 #define cdc_ncm_comm_intf_is_mbim(x) ((x)->desc.bInterfaceSubClass == USB_CDC_SUBCLASS_MBIM && \ 87 88 (x)->desc.bInterfaceProtocol == USB_CDC_PROTO_NONE)
+1
include/uapi/linux/can.h
··· 196 196 }; 197 197 198 198 #define CAN_INV_FILTER 0x20000000U /* to be set in can_filter.can_id */ 199 + #define CAN_RAW_FILTER_MAX 512 /* maximum number of can_filter set via setsockopt() */ 199 200 200 201 #endif /* !_UAPI_CAN_H */
+8 -11
kernel/events/core.c
··· 903 903 */ 904 904 cpuctx = __get_cpu_context(ctx); 905 905 906 - /* Only set/clear cpuctx->cgrp if current task uses event->cgrp. */ 907 - if (perf_cgroup_from_task(current, ctx) != event->cgrp) { 908 - /* 909 - * We are removing the last cpu event in this context. 910 - * If that event is not active in this cpu, cpuctx->cgrp 911 - * should've been cleared by perf_cgroup_switch. 912 - */ 913 - WARN_ON_ONCE(!add && cpuctx->cgrp); 914 - return; 915 - } 916 - cpuctx->cgrp = add ? event->cgrp : NULL; 906 + /* 907 + * cpuctx->cgrp is NULL until a cgroup event is sched in or 908 + * ctx->nr_cgroup == 0 . 909 + */ 910 + if (add && perf_cgroup_from_task(current, ctx) == event->cgrp) 911 + cpuctx->cgrp = event->cgrp; 912 + else if (!add) 913 + cpuctx->cgrp = NULL; 917 914 } 918 915 919 916 #else /* !CONFIG_CGROUP_PERF */
+1
kernel/kcov.c
··· 7 7 #include <linux/fs.h> 8 8 #include <linux/mm.h> 9 9 #include <linux/printk.h> 10 + #include <linux/sched.h> 10 11 #include <linux/slab.h> 11 12 #include <linux/spinlock.h> 12 13 #include <linux/vmalloc.h>
+57 -54
kernel/locking/lockdep.c
··· 506 506 name = class->name; 507 507 if (!name) { 508 508 name = __get_key_name(class->key, str); 509 - printk("%s", name); 509 + printk(KERN_CONT "%s", name); 510 510 } else { 511 - printk("%s", name); 511 + printk(KERN_CONT "%s", name); 512 512 if (class->name_version > 1) 513 - printk("#%d", class->name_version); 513 + printk(KERN_CONT "#%d", class->name_version); 514 514 if (class->subclass) 515 - printk("/%d", class->subclass); 515 + printk(KERN_CONT "/%d", class->subclass); 516 516 } 517 517 } 518 518 ··· 522 522 523 523 get_usage_chars(class, usage); 524 524 525 - printk(" ("); 525 + printk(KERN_CONT " ("); 526 526 __print_lock_name(class); 527 - printk("){%s}", usage); 527 + printk(KERN_CONT "){%s}", usage); 528 528 } 529 529 530 530 static void print_lockdep_cache(struct lockdep_map *lock) ··· 536 536 if (!name) 537 537 name = __get_key_name(lock->key->subkeys, str); 538 538 539 - printk("%s", name); 539 + printk(KERN_CONT "%s", name); 540 540 } 541 541 542 542 static void print_lock(struct held_lock *hlock) ··· 551 551 barrier(); 552 552 553 553 if (!class_idx || (class_idx - 1) >= MAX_LOCKDEP_KEYS) { 554 - printk("<RELEASED>\n"); 554 + printk(KERN_CONT "<RELEASED>\n"); 555 555 return; 556 556 } 557 557 558 558 print_lock_name(lock_classes + class_idx - 1); 559 - printk(", at: "); 560 - print_ip_sym(hlock->acquire_ip); 559 + printk(KERN_CONT ", at: [<%p>] %pS\n", 560 + (void *)hlock->acquire_ip, (void *)hlock->acquire_ip); 561 561 } 562 562 563 563 static void lockdep_print_held_locks(struct task_struct *curr) ··· 792 792 793 793 printk("\nnew class %p: %s", class->key, class->name); 794 794 if (class->name_version > 1) 795 - printk("#%d", class->name_version); 796 - printk("\n"); 795 + printk(KERN_CONT "#%d", class->name_version); 796 + printk(KERN_CONT "\n"); 797 797 dump_stack(); 798 798 799 799 if (!graph_lock()) { ··· 1071 1071 return 0; 1072 1072 printk("\n-> #%u", depth); 1073 1073 print_lock_name(target->class); 1074 - printk(":\n"); 1074 + printk(KERN_CONT ":\n"); 1075 1075 print_stack_trace(&target->trace, 6); 1076 1076 1077 1077 return 0; ··· 1102 1102 if (parent != source) { 1103 1103 printk("Chain exists of:\n "); 1104 1104 __print_lock_name(source); 1105 - printk(" --> "); 1105 + printk(KERN_CONT " --> "); 1106 1106 __print_lock_name(parent); 1107 - printk(" --> "); 1107 + printk(KERN_CONT " --> "); 1108 1108 __print_lock_name(target); 1109 - printk("\n\n"); 1109 + printk(KERN_CONT "\n\n"); 1110 1110 } 1111 1111 1112 1112 printk(" Possible unsafe locking scenario:\n\n"); ··· 1114 1114 printk(" ---- ----\n"); 1115 1115 printk(" lock("); 1116 1116 __print_lock_name(target); 1117 - printk(");\n"); 1117 + printk(KERN_CONT ");\n"); 1118 1118 printk(" lock("); 1119 1119 __print_lock_name(parent); 1120 - printk(");\n"); 1120 + printk(KERN_CONT ");\n"); 1121 1121 printk(" lock("); 1122 1122 __print_lock_name(target); 1123 - printk(");\n"); 1123 + printk(KERN_CONT ");\n"); 1124 1124 printk(" lock("); 1125 1125 __print_lock_name(source); 1126 - printk(");\n"); 1126 + printk(KERN_CONT ");\n"); 1127 1127 printk("\n *** DEADLOCK ***\n\n"); 1128 1128 } 1129 1129 ··· 1359 1359 1360 1360 printk("%*s->", depth, ""); 1361 1361 print_lock_name(class); 1362 - printk(" ops: %lu", class->ops); 1363 - printk(" {\n"); 1362 + printk(KERN_CONT " ops: %lu", class->ops); 1363 + printk(KERN_CONT " {\n"); 1364 1364 1365 1365 for (bit = 0; bit < LOCK_USAGE_STATES; bit++) { 1366 1366 if (class->usage_mask & (1 << bit)) { 1367 1367 int len = depth; 1368 1368 1369 1369 len += printk("%*s %s", depth, "", usage_str[bit]); 1370 - len += printk(" at:\n"); 1370 + len += printk(KERN_CONT " at:\n"); 1371 1371 print_stack_trace(class->usage_traces + bit, len); 1372 1372 } 1373 1373 } 1374 1374 printk("%*s }\n", depth, ""); 1375 1375 1376 - printk("%*s ... key at: ",depth,""); 1377 - print_ip_sym((unsigned long)class->key); 1376 + printk("%*s ... key at: [<%p>] %pS\n", 1377 + depth, "", class->key, class->key); 1378 1378 } 1379 1379 1380 1380 /* ··· 1437 1437 if (middle_class != unsafe_class) { 1438 1438 printk("Chain exists of:\n "); 1439 1439 __print_lock_name(safe_class); 1440 - printk(" --> "); 1440 + printk(KERN_CONT " --> "); 1441 1441 __print_lock_name(middle_class); 1442 - printk(" --> "); 1442 + printk(KERN_CONT " --> "); 1443 1443 __print_lock_name(unsafe_class); 1444 - printk("\n\n"); 1444 + printk(KERN_CONT "\n\n"); 1445 1445 } 1446 1446 1447 1447 printk(" Possible interrupt unsafe locking scenario:\n\n"); ··· 1449 1449 printk(" ---- ----\n"); 1450 1450 printk(" lock("); 1451 1451 __print_lock_name(unsafe_class); 1452 - printk(");\n"); 1452 + printk(KERN_CONT ");\n"); 1453 1453 printk(" local_irq_disable();\n"); 1454 1454 printk(" lock("); 1455 1455 __print_lock_name(safe_class); 1456 - printk(");\n"); 1456 + printk(KERN_CONT ");\n"); 1457 1457 printk(" lock("); 1458 1458 __print_lock_name(middle_class); 1459 - printk(");\n"); 1459 + printk(KERN_CONT ");\n"); 1460 1460 printk(" <Interrupt>\n"); 1461 1461 printk(" lock("); 1462 1462 __print_lock_name(safe_class); 1463 - printk(");\n"); 1463 + printk(KERN_CONT ");\n"); 1464 1464 printk("\n *** DEADLOCK ***\n\n"); 1465 1465 } 1466 1466 ··· 1497 1497 print_lock(prev); 1498 1498 printk("which would create a new lock dependency:\n"); 1499 1499 print_lock_name(hlock_class(prev)); 1500 - printk(" ->"); 1500 + printk(KERN_CONT " ->"); 1501 1501 print_lock_name(hlock_class(next)); 1502 - printk("\n"); 1502 + printk(KERN_CONT "\n"); 1503 1503 1504 1504 printk("\nbut this new dependency connects a %s-irq-safe lock:\n", 1505 1505 irqclass); ··· 1521 1521 1522 1522 lockdep_print_held_locks(curr); 1523 1523 1524 - printk("\nthe dependencies between %s-irq-safe lock", irqclass); 1525 - printk(" and the holding lock:\n"); 1524 + printk("\nthe dependencies between %s-irq-safe lock and the holding lock:\n", irqclass); 1526 1525 if (!save_trace(&prev_root->trace)) 1527 1526 return 0; 1528 1527 print_shortest_lock_dependencies(backwards_entry, prev_root); ··· 1693 1694 printk(" ----\n"); 1694 1695 printk(" lock("); 1695 1696 __print_lock_name(prev); 1696 - printk(");\n"); 1697 + printk(KERN_CONT ");\n"); 1697 1698 printk(" lock("); 1698 1699 __print_lock_name(next); 1699 - printk(");\n"); 1700 + printk(KERN_CONT ");\n"); 1700 1701 printk("\n *** DEADLOCK ***\n\n"); 1701 1702 printk(" May be due to missing lock nesting notation\n\n"); 1702 1703 } ··· 1890 1891 graph_unlock(); 1891 1892 printk("\n new dependency: "); 1892 1893 print_lock_name(hlock_class(prev)); 1893 - printk(" => "); 1894 + printk(KERN_CONT " => "); 1894 1895 print_lock_name(hlock_class(next)); 1895 - printk("\n"); 1896 + printk(KERN_CONT "\n"); 1896 1897 dump_stack(); 1897 1898 return graph_lock(); 1898 1899 } ··· 2342 2343 printk(" ----\n"); 2343 2344 printk(" lock("); 2344 2345 __print_lock_name(class); 2345 - printk(");\n"); 2346 + printk(KERN_CONT ");\n"); 2346 2347 printk(" <Interrupt>\n"); 2347 2348 printk(" lock("); 2348 2349 __print_lock_name(class); 2349 - printk(");\n"); 2350 + printk(KERN_CONT ");\n"); 2350 2351 printk("\n *** DEADLOCK ***\n\n"); 2351 2352 } 2352 2353 ··· 2521 2522 void print_irqtrace_events(struct task_struct *curr) 2522 2523 { 2523 2524 printk("irq event stamp: %u\n", curr->irq_events); 2524 - printk("hardirqs last enabled at (%u): ", curr->hardirq_enable_event); 2525 - print_ip_sym(curr->hardirq_enable_ip); 2526 - printk("hardirqs last disabled at (%u): ", curr->hardirq_disable_event); 2527 - print_ip_sym(curr->hardirq_disable_ip); 2528 - printk("softirqs last enabled at (%u): ", curr->softirq_enable_event); 2529 - print_ip_sym(curr->softirq_enable_ip); 2530 - printk("softirqs last disabled at (%u): ", curr->softirq_disable_event); 2531 - print_ip_sym(curr->softirq_disable_ip); 2525 + printk("hardirqs last enabled at (%u): [<%p>] %pS\n", 2526 + curr->hardirq_enable_event, (void *)curr->hardirq_enable_ip, 2527 + (void *)curr->hardirq_enable_ip); 2528 + printk("hardirqs last disabled at (%u): [<%p>] %pS\n", 2529 + curr->hardirq_disable_event, (void *)curr->hardirq_disable_ip, 2530 + (void *)curr->hardirq_disable_ip); 2531 + printk("softirqs last enabled at (%u): [<%p>] %pS\n", 2532 + curr->softirq_enable_event, (void *)curr->softirq_enable_ip, 2533 + (void *)curr->softirq_enable_ip); 2534 + printk("softirqs last disabled at (%u): [<%p>] %pS\n", 2535 + curr->softirq_disable_event, (void *)curr->softirq_disable_ip, 2536 + (void *)curr->softirq_disable_ip); 2532 2537 } 2533 2538 2534 2539 static int HARDIRQ_verbose(struct lock_class *class) ··· 3238 3235 if (very_verbose(class)) { 3239 3236 printk("\nacquire class [%p] %s", class->key, class->name); 3240 3237 if (class->name_version > 1) 3241 - printk("#%d", class->name_version); 3242 - printk("\n"); 3238 + printk(KERN_CONT "#%d", class->name_version); 3239 + printk(KERN_CONT "\n"); 3243 3240 dump_stack(); 3244 3241 } 3245 3242 ··· 3381 3378 printk("%s/%d is trying to release lock (", 3382 3379 curr->comm, task_pid_nr(curr)); 3383 3380 print_lockdep_cache(lock); 3384 - printk(") at:\n"); 3381 + printk(KERN_CONT ") at:\n"); 3385 3382 print_ip_sym(ip); 3386 3383 printk("but there are no more locks to release!\n"); 3387 3384 printk("\nother info that might help us debug this:\n"); ··· 3874 3871 printk("%s/%d is trying to contend lock (", 3875 3872 curr->comm, task_pid_nr(curr)); 3876 3873 print_lockdep_cache(lock); 3877 - printk(") at:\n"); 3874 + printk(KERN_CONT ") at:\n"); 3878 3875 print_ip_sym(ip); 3879 3876 printk("but there are no locks held!\n"); 3880 3877 printk("\nother info that might help us debug this:\n");
+66 -2
kernel/locking/rtmutex.c
··· 65 65 66 66 static void fixup_rt_mutex_waiters(struct rt_mutex *lock) 67 67 { 68 - if (!rt_mutex_has_waiters(lock)) 69 - clear_rt_mutex_waiters(lock); 68 + unsigned long owner, *p = (unsigned long *) &lock->owner; 69 + 70 + if (rt_mutex_has_waiters(lock)) 71 + return; 72 + 73 + /* 74 + * The rbtree has no waiters enqueued, now make sure that the 75 + * lock->owner still has the waiters bit set, otherwise the 76 + * following can happen: 77 + * 78 + * CPU 0 CPU 1 CPU2 79 + * l->owner=T1 80 + * rt_mutex_lock(l) 81 + * lock(l->lock) 82 + * l->owner = T1 | HAS_WAITERS; 83 + * enqueue(T2) 84 + * boost() 85 + * unlock(l->lock) 86 + * block() 87 + * 88 + * rt_mutex_lock(l) 89 + * lock(l->lock) 90 + * l->owner = T1 | HAS_WAITERS; 91 + * enqueue(T3) 92 + * boost() 93 + * unlock(l->lock) 94 + * block() 95 + * signal(->T2) signal(->T3) 96 + * lock(l->lock) 97 + * dequeue(T2) 98 + * deboost() 99 + * unlock(l->lock) 100 + * lock(l->lock) 101 + * dequeue(T3) 102 + * ==> wait list is empty 103 + * deboost() 104 + * unlock(l->lock) 105 + * lock(l->lock) 106 + * fixup_rt_mutex_waiters() 107 + * if (wait_list_empty(l) { 108 + * l->owner = owner 109 + * owner = l->owner & ~HAS_WAITERS; 110 + * ==> l->owner = T1 111 + * } 112 + * lock(l->lock) 113 + * rt_mutex_unlock(l) fixup_rt_mutex_waiters() 114 + * if (wait_list_empty(l) { 115 + * owner = l->owner & ~HAS_WAITERS; 116 + * cmpxchg(l->owner, T1, NULL) 117 + * ===> Success (l->owner = NULL) 118 + * 119 + * l->owner = owner 120 + * ==> l->owner = T1 121 + * } 122 + * 123 + * With the check for the waiter bit in place T3 on CPU2 will not 124 + * overwrite. All tasks fiddling with the waiters bit are 125 + * serialized by l->lock, so nothing else can modify the waiters 126 + * bit. If the bit is set then nothing can change l->owner either 127 + * so the simple RMW is safe. The cmpxchg() will simply fail if it 128 + * happens in the middle of the RMW because the waiters bit is 129 + * still set. 130 + */ 131 + owner = READ_ONCE(*p); 132 + if (owner & RT_MUTEX_HAS_WAITERS) 133 + WRITE_ONCE(*p, owner & ~RT_MUTEX_HAS_WAITERS); 70 134 } 71 135 72 136 /*
+3 -2
kernel/locking/rtmutex_common.h
··· 75 75 76 76 static inline struct task_struct *rt_mutex_owner(struct rt_mutex *lock) 77 77 { 78 - return (struct task_struct *) 79 - ((unsigned long)lock->owner & ~RT_MUTEX_OWNER_MASKALL); 78 + unsigned long owner = (unsigned long) READ_ONCE(lock->owner); 79 + 80 + return (struct task_struct *) (owner & ~RT_MUTEX_OWNER_MASKALL); 80 81 } 81 82 82 83 /*
+3 -1
kernel/sched/auto_group.c
··· 212 212 { 213 213 static unsigned long next = INITIAL_JIFFIES; 214 214 struct autogroup *ag; 215 + unsigned long shares; 215 216 int err; 216 217 217 218 if (nice < MIN_NICE || nice > MAX_NICE) ··· 231 230 232 231 next = HZ / 10 + jiffies; 233 232 ag = autogroup_task_get(p); 233 + shares = scale_load(sched_prio_to_weight[nice + 20]); 234 234 235 235 down_write(&ag->lock); 236 - err = sched_group_set_shares(ag->tg, sched_prio_to_weight[nice + 20]); 236 + err = sched_group_set_shares(ag->tg, shares); 237 237 if (!err) 238 238 ag->nice = nice; 239 239 up_write(&ag->lock);
+33 -33
lib/locking-selftest.c
··· 980 980 #ifndef CONFIG_PROVE_LOCKING 981 981 if (expected == FAILURE && debug_locks) { 982 982 expected_testcase_failures++; 983 - printk("failed|"); 983 + pr_cont("failed|"); 984 984 } 985 985 else 986 986 #endif 987 987 if (debug_locks != expected) { 988 988 unexpected_testcase_failures++; 989 - printk("FAILED|"); 989 + pr_cont("FAILED|"); 990 990 991 991 dump_stack(); 992 992 } else { 993 993 testcase_successes++; 994 - printk(" ok |"); 994 + pr_cont(" ok |"); 995 995 } 996 996 testcase_total++; 997 997 998 998 if (debug_locks_verbose) 999 - printk(" lockclass mask: %x, debug_locks: %d, expected: %d\n", 999 + pr_cont(" lockclass mask: %x, debug_locks: %d, expected: %d\n", 1000 1000 lockclass_mask, debug_locks, expected); 1001 1001 /* 1002 1002 * Some tests (e.g. double-unlock) might corrupt the preemption ··· 1021 1021 #define DO_TESTCASE_1(desc, name, nr) \ 1022 1022 print_testname(desc"/"#nr); \ 1023 1023 dotest(name##_##nr, SUCCESS, LOCKTYPE_RWLOCK); \ 1024 - printk("\n"); 1024 + pr_cont("\n"); 1025 1025 1026 1026 #define DO_TESTCASE_1B(desc, name, nr) \ 1027 1027 print_testname(desc"/"#nr); \ 1028 1028 dotest(name##_##nr, FAILURE, LOCKTYPE_RWLOCK); \ 1029 - printk("\n"); 1029 + pr_cont("\n"); 1030 1030 1031 1031 #define DO_TESTCASE_3(desc, name, nr) \ 1032 1032 print_testname(desc"/"#nr); \ 1033 1033 dotest(name##_spin_##nr, FAILURE, LOCKTYPE_SPIN); \ 1034 1034 dotest(name##_wlock_##nr, FAILURE, LOCKTYPE_RWLOCK); \ 1035 1035 dotest(name##_rlock_##nr, SUCCESS, LOCKTYPE_RWLOCK); \ 1036 - printk("\n"); 1036 + pr_cont("\n"); 1037 1037 1038 1038 #define DO_TESTCASE_3RW(desc, name, nr) \ 1039 1039 print_testname(desc"/"#nr); \ 1040 1040 dotest(name##_spin_##nr, FAILURE, LOCKTYPE_SPIN|LOCKTYPE_RWLOCK);\ 1041 1041 dotest(name##_wlock_##nr, FAILURE, LOCKTYPE_RWLOCK); \ 1042 1042 dotest(name##_rlock_##nr, SUCCESS, LOCKTYPE_RWLOCK); \ 1043 - printk("\n"); 1043 + pr_cont("\n"); 1044 1044 1045 1045 #define DO_TESTCASE_6(desc, name) \ 1046 1046 print_testname(desc); \ ··· 1050 1050 dotest(name##_mutex, FAILURE, LOCKTYPE_MUTEX); \ 1051 1051 dotest(name##_wsem, FAILURE, LOCKTYPE_RWSEM); \ 1052 1052 dotest(name##_rsem, FAILURE, LOCKTYPE_RWSEM); \ 1053 - printk("\n"); 1053 + pr_cont("\n"); 1054 1054 1055 1055 #define DO_TESTCASE_6_SUCCESS(desc, name) \ 1056 1056 print_testname(desc); \ ··· 1060 1060 dotest(name##_mutex, SUCCESS, LOCKTYPE_MUTEX); \ 1061 1061 dotest(name##_wsem, SUCCESS, LOCKTYPE_RWSEM); \ 1062 1062 dotest(name##_rsem, SUCCESS, LOCKTYPE_RWSEM); \ 1063 - printk("\n"); 1063 + pr_cont("\n"); 1064 1064 1065 1065 /* 1066 1066 * 'read' variant: rlocks must not trigger. ··· 1073 1073 dotest(name##_mutex, FAILURE, LOCKTYPE_MUTEX); \ 1074 1074 dotest(name##_wsem, FAILURE, LOCKTYPE_RWSEM); \ 1075 1075 dotest(name##_rsem, FAILURE, LOCKTYPE_RWSEM); \ 1076 - printk("\n"); 1076 + pr_cont("\n"); 1077 1077 1078 1078 #define DO_TESTCASE_2I(desc, name, nr) \ 1079 1079 DO_TESTCASE_1("hard-"desc, name##_hard, nr); \ ··· 1726 1726 dotest(ww_test_fail_acquire, SUCCESS, LOCKTYPE_WW); 1727 1727 dotest(ww_test_normal, SUCCESS, LOCKTYPE_WW); 1728 1728 dotest(ww_test_unneeded_slow, FAILURE, LOCKTYPE_WW); 1729 - printk("\n"); 1729 + pr_cont("\n"); 1730 1730 1731 1731 print_testname("ww contexts mixing"); 1732 1732 dotest(ww_test_two_contexts, FAILURE, LOCKTYPE_WW); 1733 1733 dotest(ww_test_diff_class, FAILURE, LOCKTYPE_WW); 1734 - printk("\n"); 1734 + pr_cont("\n"); 1735 1735 1736 1736 print_testname("finishing ww context"); 1737 1737 dotest(ww_test_context_done_twice, FAILURE, LOCKTYPE_WW); 1738 1738 dotest(ww_test_context_unlock_twice, FAILURE, LOCKTYPE_WW); 1739 1739 dotest(ww_test_context_fini_early, FAILURE, LOCKTYPE_WW); 1740 1740 dotest(ww_test_context_lock_after_done, FAILURE, LOCKTYPE_WW); 1741 - printk("\n"); 1741 + pr_cont("\n"); 1742 1742 1743 1743 print_testname("locking mismatches"); 1744 1744 dotest(ww_test_object_unlock_twice, FAILURE, LOCKTYPE_WW); 1745 1745 dotest(ww_test_object_lock_unbalanced, FAILURE, LOCKTYPE_WW); 1746 1746 dotest(ww_test_object_lock_stale_context, FAILURE, LOCKTYPE_WW); 1747 - printk("\n"); 1747 + pr_cont("\n"); 1748 1748 1749 1749 print_testname("EDEADLK handling"); 1750 1750 dotest(ww_test_edeadlk_normal, SUCCESS, LOCKTYPE_WW); ··· 1757 1757 dotest(ww_test_edeadlk_acquire_more_edeadlk_slow, FAILURE, LOCKTYPE_WW); 1758 1758 dotest(ww_test_edeadlk_acquire_wrong, FAILURE, LOCKTYPE_WW); 1759 1759 dotest(ww_test_edeadlk_acquire_wrong_slow, FAILURE, LOCKTYPE_WW); 1760 - printk("\n"); 1760 + pr_cont("\n"); 1761 1761 1762 1762 print_testname("spinlock nest unlocked"); 1763 1763 dotest(ww_test_spin_nest_unlocked, FAILURE, LOCKTYPE_WW); 1764 - printk("\n"); 1764 + pr_cont("\n"); 1765 1765 1766 1766 printk(" -----------------------------------------------------\n"); 1767 1767 printk(" |block | try |context|\n"); ··· 1771 1771 dotest(ww_test_context_block, FAILURE, LOCKTYPE_WW); 1772 1772 dotest(ww_test_context_try, SUCCESS, LOCKTYPE_WW); 1773 1773 dotest(ww_test_context_context, SUCCESS, LOCKTYPE_WW); 1774 - printk("\n"); 1774 + pr_cont("\n"); 1775 1775 1776 1776 print_testname("try"); 1777 1777 dotest(ww_test_try_block, FAILURE, LOCKTYPE_WW); 1778 1778 dotest(ww_test_try_try, SUCCESS, LOCKTYPE_WW); 1779 1779 dotest(ww_test_try_context, FAILURE, LOCKTYPE_WW); 1780 - printk("\n"); 1780 + pr_cont("\n"); 1781 1781 1782 1782 print_testname("block"); 1783 1783 dotest(ww_test_block_block, FAILURE, LOCKTYPE_WW); 1784 1784 dotest(ww_test_block_try, SUCCESS, LOCKTYPE_WW); 1785 1785 dotest(ww_test_block_context, FAILURE, LOCKTYPE_WW); 1786 - printk("\n"); 1786 + pr_cont("\n"); 1787 1787 1788 1788 print_testname("spinlock"); 1789 1789 dotest(ww_test_spin_block, FAILURE, LOCKTYPE_WW); 1790 1790 dotest(ww_test_spin_try, SUCCESS, LOCKTYPE_WW); 1791 1791 dotest(ww_test_spin_context, FAILURE, LOCKTYPE_WW); 1792 - printk("\n"); 1792 + pr_cont("\n"); 1793 1793 } 1794 1794 1795 1795 void locking_selftest(void) ··· 1829 1829 1830 1830 printk(" --------------------------------------------------------------------------\n"); 1831 1831 print_testname("recursive read-lock"); 1832 - printk(" |"); 1832 + pr_cont(" |"); 1833 1833 dotest(rlock_AA1, SUCCESS, LOCKTYPE_RWLOCK); 1834 - printk(" |"); 1834 + pr_cont(" |"); 1835 1835 dotest(rsem_AA1, FAILURE, LOCKTYPE_RWSEM); 1836 - printk("\n"); 1836 + pr_cont("\n"); 1837 1837 1838 1838 print_testname("recursive read-lock #2"); 1839 - printk(" |"); 1839 + pr_cont(" |"); 1840 1840 dotest(rlock_AA1B, SUCCESS, LOCKTYPE_RWLOCK); 1841 - printk(" |"); 1841 + pr_cont(" |"); 1842 1842 dotest(rsem_AA1B, FAILURE, LOCKTYPE_RWSEM); 1843 - printk("\n"); 1843 + pr_cont("\n"); 1844 1844 1845 1845 print_testname("mixed read-write-lock"); 1846 - printk(" |"); 1846 + pr_cont(" |"); 1847 1847 dotest(rlock_AA2, FAILURE, LOCKTYPE_RWLOCK); 1848 - printk(" |"); 1848 + pr_cont(" |"); 1849 1849 dotest(rsem_AA2, FAILURE, LOCKTYPE_RWSEM); 1850 - printk("\n"); 1850 + pr_cont("\n"); 1851 1851 1852 1852 print_testname("mixed write-read-lock"); 1853 - printk(" |"); 1853 + pr_cont(" |"); 1854 1854 dotest(rlock_AA3, FAILURE, LOCKTYPE_RWLOCK); 1855 - printk(" |"); 1855 + pr_cont(" |"); 1856 1856 dotest(rsem_AA3, FAILURE, LOCKTYPE_RWSEM); 1857 - printk("\n"); 1857 + pr_cont("\n"); 1858 1858 1859 1859 printk(" --------------------------------------------------------------------------\n"); 1860 1860
+3
net/can/raw.c
··· 499 499 if (optlen % sizeof(struct can_filter) != 0) 500 500 return -EINVAL; 501 501 502 + if (optlen > CAN_RAW_FILTER_MAX * sizeof(struct can_filter)) 503 + return -EINVAL; 504 + 502 505 count = optlen / sizeof(struct can_filter); 503 506 504 507 if (count > 1) {
+1 -1
tools/objtool/arch/x86/decode.c
··· 99 99 break; 100 100 101 101 case 0x8d: 102 - if (insn.rex_prefix.bytes && 102 + if (insn.rex_prefix.nbytes && 103 103 insn.rex_prefix.bytes[0] == 0x48 && 104 104 insn.modrm.nbytes && insn.modrm.bytes[0] == 0x2c && 105 105 insn.sib.nbytes && insn.sib.bytes[0] == 0x24)
+1
tools/testing/nvdimm/Kbuild
··· 14 14 ldflags-y += --wrap=insert_resource 15 15 ldflags-y += --wrap=remove_resource 16 16 ldflags-y += --wrap=acpi_evaluate_object 17 + ldflags-y += --wrap=acpi_evaluate_dsm 17 18 18 19 DRIVERS := ../../../drivers 19 20 NVDIMM_SRC := $(DRIVERS)/nvdimm
+22 -1
tools/testing/nvdimm/test/iomap.c
··· 26 26 27 27 static struct iomap_ops { 28 28 nfit_test_lookup_fn nfit_test_lookup; 29 + nfit_test_evaluate_dsm_fn evaluate_dsm; 29 30 struct list_head list; 30 31 } iomap_ops = { 31 32 .list = LIST_HEAD_INIT(iomap_ops.list), 32 33 }; 33 34 34 - void nfit_test_setup(nfit_test_lookup_fn lookup) 35 + void nfit_test_setup(nfit_test_lookup_fn lookup, 36 + nfit_test_evaluate_dsm_fn evaluate) 35 37 { 36 38 iomap_ops.nfit_test_lookup = lookup; 39 + iomap_ops.evaluate_dsm = evaluate; 37 40 list_add_rcu(&iomap_ops.list, &iomap_head); 38 41 } 39 42 EXPORT_SYMBOL(nfit_test_setup); ··· 369 366 return AE_OK; 370 367 } 371 368 EXPORT_SYMBOL(__wrap_acpi_evaluate_object); 369 + 370 + union acpi_object * __wrap_acpi_evaluate_dsm(acpi_handle handle, const u8 *uuid, 371 + u64 rev, u64 func, union acpi_object *argv4) 372 + { 373 + union acpi_object *obj = ERR_PTR(-ENXIO); 374 + struct iomap_ops *ops; 375 + 376 + rcu_read_lock(); 377 + ops = list_first_or_null_rcu(&iomap_head, typeof(*ops), list); 378 + if (ops) 379 + obj = ops->evaluate_dsm(handle, uuid, rev, func, argv4); 380 + rcu_read_unlock(); 381 + 382 + if (IS_ERR(obj)) 383 + return acpi_evaluate_dsm(handle, uuid, rev, func, argv4); 384 + return obj; 385 + } 386 + EXPORT_SYMBOL(__wrap_acpi_evaluate_dsm); 372 387 373 388 MODULE_LICENSE("GPL v2");
+232 -4
tools/testing/nvdimm/test/nfit.c
··· 23 23 #include <linux/sizes.h> 24 24 #include <linux/list.h> 25 25 #include <linux/slab.h> 26 + #include <nd-core.h> 26 27 #include <nfit.h> 27 28 #include <nd.h> 28 29 #include "nfit_test.h" ··· 1507 1506 return 0; 1508 1507 } 1509 1508 1509 + static unsigned long nfit_ctl_handle; 1510 + 1511 + union acpi_object *result; 1512 + 1513 + static union acpi_object *nfit_test_evaluate_dsm(acpi_handle handle, 1514 + const u8 *uuid, u64 rev, u64 func, union acpi_object *argv4) 1515 + { 1516 + if (handle != &nfit_ctl_handle) 1517 + return ERR_PTR(-ENXIO); 1518 + 1519 + return result; 1520 + } 1521 + 1522 + static int setup_result(void *buf, size_t size) 1523 + { 1524 + result = kmalloc(sizeof(union acpi_object) + size, GFP_KERNEL); 1525 + if (!result) 1526 + return -ENOMEM; 1527 + result->package.type = ACPI_TYPE_BUFFER, 1528 + result->buffer.pointer = (void *) (result + 1); 1529 + result->buffer.length = size; 1530 + memcpy(result->buffer.pointer, buf, size); 1531 + memset(buf, 0, size); 1532 + return 0; 1533 + } 1534 + 1535 + static int nfit_ctl_test(struct device *dev) 1536 + { 1537 + int rc, cmd_rc; 1538 + struct nvdimm *nvdimm; 1539 + struct acpi_device *adev; 1540 + struct nfit_mem *nfit_mem; 1541 + struct nd_ars_record *record; 1542 + struct acpi_nfit_desc *acpi_desc; 1543 + const u64 test_val = 0x0123456789abcdefULL; 1544 + unsigned long mask, cmd_size, offset; 1545 + union { 1546 + struct nd_cmd_get_config_size cfg_size; 1547 + struct nd_cmd_ars_status ars_stat; 1548 + struct nd_cmd_ars_cap ars_cap; 1549 + char buf[sizeof(struct nd_cmd_ars_status) 1550 + + sizeof(struct nd_ars_record)]; 1551 + } cmds; 1552 + 1553 + adev = devm_kzalloc(dev, sizeof(*adev), GFP_KERNEL); 1554 + if (!adev) 1555 + return -ENOMEM; 1556 + *adev = (struct acpi_device) { 1557 + .handle = &nfit_ctl_handle, 1558 + .dev = { 1559 + .init_name = "test-adev", 1560 + }, 1561 + }; 1562 + 1563 + acpi_desc = devm_kzalloc(dev, sizeof(*acpi_desc), GFP_KERNEL); 1564 + if (!acpi_desc) 1565 + return -ENOMEM; 1566 + *acpi_desc = (struct acpi_nfit_desc) { 1567 + .nd_desc = { 1568 + .cmd_mask = 1UL << ND_CMD_ARS_CAP 1569 + | 1UL << ND_CMD_ARS_START 1570 + | 1UL << ND_CMD_ARS_STATUS 1571 + | 1UL << ND_CMD_CLEAR_ERROR, 1572 + .module = THIS_MODULE, 1573 + .provider_name = "ACPI.NFIT", 1574 + .ndctl = acpi_nfit_ctl, 1575 + }, 1576 + .dev = &adev->dev, 1577 + }; 1578 + 1579 + nfit_mem = devm_kzalloc(dev, sizeof(*nfit_mem), GFP_KERNEL); 1580 + if (!nfit_mem) 1581 + return -ENOMEM; 1582 + 1583 + mask = 1UL << ND_CMD_SMART | 1UL << ND_CMD_SMART_THRESHOLD 1584 + | 1UL << ND_CMD_DIMM_FLAGS | 1UL << ND_CMD_GET_CONFIG_SIZE 1585 + | 1UL << ND_CMD_GET_CONFIG_DATA | 1UL << ND_CMD_SET_CONFIG_DATA 1586 + | 1UL << ND_CMD_VENDOR; 1587 + *nfit_mem = (struct nfit_mem) { 1588 + .adev = adev, 1589 + .family = NVDIMM_FAMILY_INTEL, 1590 + .dsm_mask = mask, 1591 + }; 1592 + 1593 + nvdimm = devm_kzalloc(dev, sizeof(*nvdimm), GFP_KERNEL); 1594 + if (!nvdimm) 1595 + return -ENOMEM; 1596 + *nvdimm = (struct nvdimm) { 1597 + .provider_data = nfit_mem, 1598 + .cmd_mask = mask, 1599 + .dev = { 1600 + .init_name = "test-dimm", 1601 + }, 1602 + }; 1603 + 1604 + 1605 + /* basic checkout of a typical 'get config size' command */ 1606 + cmd_size = sizeof(cmds.cfg_size); 1607 + cmds.cfg_size = (struct nd_cmd_get_config_size) { 1608 + .status = 0, 1609 + .config_size = SZ_128K, 1610 + .max_xfer = SZ_4K, 1611 + }; 1612 + rc = setup_result(cmds.buf, cmd_size); 1613 + if (rc) 1614 + return rc; 1615 + rc = acpi_nfit_ctl(&acpi_desc->nd_desc, nvdimm, ND_CMD_GET_CONFIG_SIZE, 1616 + cmds.buf, cmd_size, &cmd_rc); 1617 + 1618 + if (rc < 0 || cmd_rc || cmds.cfg_size.status != 0 1619 + || cmds.cfg_size.config_size != SZ_128K 1620 + || cmds.cfg_size.max_xfer != SZ_4K) { 1621 + dev_dbg(dev, "%s: failed at: %d rc: %d cmd_rc: %d\n", 1622 + __func__, __LINE__, rc, cmd_rc); 1623 + return -EIO; 1624 + } 1625 + 1626 + 1627 + /* test ars_status with zero output */ 1628 + cmd_size = offsetof(struct nd_cmd_ars_status, address); 1629 + cmds.ars_stat = (struct nd_cmd_ars_status) { 1630 + .out_length = 0, 1631 + }; 1632 + rc = setup_result(cmds.buf, cmd_size); 1633 + if (rc) 1634 + return rc; 1635 + rc = acpi_nfit_ctl(&acpi_desc->nd_desc, NULL, ND_CMD_ARS_STATUS, 1636 + cmds.buf, cmd_size, &cmd_rc); 1637 + 1638 + if (rc < 0 || cmd_rc) { 1639 + dev_dbg(dev, "%s: failed at: %d rc: %d cmd_rc: %d\n", 1640 + __func__, __LINE__, rc, cmd_rc); 1641 + return -EIO; 1642 + } 1643 + 1644 + 1645 + /* test ars_cap with benign extended status */ 1646 + cmd_size = sizeof(cmds.ars_cap); 1647 + cmds.ars_cap = (struct nd_cmd_ars_cap) { 1648 + .status = ND_ARS_PERSISTENT << 16, 1649 + }; 1650 + offset = offsetof(struct nd_cmd_ars_cap, status); 1651 + rc = setup_result(cmds.buf + offset, cmd_size - offset); 1652 + if (rc) 1653 + return rc; 1654 + rc = acpi_nfit_ctl(&acpi_desc->nd_desc, NULL, ND_CMD_ARS_CAP, 1655 + cmds.buf, cmd_size, &cmd_rc); 1656 + 1657 + if (rc < 0 || cmd_rc) { 1658 + dev_dbg(dev, "%s: failed at: %d rc: %d cmd_rc: %d\n", 1659 + __func__, __LINE__, rc, cmd_rc); 1660 + return -EIO; 1661 + } 1662 + 1663 + 1664 + /* test ars_status with 'status' trimmed from 'out_length' */ 1665 + cmd_size = sizeof(cmds.ars_stat) + sizeof(struct nd_ars_record); 1666 + cmds.ars_stat = (struct nd_cmd_ars_status) { 1667 + .out_length = cmd_size - 4, 1668 + }; 1669 + record = &cmds.ars_stat.records[0]; 1670 + *record = (struct nd_ars_record) { 1671 + .length = test_val, 1672 + }; 1673 + rc = setup_result(cmds.buf, cmd_size); 1674 + if (rc) 1675 + return rc; 1676 + rc = acpi_nfit_ctl(&acpi_desc->nd_desc, NULL, ND_CMD_ARS_STATUS, 1677 + cmds.buf, cmd_size, &cmd_rc); 1678 + 1679 + if (rc < 0 || cmd_rc || record->length != test_val) { 1680 + dev_dbg(dev, "%s: failed at: %d rc: %d cmd_rc: %d\n", 1681 + __func__, __LINE__, rc, cmd_rc); 1682 + return -EIO; 1683 + } 1684 + 1685 + 1686 + /* test ars_status with 'Output (Size)' including 'status' */ 1687 + cmd_size = sizeof(cmds.ars_stat) + sizeof(struct nd_ars_record); 1688 + cmds.ars_stat = (struct nd_cmd_ars_status) { 1689 + .out_length = cmd_size, 1690 + }; 1691 + record = &cmds.ars_stat.records[0]; 1692 + *record = (struct nd_ars_record) { 1693 + .length = test_val, 1694 + }; 1695 + rc = setup_result(cmds.buf, cmd_size); 1696 + if (rc) 1697 + return rc; 1698 + rc = acpi_nfit_ctl(&acpi_desc->nd_desc, NULL, ND_CMD_ARS_STATUS, 1699 + cmds.buf, cmd_size, &cmd_rc); 1700 + 1701 + if (rc < 0 || cmd_rc || record->length != test_val) { 1702 + dev_dbg(dev, "%s: failed at: %d rc: %d cmd_rc: %d\n", 1703 + __func__, __LINE__, rc, cmd_rc); 1704 + return -EIO; 1705 + } 1706 + 1707 + 1708 + /* test extended status for get_config_size results in failure */ 1709 + cmd_size = sizeof(cmds.cfg_size); 1710 + cmds.cfg_size = (struct nd_cmd_get_config_size) { 1711 + .status = 1 << 16, 1712 + }; 1713 + rc = setup_result(cmds.buf, cmd_size); 1714 + if (rc) 1715 + return rc; 1716 + rc = acpi_nfit_ctl(&acpi_desc->nd_desc, nvdimm, ND_CMD_GET_CONFIG_SIZE, 1717 + cmds.buf, cmd_size, &cmd_rc); 1718 + 1719 + if (rc < 0 || cmd_rc >= 0) { 1720 + dev_dbg(dev, "%s: failed at: %d rc: %d cmd_rc: %d\n", 1721 + __func__, __LINE__, rc, cmd_rc); 1722 + return -EIO; 1723 + } 1724 + 1725 + return 0; 1726 + } 1727 + 1510 1728 static int nfit_test_probe(struct platform_device *pdev) 1511 1729 { 1512 1730 struct nvdimm_bus_descriptor *nd_desc; ··· 1735 1515 struct nfit_mem *nfit_mem; 1736 1516 union acpi_object *obj; 1737 1517 int rc; 1518 + 1519 + if (strcmp(dev_name(&pdev->dev), "nfit_test.0") == 0) { 1520 + rc = nfit_ctl_test(&pdev->dev); 1521 + if (rc) 1522 + return rc; 1523 + } 1738 1524 1739 1525 nfit_test = to_nfit_test(&pdev->dev); 1740 1526 ··· 1865 1639 { 1866 1640 int rc, i; 1867 1641 1868 - nfit_test_dimm = class_create(THIS_MODULE, "nfit_test_dimm"); 1869 - if (IS_ERR(nfit_test_dimm)) 1870 - return PTR_ERR(nfit_test_dimm); 1642 + nfit_test_setup(nfit_test_lookup, nfit_test_evaluate_dsm); 1871 1643 1872 - nfit_test_setup(nfit_test_lookup); 1644 + nfit_test_dimm = class_create(THIS_MODULE, "nfit_test_dimm"); 1645 + if (IS_ERR(nfit_test_dimm)) { 1646 + rc = PTR_ERR(nfit_test_dimm); 1647 + goto err_register; 1648 + } 1873 1649 1874 1650 for (i = 0; i < NUM_NFITS; i++) { 1875 1651 struct nfit_test *nfit_test;
+7 -1
tools/testing/nvdimm/test/nfit_test.h
··· 31 31 void *buf; 32 32 }; 33 33 34 + union acpi_object; 35 + typedef void *acpi_handle; 36 + 34 37 typedef struct nfit_test_resource *(*nfit_test_lookup_fn)(resource_size_t); 38 + typedef union acpi_object *(*nfit_test_evaluate_dsm_fn)(acpi_handle handle, 39 + const u8 *uuid, u64 rev, u64 func, union acpi_object *argv4); 35 40 void __iomem *__wrap_ioremap_nocache(resource_size_t offset, 36 41 unsigned long size); 37 42 void __wrap_iounmap(volatile void __iomem *addr); 38 - void nfit_test_setup(nfit_test_lookup_fn lookup); 43 + void nfit_test_setup(nfit_test_lookup_fn lookup, 44 + nfit_test_evaluate_dsm_fn evaluate); 39 45 void nfit_test_teardown(void); 40 46 struct nfit_test_resource *get_nfit_res(resource_size_t resource); 41 47 #endif