* Linux 4.10-rc1 @ 2016-12-26 0:41 Linus Torvalds 2016-12-26 8:38 ` Hanjun Guo 2016-12-26 12:17 ` linux-next: stats (Was: Linux 4.10-rc1) Stephen Rothwell 0 siblings, 2 replies; 10+ messages in thread From: Linus Torvalds @ 2016-12-26 0:41 UTC (permalink / raw) To: Linux Kernel Mailing List It's Christmas Day, and it's two weeks since the merge window opened. Thus, the merge window is now closed. I did a few final pulls today, but I also rejected a couple of pulls that came in late in the window and looked dodgy. You know who you are. On the whole, this wasn't all that big a release - nothing like 4.9. Although it wasn't tiny either. I think 4.7 was smaller. 4.8 might have been too. It's xmas day, and right now I can't be arsed to actually do the statistics I'd normally do. Everything looks pretty normal, although we had an unusual amount of tree-wide final cleanups in the last days of the merge window. But the general statistics look fairly common: a bit over half is drivers, maybe slightly less arch updates than normal, and a fair amount of documentation updates due to the sphinx conversion. And then the usual misc noise all over, although the perf tooling updates do stand out. The shortlog is much too big, as it always is during the merge window, so as usual you just get the merge-log. Linus --- Al Viro (3): vfs updates more vfs updates final vfs updates Alex Williamson (1): VFIO updates Alexandre Belloni (1): RTC updates Andrew Morton (3): updates more updates final set of updates Arnd Bergmann (7): ARM SoC non-urgent fixes ARM SoC platform updates ARM SoC defconfig updates ARM SoC 64-bit updates ARM DT updates ARM 64-bit DT updates ARM SoC driver updates Bart Van Assche (1): scsi target cleanups Bjorn Andersson (2): remoteproc updates rpmsg updates Bjorn Helgaas (1): PCI updates Borislav Petkov (1): EDAC updates Brian Norris (1): MTD updates Bruce Fields (1): nfsd updates Catalin Marinas (1): arm64 updates Chris Mason (1): btrfs updates Chris Metcalf (1): arch/tile updates Christoph Hellwig (1): configfs update Corey Minyard (1): IPMI updates Dan Williams (1): libnvdimm updates Darren Hart (1): more x86 platform driver updates Darrent Hart (1): x86 platform driver updates Dave Airlie (2): drm updates drm fixes Dave Chinner (1): xfs updates David Kleikamp (1): jfs update David Miller (5): networking updates sparc updates networking fixes and cleanups networking fixes and cleanups networking fixes David Teigland (1): dlm fixes Dmitry Torokhov (1): input subsystem updates Doug Ledford (2): rdma updates rdma fixes Eric Biederman (1): namespace updates Geert Uytterhoeven (1): m68k updates Greg KH (5): USB/PHY updates tty/serial updates staging/IIO updates driver core updates char/misc driver updates Greg Ungerer (1): m68knommu updates Guenter Roeck (1): hwmon updates Hans-Christian Noren Egtvedt (1): AVR32 updates Helge Deller (1): parisc updates Herbert Xu (2): crypto updates crypto fixes Ilya Dryomov (1): ceph updates Ingo Molnar (24): RCU updates SMP bootup updates EFI updates locking updates mm/PAT cleanup perf updates scheduler updates hotplug API fix x86 RAS updates x86 apic updates x86 asm updates x86 boot updates x86 build updates x86 cleanups x86 CPU updates x86 FPU updates x86 header fixlet x86 idle updates x86 microcode update x86 platform updates irq fix perf fixes timer fix x86 fixes Jacek Anaszewski (2): LED updates LED maintainer email update Jaegeuk Kim (1): f2fs updates James Bottomley (2): SCSI updates late SCSI updates James Morris (2): security subsystem updates SElinux fix Jan Kara (1): quota, fsnotify and ext2 updates Jassi Brar (1): mailbox updates Jean Delvare (1): dmi fix Jens Axboe (4): block layer updates fs meta data unmap optimization block IO fixes block layer fixes Jesper Nilsson (1): CRIS updates Jessica Yu (1): modules updates Jiri Kosina (3): HID updates livepatch update trivial updates Joerg Roedel (1): IOMMU updates Jon Mason (1): NTB update Jonathan Corbet (3): documentation update more documentation updates documentation fix Juergen Gross (1): xen updates Kees Cook (2): pstore updates gcc plugins updates Konrad Rzeszutek Wilk (1): swiotlb updates Lee Jones (1): MFD updates Len Brown (1): turbostat updates Ley Foon Tan (1): arch/nios2 updates Linus Walleij (1): pinctrl updates Luinus Walleij (1): GPIO updates Luis de Bethencourt (1): befs updates Mark Brown (3): regmap fixlet regulator updates spi updates Martin Schwidefsky (2): s390 updates more s390 updates Mauro Carvalho Chehab (2): edac updates media updates Max Filippov (1): Xtensa updates Michael Ellerman (1): powerpc updates Michael Tsirkin (1): virtio updates Michal Marek (3): kbuild updates kconfig updates kbuild misc updates Michal Simek (1): arch/microblaze updates Mike Marshall (1): orangefs updates Mike Snitzer (1): device mapper updates Miklos Szeredi (2): overlayfs updates partial readlink cleanups Paolo Bonzini (2): KVM updates KVM fixes Paul Moore (1): audit updates Rafael Wysocki (5): power management updates ACPI updates two ACPI CPPC fixes power management fixes more ACPI updates Richard Weinberger (2): ubifs updates UML update Rob Herring (1): DeviceTree updates Russell King (1): ARM updates Sebastian Reichel (1): power supply and reset updates Shaohua Li (1): MD updates Shuah Khan (1): kselftest updates Stafford Horne (1): Openrisc updates Stephen Boyd (1): clk updates Steve French (1): cifs fixes Steven Rostedt (1): tracing updates Takashi Iwai (1): sound updates Ted Ts'o (1): ext4 updates Tejun Heo (4): percpu update workqueue updates libata updates another libata patch Thierry Reding (1): pwm updates Thomas Gleixner (11): smp hotplug updates timer updates irq updates irq fix SMP hotplug fixes timer fix x86 fixes and cleanups timer updates x86 cache allocation interface SMP hotplug notifier removal timer type cleanups Tomi Valkeinen (1): fbdev update Trond Myklebust (2): NFS client updates more NFS client updates Ulf Hansson (3): MMC updates another MMC update MMC fixes Vineet Gupta (2): ARC updates more ARC updates Vinod Koul (1): dmaengine updates Wim Van Sebroeck and Guenter Roeck (1): watchdog updates Wolfram Sang (2): i2c updates i2c fixes Zhang Rui (1): thermal management updates Zhenyu Wang (1): i915/gvt KVMGT updates ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: Linux 4.10-rc1 2016-12-26 0:41 Linux 4.10-rc1 Linus Torvalds @ 2016-12-26 8:38 ` Hanjun Guo 2016-12-26 9:05 ` Kefeng Wang 2016-12-26 9:15 ` Al Viro 2016-12-26 12:17 ` linux-next: stats (Was: Linux 4.10-rc1) Stephen Rothwell 1 sibling, 2 replies; 10+ messages in thread From: Hanjun Guo @ 2016-12-26 8:38 UTC (permalink / raw) To: Linus Torvalds, Linux Kernel Mailing List; +Cc: yankejian Hi Linus, On 2016/12/26 8:41, Linus Torvalds wrote: > It's Christmas Day, and it's two weeks since the merge window opened. > Thus, the merge window is now closed. > > I did a few final pulls today, but I also rejected a couple of pulls > that came in late in the window and looked dodgy. You know who you > are. > > On the whole, this wasn't all that big a release - nothing like 4.9. > Although it wasn't tiny either. I think 4.7 was smaller. 4.8 might > have been too. It's xmas day, and right now I can't be arsed to > actually do the statistics I'd normally do. > > Everything looks pretty normal, although we had an unusual amount of > tree-wide final cleanups in the last days of the merge window. But the > general statistics look fairly common: a bit over half is drivers, > maybe slightly less arch updates than normal, and a fair amount of > documentation updates due to the sphinx conversion. And then the usual > misc noise all over, although the perf tooling updates do stand out. > > The shortlog is much too big, as it always is during the merge window, > so as usual you just get the merge-log. Kejian and I got massive compile error when cross-compile the kernel for ARM64, such as ./include/asm-generic/atomic-long.h:23: Error: unknown mnemonic `typedef' -- `typedef atomic64_t atomic_long_t' ./include/asm-generic/atomic-long.h:44: Error: unknown mnemonic `static' -- `static inline long atomic_long_read(const atomic_long_t*l){atomic64_t*v=(atomic64_t*)l' ./include/asm-generic/atomic-long.h:44: Error: unknown mnemonic `return' -- `return (long)READ_ONCE((v)->counter)' ./include/asm-generic/atomic-long.h:44: Error: junk at end of line, first unrecognized character is `}' ./include/asm-generic/atomic-long.h:45: Error: unknown mnemonic `static' -- `static inline long atomic_long_read_acquire(const atomic_long_t*l){atomic64_t*v=(atomic64_t*)l' ./include/asm-generic/atomic-long.h:45: Error: unknown mnemonic `return' -- `return (long)smp_load_acquire(&(v)->counter)' ./include/asm-generic/atomic-long.h:45: Error: junk at end of line, first unrecognized character is `}' ./include/asm-generic/atomic-long.h:56: Error: unknown mnemonic `static' -- `static inline void atomic_long_set(atomic_long_t*l,long i){atomic64_t*v=(atomic64_t*)l' ./include/asm-generic/atomic-long.h:56: Error: unknown mnemonic `write_once' -- `write_once(((v)->counter), (i))' ./include/asm-generic/atomic-long.h:56: Error: junk at end of line, first unrecognized character is `}' ./include/asm-generic/atomic-long.h:57: Error: unknown mnemonic `static' -- `static inline void atomic_long_set_release(atomic_long_t*l,long i){atomic64_t*v=(atomic64_t*)l' ./include/asm-generic/atomic-long.h:57: Error: unknown mnemonic `smp_store_release' -- `smp_store_release(&(v)->counter, (i))' ./include/asm-generic/atomic-long.h:57: Error: junk at end of line, first unrecognized character is `}' ./include/asm-generic/atomic-long.h:69: Error: unknown mnemonic `static' -- `static inline long atomic_long_add_return(long i,atomic_long_t*l){atomic64_t*v=(atomic64_t*)l' ./include/asm-generic/atomic-long.h:69: Error: unknown mnemonic `return' -- `return (long)atomic64_add_return(i,v)' ./include/asm-generic/atomic-long.h:69: Error: junk at end of line, first unrecognized character is `}' ./include/asm-generic/atomic-long.h:70: Error: unknown mnemonic `static' -- `static inline long atomic_long_add_return_relaxed(long i,atomic_long_t*l){atomic64_t*v=(atomic64_t*)l' ./include/asm-generic/atomic-long.h:70: Error: unknown mnemonic `return' -- `return (long)atomic64_add_return_relaxed(i,v)' ./include/asm-generic/atomic-long.h:70: Error: junk at end of line, first unrecognized character is `}' ./include/asm-generic/atomic-long.h:71: Error: unknown mnemonic `static' -- `static inline long atomic_long_add_return_acquire(long i,atomic_long_t*l){atomic64_t*v=(atomic64_t*)l' ./include/asm-generic/atomic-long.h:71: Error: unknown mnemonic `return' -- `return (long)atomic64_add_return_acquire(i,v)' ./include/asm-generic/atomic-long.h:71: Error: junk at end of line, first unrecognized character is `}' ./include/asm-generic/atomic-long.h:72: Error: unknown mnemonic `static' -- `static inline long atomic_long_add_return_release(long i,atomic_long_t*l){atomic64_t*v=(atomic64_t*)l' ./include/asm-generic/atomic-long.h:72: Error: unknown mnemonic `return' -- `return (long)atomic64_add_return_release(i,v)' ./include/asm-generic/atomic-long.h:72: Error: junk at end of line, first unrecognized character is `}' ./include/asm-generic/atomic-long.h:73: Error: unknown mnemonic `static' -- `static inline long atomic_long_sub_return(long i,atomic_long_t*l){atomic64_t*v=(atomic64_t*)l' ./include/asm-generic/atomic-long.h:73: Error: unknown mnemonic `return' -- `return (long)atomic64_sub_return(i,v)' ./include/asm-generic/atomic-long.h:73: Error: junk at end of line, first unrecognized character is `}' ./include/asm-generic/atomic-long.h:74: Error: unknown mnemonic `static' -- `static inline long atomic_long_sub_return_relaxed(long i,atomic_long_t*l){atomic64_t*v=(atomic64_t*)l' ./include/asm-generic/atomic-long.h:74: Error: unknown mnemonic `return' -- `return (long)atomic64_sub_return_relaxed(i,v)' ./include/asm-generic/atomic-long.h:74: Error: junk at end of line, first unrecognized character is `}' ./include/asm-generic/atomic-long.h:75: Error: unknown mnemonic `static' -- `static inline long atomic_long_sub_return_acquire(long i,atomic_long_t*l){atomic64_t*v=(atomic64_t*)l' ./include/asm-generic/atomic-long.h:75: Error: unknown mnemonic `return' -- `return (long)atomic64_sub_return_acquire(i,v)' ./include/asm-generic/atomic-long.h:75: Error: junk at end of line, first unrecognized character is `}' ./include/asm-generic/atomic-long.h:76: Error: unknown mnemonic `static' -- `static inline long atomic_long_sub_return_release(long i,atomic_long_t*l){atomic64_t*v=(atomic64_t*)l' ./include/asm-generic/atomic-long.h:76: Error: unknown mnemonic `return' -- `return (long)atomic64_sub_return_release(i,v)' ./include/asm-generic/atomic-long.h:76: Error: junk at end of line, first unrecognized character is `}' ./include/asm-generic/atomic-long.h:101: Error: unknown mnemonic `static' -- `static inline void atomic_long_inc(atomic_long_t*l)' ./include/asm-generic/atomic-long.h:102: Error: junk at end of line, first unrecognized character is `{' ./include/asm-generic/atomic-long.h:103: Error: unknown mnemonic `atomic64_t' -- `atomic64_t *v=(atomic64_t*)l' ./include/asm-generic/atomic-long.h:105: Error: unknown mnemonic `atomic64_add' -- `atomic64_add(1, (v))' ./include/asm-generic/atomic-long.h:106: Error: junk at end of line, first unrecognized character is `}' ./include/asm-generic/atomic-long.h:108: Error: unknown mnemonic `static' -- `static inline void atomic_long_dec(atomic_long_t*l)' ./include/asm-generic/atomic-long.h:109: Error: junk at end of line, first unrecognized character is `{' ./include/asm-generic/atomic-long.h:110: Error: unknown mnemonic `atomic64_t' -- `atomic64_t *v=(atomic64_t*)l' ./include/asm-generic/atomic-long.h:112: Error: unknown mnemonic `atomic64_sub' -- `atomic64_sub(1, (v))' ./include/asm-generic/atomic-long.h:113: Error: junk at end of line, first unrecognized character is `}' bisect to commit 7c0f6ba682b9c7632072ffbedf8d328c8f3c42ba commit 7c0f6ba682b9c7632072ffbedf8d328c8f3c42ba Author: Linus Torvalds <torvalds@linux-foundation.org> Date: Sat Dec 24 11:46:01 2016 -0800 Replace <asm/uaccess.h> with <linux/uaccess.h> globally This was entirely automated, using the script by Al: PATT='^[[:blank:]]*#[[:blank:]]*include[[:blank:]]*<asm/uaccess.h>' sed -i -e "s!$PATT!#include <linux/uaccess.h>!" \ $(git grep -l "$PATT"|grep -v ^include/linux/uaccess.h) to do the replacement at the end of the merge window. Requested-by: Al Viro <viro@zeniv.linux.org.uk> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> I reverted and things back to normal, report it now to see if anyone has clue. Thanks Hanjun ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: Linux 4.10-rc1 2016-12-26 8:38 ` Hanjun Guo @ 2016-12-26 9:05 ` Kefeng Wang 2016-12-26 9:18 ` Al Viro 2016-12-26 9:15 ` Al Viro 1 sibling, 1 reply; 10+ messages in thread From: Kefeng Wang @ 2016-12-26 9:05 UTC (permalink / raw) To: Hanjun Guo, Linus Torvalds, Linux Kernel Mailing List, Will Deacon, Catalin Marinas On 2016/12/26 16:38, Hanjun Guo wrote: > Hi Linus, > > On 2016/12/26 8:41, Linus Torvalds wrote: >> It's Christmas Day, and it's two weeks since the merge window opened. >> Thus, the merge window is now closed. >> >> I did a few final pulls today, but I also rejected a couple of pulls >> that came in late in the window and looked dodgy. You know who you >> are. >> >> On the whole, this wasn't all that big a release - nothing like 4.9. >> Although it wasn't tiny either. I think 4.7 was smaller. 4.8 might >> have been too. It's xmas day, and right now I can't be arsed to >> actually do the statistics I'd normally do. >> >> Everything looks pretty normal, although we had an unusual amount of >> tree-wide final cleanups in the last days of the merge window. But the >> general statistics look fairly common: a bit over half is drivers, >> maybe slightly less arch updates than normal, and a fair amount of >> documentation updates due to the sphinx conversion. And then the usual >> misc noise all over, although the perf tooling updates do stand out. >> >> The shortlog is much too big, as it always is during the merge window, >> so as usual you just get the merge-log. > > Kejian and I got massive compile error when cross-compile the kernel for ARM64, such as > > ./include/asm-generic/atomic-long.h:23: Error: unknown mnemonic `typedef' -- `typedef atomic64_t atomic_long_t' > ./include/asm-generic/atomic-long.h:44: Error: unknown mnemonic `static' -- `static inline long atomic_long_read(const atomic_long_t*l){atomic64_t*v=(atomic64_t*)l' > ./include/asm-generic/atomic-long.h:44: Error: unknown mnemonic `return' -- `return (long)READ_ONCE((v)->counter)' > ./include/asm-generic/atomic-long.h:44: Error: junk at end of line, first unrecognized character is `}' > ./include/asm-generic/atomic-long.h:45: Error: unknown mnemonic `static' -- `static inline long atomic_long_read_acquire(const atomic_long_t*l){atomic64_t*v=(atomic64_t*)l' > ./include/asm-generic/atomic-long.h:45: Error: unknown mnemonic `return' -- `return (long)smp_load_acquire(&(v)->counter)' > ./include/asm-generic/atomic-long.h:45: Error: junk at end of line, first unrecognized character is `}' > ./include/asm-generic/atomic-long.h:56: Error: unknown mnemonic `static' -- `static inline void atomic_long_set(atomic_long_t*l,long i){atomic64_t*v=(atomic64_t*)l' > ./include/asm-generic/atomic-long.h:56: Error: unknown mnemonic `write_once' -- `write_once(((v)->counter), (i))' > ./include/asm-generic/atomic-long.h:56: Error: junk at end of line, first unrecognized character is `}' > ./include/asm-generic/atomic-long.h:57: Error: unknown mnemonic `static' -- `static inline void atomic_long_set_release(atomic_long_t*l,long i){atomic64_t*v=(atomic64_t*)l' > ./include/asm-generic/atomic-long.h:57: Error: unknown mnemonic `smp_store_release' -- `smp_store_release(&(v)->counter, (i))' > ./include/asm-generic/atomic-long.h:57: Error: junk at end of line, first unrecognized character is `}' > ./include/asm-generic/atomic-long.h:69: Error: unknown mnemonic `static' -- `static inline long atomic_long_add_return(long i,atomic_long_t*l){atomic64_t*v=(atomic64_t*)l' > ./include/asm-generic/atomic-long.h:69: Error: unknown mnemonic `return' -- `return (long)atomic64_add_return(i,v)' > ./include/asm-generic/atomic-long.h:69: Error: junk at end of line, first unrecognized character is `}' > ./include/asm-generic/atomic-long.h:70: Error: unknown mnemonic `static' -- `static inline long atomic_long_add_return_relaxed(long i,atomic_long_t*l){atomic64_t*v=(atomic64_t*)l' > ./include/asm-generic/atomic-long.h:70: Error: unknown mnemonic `return' -- `return (long)atomic64_add_return_relaxed(i,v)' > ./include/asm-generic/atomic-long.h:70: Error: junk at end of line, first unrecognized character is `}' > ./include/asm-generic/atomic-long.h:71: Error: unknown mnemonic `static' -- `static inline long atomic_long_add_return_acquire(long i,atomic_long_t*l){atomic64_t*v=(atomic64_t*)l' > ./include/asm-generic/atomic-long.h:71: Error: unknown mnemonic `return' -- `return (long)atomic64_add_return_acquire(i,v)' > ./include/asm-generic/atomic-long.h:71: Error: junk at end of line, first unrecognized character is `}' > ./include/asm-generic/atomic-long.h:72: Error: unknown mnemonic `static' -- `static inline long atomic_long_add_return_release(long i,atomic_long_t*l){atomic64_t*v=(atomic64_t*)l' > ./include/asm-generic/atomic-long.h:72: Error: unknown mnemonic `return' -- `return (long)atomic64_add_return_release(i,v)' > ./include/asm-generic/atomic-long.h:72: Error: junk at end of line, first unrecognized character is `}' > ./include/asm-generic/atomic-long.h:73: Error: unknown mnemonic `static' -- `static inline long atomic_long_sub_return(long i,atomic_long_t*l){atomic64_t*v=(atomic64_t*)l' > ./include/asm-generic/atomic-long.h:73: Error: unknown mnemonic `return' -- `return (long)atomic64_sub_return(i,v)' > ./include/asm-generic/atomic-long.h:73: Error: junk at end of line, first unrecognized character is `}' > ./include/asm-generic/atomic-long.h:74: Error: unknown mnemonic `static' -- `static inline long atomic_long_sub_return_relaxed(long i,atomic_long_t*l){atomic64_t*v=(atomic64_t*)l' > ./include/asm-generic/atomic-long.h:74: Error: unknown mnemonic `return' -- `return (long)atomic64_sub_return_relaxed(i,v)' > ./include/asm-generic/atomic-long.h:74: Error: junk at end of line, first unrecognized character is `}' > ./include/asm-generic/atomic-long.h:75: Error: unknown mnemonic `static' -- `static inline long atomic_long_sub_return_acquire(long i,atomic_long_t*l){atomic64_t*v=(atomic64_t*)l' > ./include/asm-generic/atomic-long.h:75: Error: unknown mnemonic `return' -- `return (long)atomic64_sub_return_acquire(i,v)' > ./include/asm-generic/atomic-long.h:75: Error: junk at end of line, first unrecognized character is `}' > ./include/asm-generic/atomic-long.h:76: Error: unknown mnemonic `static' -- `static inline long atomic_long_sub_return_release(long i,atomic_long_t*l){atomic64_t*v=(atomic64_t*)l' > ./include/asm-generic/atomic-long.h:76: Error: unknown mnemonic `return' -- `return (long)atomic64_sub_return_release(i,v)' > ./include/asm-generic/atomic-long.h:76: Error: junk at end of line, first unrecognized character is `}' > ./include/asm-generic/atomic-long.h:101: Error: unknown mnemonic `static' -- `static inline void atomic_long_inc(atomic_long_t*l)' > ./include/asm-generic/atomic-long.h:102: Error: junk at end of line, first unrecognized character is `{' > ./include/asm-generic/atomic-long.h:103: Error: unknown mnemonic `atomic64_t' -- `atomic64_t *v=(atomic64_t*)l' > ./include/asm-generic/atomic-long.h:105: Error: unknown mnemonic `atomic64_add' -- `atomic64_add(1, (v))' > ./include/asm-generic/atomic-long.h:106: Error: junk at end of line, first unrecognized character is `}' > ./include/asm-generic/atomic-long.h:108: Error: unknown mnemonic `static' -- `static inline void atomic_long_dec(atomic_long_t*l)' > ./include/asm-generic/atomic-long.h:109: Error: junk at end of line, first unrecognized character is `{' > ./include/asm-generic/atomic-long.h:110: Error: unknown mnemonic `atomic64_t' -- `atomic64_t *v=(atomic64_t*)l' > ./include/asm-generic/atomic-long.h:112: Error: unknown mnemonic `atomic64_sub' -- `atomic64_sub(1, (v))' > ./include/asm-generic/atomic-long.h:113: Error: junk at end of line, first unrecognized character is `}' > > bisect to commit 7c0f6ba682b9c7632072ffbedf8d328c8f3c42ba > > commit 7c0f6ba682b9c7632072ffbedf8d328c8f3c42ba > Author: Linus Torvalds <torvalds@linux-foundation.org> > Date: Sat Dec 24 11:46:01 2016 -0800 > > Replace <asm/uaccess.h> with <linux/uaccess.h> globally > > This was entirely automated, using the script by Al: > > PATT='^[[:blank:]]*#[[:blank:]]*include[[:blank:]]*<asm/uaccess.h>' > sed -i -e "s!$PATT!#include <linux/uaccess.h>!" \ > $(git grep -l "$PATT"|grep -v ^include/linux/uaccess.h) > > to do the replacement at the end of the merge window. > > Requested-by: Al Viro <viro@zeniv.linux.org.uk> > Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> > > I reverted and things back to normal, report it now to see if anyone > has clue. It looks like we need revert the changes from assembly files. diff --git a/arch/arm64/kernel/entry.S b/arch/arm64/kernel/entry.S index a7504f4..4f0d763 100644 --- a/arch/arm64/kernel/entry.S +++ b/arch/arm64/kernel/entry.S @@ -31,7 +31,7 @@ #include <asm/memory.h> #include <asm/ptrace.h> #include <asm/thread_info.h> -#include <linux/uaccess.h> +#include <asm/uaccess.h> #include <asm/unistd.h> /* diff --git a/arch/arm64/lib/clear_user.S b/arch/arm64/lib/clear_user.S index add4a13..d7150e3 100644 --- a/arch/arm64/lib/clear_user.S +++ b/arch/arm64/lib/clear_user.S @@ -17,7 +17,7 @@ */ #include <linux/linkage.h> -#include <linux/uaccess.h> +#include <asm/uaccess.h> .text diff --git a/arch/arm64/lib/copy_from_user.S b/arch/arm64/lib/copy_from_user.S index fd6cd05..cfe1339 100644 --- a/arch/arm64/lib/copy_from_user.S +++ b/arch/arm64/lib/copy_from_user.S @@ -17,7 +17,7 @@ #include <linux/linkage.h> #include <asm/cache.h> -#include <linux/uaccess.h> +#include <asm/uaccess.h> /* * Copy from user space to a kernel buffer (alignment handled by the hardware) diff --git a/arch/arm64/lib/copy_in_user.S b/arch/arm64/lib/copy_in_user.S index d828540..718b1c4 100644 --- a/arch/arm64/lib/copy_in_user.S +++ b/arch/arm64/lib/copy_in_user.S @@ -19,7 +19,7 @@ #include <linux/linkage.h> #include <asm/cache.h> -#include <linux/uaccess.h> +#include <asm/uaccess.h> /* * Copy from user space to user space (alignment handled by the hardware) diff --git a/arch/arm64/lib/copy_to_user.S b/arch/arm64/lib/copy_to_user.S index 3e6ae26..e99e31c 100644 --- a/arch/arm64/lib/copy_to_user.S +++ b/arch/arm64/lib/copy_to_user.S @@ -17,7 +17,7 @@ #include <linux/linkage.h> #include <asm/cache.h> -#include <linux/uaccess.h> +#include <asm/uaccess.h> /* * Copy to user space from a kernel buffer (alignment handled by the hardware) diff --git a/arch/arm64/mm/cache.S b/arch/arm64/mm/cache.S index 17f422a..da95769 100644 --- a/arch/arm64/mm/cache.S +++ b/arch/arm64/mm/cache.S @@ -23,7 +23,7 @@ #include <asm/assembler.h> #include <asm/cpufeature.h> #include <asm/alternative.h> -#include <linux/uaccess.h> +#include <asm/uaccess.h> /* * flush_icache_range(start,end) diff --git a/arch/arm64/xen/hypercall.S b/arch/arm64/xen/hypercall.S index 47cf3f9..b41aff2 100644 --- a/arch/arm64/xen/hypercall.S +++ b/arch/arm64/xen/hypercall.S @@ -49,7 +49,7 @@ #include <linux/linkage.h> #include <asm/assembler.h> -#include <linux/uaccess.h> +#include <asm/uaccess.h> #include <xen/interface/xen.h> > > Thanks > Hanjun > > _______________________________________________ > linuxarm mailing list > linuxarm@huawei.com > http://rnd-openeuler.huawei.com/mailman/listinfo/linuxarm > > . > ^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: Linux 4.10-rc1 2016-12-26 9:05 ` Kefeng Wang @ 2016-12-26 9:18 ` Al Viro 2016-12-26 9:38 ` Hanjun Guo 2016-12-26 9:45 ` Hanjun Guo 0 siblings, 2 replies; 10+ messages in thread From: Al Viro @ 2016-12-26 9:18 UTC (permalink / raw) To: Kefeng Wang Cc: Hanjun Guo, Linus Torvalds, Linux Kernel Mailing List, Will Deacon, Catalin Marinas On Mon, Dec 26, 2016 at 05:05:37PM +0800, Kefeng Wang wrote: > It looks like we need revert the changes from assembly files. Better yet, split the damn thing in two and include the asm-only part. > diff --git a/arch/arm64/mm/cache.S b/arch/arm64/mm/cache.S > diff --git a/arch/arm64/xen/hypercall.S b/arch/arm64/xen/hypercall.S Missed those two... OK, how about this? arm64: don't pull uaccess.h into *.S Split asm-only parts of arm64 uaccess.h into a new header and use that from *.S. Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> diff --git a/arch/arm64/include/asm/asm-uaccess.h b/arch/arm64/include/asm/asm-uaccess.h new file mode 100644 index 000000000000..df411f3e083c --- /dev/null +++ b/arch/arm64/include/asm/asm-uaccess.h @@ -0,0 +1,65 @@ +#ifndef __ASM_ASM_UACCESS_H +#define __ASM_ASM_UACCESS_H + +#include <asm/alternative.h> +#include <asm/kernel-pgtable.h> +#include <asm/sysreg.h> +#include <asm/assembler.h> + +/* + * User access enabling/disabling macros. + */ +#ifdef CONFIG_ARM64_SW_TTBR0_PAN + .macro __uaccess_ttbr0_disable, tmp1 + mrs \tmp1, ttbr1_el1 // swapper_pg_dir + add \tmp1, \tmp1, #SWAPPER_DIR_SIZE // reserved_ttbr0 at the end of swapper_pg_dir + msr ttbr0_el1, \tmp1 // set reserved TTBR0_EL1 + isb + .endm + + .macro __uaccess_ttbr0_enable, tmp1 + get_thread_info \tmp1 + ldr \tmp1, [\tmp1, #TSK_TI_TTBR0] // load saved TTBR0_EL1 + msr ttbr0_el1, \tmp1 // set the non-PAN TTBR0_EL1 + isb + .endm + + .macro uaccess_ttbr0_disable, tmp1 +alternative_if_not ARM64_HAS_PAN + __uaccess_ttbr0_disable \tmp1 +alternative_else_nop_endif + .endm + + .macro uaccess_ttbr0_enable, tmp1, tmp2 +alternative_if_not ARM64_HAS_PAN + save_and_disable_irq \tmp2 // avoid preemption + __uaccess_ttbr0_enable \tmp1 + restore_irq \tmp2 +alternative_else_nop_endif + .endm +#else + .macro uaccess_ttbr0_disable, tmp1 + .endm + + .macro uaccess_ttbr0_enable, tmp1, tmp2 + .endm +#endif + +/* + * These macros are no-ops when UAO is present. + */ + .macro uaccess_disable_not_uao, tmp1 + uaccess_ttbr0_disable \tmp1 +alternative_if ARM64_ALT_PAN_NOT_UAO + SET_PSTATE_PAN(1) +alternative_else_nop_endif + .endm + + .macro uaccess_enable_not_uao, tmp1, tmp2 + uaccess_ttbr0_enable \tmp1, \tmp2 +alternative_if ARM64_ALT_PAN_NOT_UAO + SET_PSTATE_PAN(0) +alternative_else_nop_endif + .endm + +#endif diff --git a/arch/arm64/include/asm/uaccess.h b/arch/arm64/include/asm/uaccess.h index d26750ca6e06..46da3ea638bb 100644 --- a/arch/arm64/include/asm/uaccess.h +++ b/arch/arm64/include/asm/uaccess.h @@ -22,8 +22,6 @@ #include <asm/kernel-pgtable.h> #include <asm/sysreg.h> -#ifndef __ASSEMBLY__ - /* * User space memory access functions */ @@ -424,66 +422,4 @@ extern long strncpy_from_user(char *dest, const char __user *src, long count); extern __must_check long strlen_user(const char __user *str); extern __must_check long strnlen_user(const char __user *str, long n); -#else /* __ASSEMBLY__ */ - -#include <asm/assembler.h> - -/* - * User access enabling/disabling macros. - */ -#ifdef CONFIG_ARM64_SW_TTBR0_PAN - .macro __uaccess_ttbr0_disable, tmp1 - mrs \tmp1, ttbr1_el1 // swapper_pg_dir - add \tmp1, \tmp1, #SWAPPER_DIR_SIZE // reserved_ttbr0 at the end of swapper_pg_dir - msr ttbr0_el1, \tmp1 // set reserved TTBR0_EL1 - isb - .endm - - .macro __uaccess_ttbr0_enable, tmp1 - get_thread_info \tmp1 - ldr \tmp1, [\tmp1, #TSK_TI_TTBR0] // load saved TTBR0_EL1 - msr ttbr0_el1, \tmp1 // set the non-PAN TTBR0_EL1 - isb - .endm - - .macro uaccess_ttbr0_disable, tmp1 -alternative_if_not ARM64_HAS_PAN - __uaccess_ttbr0_disable \tmp1 -alternative_else_nop_endif - .endm - - .macro uaccess_ttbr0_enable, tmp1, tmp2 -alternative_if_not ARM64_HAS_PAN - save_and_disable_irq \tmp2 // avoid preemption - __uaccess_ttbr0_enable \tmp1 - restore_irq \tmp2 -alternative_else_nop_endif - .endm -#else - .macro uaccess_ttbr0_disable, tmp1 - .endm - - .macro uaccess_ttbr0_enable, tmp1, tmp2 - .endm -#endif - -/* - * These macros are no-ops when UAO is present. - */ - .macro uaccess_disable_not_uao, tmp1 - uaccess_ttbr0_disable \tmp1 -alternative_if ARM64_ALT_PAN_NOT_UAO - SET_PSTATE_PAN(1) -alternative_else_nop_endif - .endm - - .macro uaccess_enable_not_uao, tmp1, tmp2 - uaccess_ttbr0_enable \tmp1, \tmp2 -alternative_if ARM64_ALT_PAN_NOT_UAO - SET_PSTATE_PAN(0) -alternative_else_nop_endif - .endm - -#endif /* __ASSEMBLY__ */ - #endif /* __ASM_UACCESS_H */ diff --git a/arch/arm64/lib/clear_user.S b/arch/arm64/lib/clear_user.S index add4a1334085..e88fb99c1561 100644 --- a/arch/arm64/lib/clear_user.S +++ b/arch/arm64/lib/clear_user.S @@ -17,7 +17,7 @@ */ #include <linux/linkage.h> -#include <linux/uaccess.h> +#include <asm/asm-uaccess.h> .text diff --git a/arch/arm64/lib/copy_from_user.S b/arch/arm64/lib/copy_from_user.S index fd6cd05593f9..4b5d826895ff 100644 --- a/arch/arm64/lib/copy_from_user.S +++ b/arch/arm64/lib/copy_from_user.S @@ -17,7 +17,7 @@ #include <linux/linkage.h> #include <asm/cache.h> -#include <linux/uaccess.h> +#include <asm/asm-uaccess.h> /* * Copy from user space to a kernel buffer (alignment handled by the hardware) diff --git a/arch/arm64/lib/copy_in_user.S b/arch/arm64/lib/copy_in_user.S index d828540ded6f..47184c3a97da 100644 --- a/arch/arm64/lib/copy_in_user.S +++ b/arch/arm64/lib/copy_in_user.S @@ -19,7 +19,7 @@ #include <linux/linkage.h> #include <asm/cache.h> -#include <linux/uaccess.h> +#include <asm/asm-uaccess.h> /* * Copy from user space to user space (alignment handled by the hardware) diff --git a/arch/arm64/lib/copy_to_user.S b/arch/arm64/lib/copy_to_user.S index 3e6ae2663b82..351f0766f7a6 100644 --- a/arch/arm64/lib/copy_to_user.S +++ b/arch/arm64/lib/copy_to_user.S @@ -17,7 +17,7 @@ #include <linux/linkage.h> #include <asm/cache.h> -#include <linux/uaccess.h> +#include <asm/asm-uaccess.h> /* * Copy to user space from a kernel buffer (alignment handled by the hardware) diff --git a/arch/arm64/mm/cache.S b/arch/arm64/mm/cache.S index 17f422a4dc55..83c27b6e6dca 100644 --- a/arch/arm64/mm/cache.S +++ b/arch/arm64/mm/cache.S @@ -23,7 +23,7 @@ #include <asm/assembler.h> #include <asm/cpufeature.h> #include <asm/alternative.h> -#include <linux/uaccess.h> +#include <asm/asm-uaccess.h> /* * flush_icache_range(start,end) diff --git a/arch/arm64/xen/hypercall.S b/arch/arm64/xen/hypercall.S index 47cf3f9d89ff..947830a459d2 100644 --- a/arch/arm64/xen/hypercall.S +++ b/arch/arm64/xen/hypercall.S @@ -49,7 +49,7 @@ #include <linux/linkage.h> #include <asm/assembler.h> -#include <linux/uaccess.h> +#include <asm/asm-uaccess.h> #include <xen/interface/xen.h> ^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: Linux 4.10-rc1 2016-12-26 9:18 ` Al Viro @ 2016-12-26 9:38 ` Hanjun Guo 2016-12-26 9:45 ` Hanjun Guo 1 sibling, 0 replies; 10+ messages in thread From: Hanjun Guo @ 2016-12-26 9:38 UTC (permalink / raw) To: Al Viro, Kefeng Wang Cc: Linus Torvalds, Linux Kernel Mailing List, Will Deacon, Catalin Marinas On 2016/12/26 17:18, Al Viro wrote: > On Mon, Dec 26, 2016 at 05:05:37PM +0800, Kefeng Wang wrote: >> It looks like we need revert the changes from assembly files. > Better yet, split the damn thing in two and include the asm-only part. > >> diff --git a/arch/arm64/mm/cache.S b/arch/arm64/mm/cache.S >> diff --git a/arch/arm64/xen/hypercall.S b/arch/arm64/xen/hypercall.S > Missed those two... OK, how about this? It happens some where else, ./include/asm-generic/rwsem.h:48: Error: junk at end of line, first unrecognized character is `}' ./include/asm-generic/rwsem.h:49: Error: junk at end of line, first unrecognized character is `}' ./include/asm-generic/rwsem.h:50: Error: unknown mnemonic `return' -- `return 0' ./include/asm-generic/rwsem.h:51: Error: junk at end of line, first unrecognized character is `}' ./include/asm-generic/rwsem.h:56: Error: unknown mnemonic `static' -- `static inline void __down_write(struct rw_semaphore*sem)' ./include/asm-generic/rwsem.h:57: Error: junk at end of line, first unrecognized character is `{' ./include/asm-generic/rwsem.h:58: Error: unknown mnemonic `long' -- `long tmp' ./include/asm-generic/rwsem.h:60: Error: junk at end of line, first unrecognized character is `(' ./include/asm-generic/rwsem.h:61: Error: junk at end of line, first unrecognized character is `(' ./include/asm-generic/rwsem.h:62: Error: unknown mnemonic `if' -- `if (unlikely(tmp!=((-0xffffffffL-1)+0x00000001L)))' ./include/asm-generic/rwsem.h:63: Error: unknown mnemonic `rwsem_down_write_failed' -- `rwsem_down_write_failed(sem)' ./include/asm-generic/rwsem.h:64: Error: junk at end of line, first unrecognized character is `}' ./include/asm-generic/rwsem.h:66: Error: unknown mnemonic `static' -- `static inline int __down_write_killable(struct rw_semaphore*sem)' ./include/asm-generic/rwsem.h:67: Error: junk at end of line, first unrecognized character is `{' ./include/asm-generic/rwsem.h:68: Error: unknown mnemonic `long' -- `long tmp' ./include/asm-generic/rwsem.h:70: Error: junk at end of line, first unrecognized character is `(' ./include/asm-generic/rwsem.h:71: Error: junk at end of line, first unrecognized character is `(' ./include/asm-generic/rwsem.h:72: Error: unknown mnemonic `if' -- `if (unlikely(tmp!=((-0xffffffffL-1)+0x00000001L)))' ./include/asm-generic/rwsem.h:73: Error: unknown mnemonic `if' -- `if (IS_ERR(rwsem_down_write_failed_killable(sem)))' ./include/asm-generic/rwsem.h:74: Error: unknown mnemonic `return' -- `return -4' ./include/asm-generic/rwsem.h:75: Error: unknown mnemonic `return' -- `return 0' ./include/asm-generic/rwsem.h:76: Error: junk at end of line, first unrecognized character is `}' ./include/asm-generic/rwsem.h:78: Error: unknown mnemonic `static' -- `static inline int __down_write_trylock(struct rw_semaphore*sem)' ./include/asm-generic/rwsem.h:79: Error: junk at end of line, first unrecognized character is `{' ./include/linux/highuid.h:34: Error: unknown mnemonic `extern' -- `extern int overflowuid' ./include/linux/highuid.h:35: Error: unknown mnemonic `extern' -- `extern int overflowgid' ./include/linux/highuid.h:37: Error: unknown mnemonic `extern' -- `extern void __bad_uid(void)' ./include/linux/uidgid.h:21: Error: unknown mnemonic `uid_t' -- `uid_t val' ./include/linux/uidgid.h:22: Error: junk at end of line, first unrecognized character is `}' ./include/linux/uidgid.h:25: Error: unknown mnemonic `typedef' -- `typedef struct{' ./include/linux/uidgid.h:26: Error: unknown mnemonic `gid_t' -- `gid_t val' ./include/linux/uidgid.h:27: Error: junk at end of line, first unrecognized character is `}' ./include/uapi/linux/sysctl.h:34: Error: unknown mnemonic `struct' -- `struct __sysctl_args{' ./include/uapi/linux/sysctl.h:35: Error: unknown mnemonic `int' -- `int __user*name' ./include/uapi/linux/sysctl.h:36: Error: unknown mnemonic `int' -- `int nlen' ./include/uapi/linux/sysctl.h:37: Error: unknown mnemonic `void' -- `void __user*oldval' Thanks Hanjun > > arm64: don't pull uaccess.h into *.S > > Split asm-only parts of arm64 uaccess.h into a new header and use that > from *.S. > > Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> > > diff --git a/arch/arm64/include/asm/asm-uaccess.h b/arch/arm64/include/asm/asm-uaccess.h > new file mode 100644 > index 000000000000..df411f3e083c > --- /dev/null > +++ b/arch/arm64/include/asm/asm-uaccess.h > @@ -0,0 +1,65 @@ > +#ifndef __ASM_ASM_UACCESS_H > +#define __ASM_ASM_UACCESS_H > + > +#include <asm/alternative.h> > +#include <asm/kernel-pgtable.h> > +#include <asm/sysreg.h> > +#include <asm/assembler.h> > + > +/* > + * User access enabling/disabling macros. > + */ > +#ifdef CONFIG_ARM64_SW_TTBR0_PAN > + .macro __uaccess_ttbr0_disable, tmp1 > + mrs \tmp1, ttbr1_el1 // swapper_pg_dir > + add \tmp1, \tmp1, #SWAPPER_DIR_SIZE // reserved_ttbr0 at the end of swapper_pg_dir > + msr ttbr0_el1, \tmp1 // set reserved TTBR0_EL1 > + isb > + .endm > + > + .macro __uaccess_ttbr0_enable, tmp1 > + get_thread_info \tmp1 > + ldr \tmp1, [\tmp1, #TSK_TI_TTBR0] // load saved TTBR0_EL1 > + msr ttbr0_el1, \tmp1 // set the non-PAN TTBR0_EL1 > + isb > + .endm > + > + .macro uaccess_ttbr0_disable, tmp1 > +alternative_if_not ARM64_HAS_PAN > + __uaccess_ttbr0_disable \tmp1 > +alternative_else_nop_endif > + .endm > + > + .macro uaccess_ttbr0_enable, tmp1, tmp2 > +alternative_if_not ARM64_HAS_PAN > + save_and_disable_irq \tmp2 // avoid preemption > + __uaccess_ttbr0_enable \tmp1 > + restore_irq \tmp2 > +alternative_else_nop_endif > + .endm > +#else > + .macro uaccess_ttbr0_disable, tmp1 > + .endm > + > + .macro uaccess_ttbr0_enable, tmp1, tmp2 > + .endm > +#endif > + > +/* > + * These macros are no-ops when UAO is present. > + */ > + .macro uaccess_disable_not_uao, tmp1 > + uaccess_ttbr0_disable \tmp1 > +alternative_if ARM64_ALT_PAN_NOT_UAO > + SET_PSTATE_PAN(1) > +alternative_else_nop_endif > + .endm > + > + .macro uaccess_enable_not_uao, tmp1, tmp2 > + uaccess_ttbr0_enable \tmp1, \tmp2 > +alternative_if ARM64_ALT_PAN_NOT_UAO > + SET_PSTATE_PAN(0) > +alternative_else_nop_endif > + .endm > + > +#endif > diff --git a/arch/arm64/include/asm/uaccess.h b/arch/arm64/include/asm/uaccess.h > index d26750ca6e06..46da3ea638bb 100644 > --- a/arch/arm64/include/asm/uaccess.h > +++ b/arch/arm64/include/asm/uaccess.h > @@ -22,8 +22,6 @@ > #include <asm/kernel-pgtable.h> > #include <asm/sysreg.h> > > -#ifndef __ASSEMBLY__ > - > /* > * User space memory access functions > */ > @@ -424,66 +422,4 @@ extern long strncpy_from_user(char *dest, const char __user *src, long count); > extern __must_check long strlen_user(const char __user *str); > extern __must_check long strnlen_user(const char __user *str, long n); > > -#else /* __ASSEMBLY__ */ > - > -#include <asm/assembler.h> > - > -/* > - * User access enabling/disabling macros. > - */ > -#ifdef CONFIG_ARM64_SW_TTBR0_PAN > - .macro __uaccess_ttbr0_disable, tmp1 > - mrs \tmp1, ttbr1_el1 // swapper_pg_dir > - add \tmp1, \tmp1, #SWAPPER_DIR_SIZE // reserved_ttbr0 at the end of swapper_pg_dir > - msr ttbr0_el1, \tmp1 // set reserved TTBR0_EL1 > - isb > - .endm > - > - .macro __uaccess_ttbr0_enable, tmp1 > - get_thread_info \tmp1 > - ldr \tmp1, [\tmp1, #TSK_TI_TTBR0] // load saved TTBR0_EL1 > - msr ttbr0_el1, \tmp1 // set the non-PAN TTBR0_EL1 > - isb > - .endm > - > - .macro uaccess_ttbr0_disable, tmp1 > -alternative_if_not ARM64_HAS_PAN > - __uaccess_ttbr0_disable \tmp1 > -alternative_else_nop_endif > - .endm > - > - .macro uaccess_ttbr0_enable, tmp1, tmp2 > -alternative_if_not ARM64_HAS_PAN > - save_and_disable_irq \tmp2 // avoid preemption > - __uaccess_ttbr0_enable \tmp1 > - restore_irq \tmp2 > -alternative_else_nop_endif > - .endm > -#else > - .macro uaccess_ttbr0_disable, tmp1 > - .endm > - > - .macro uaccess_ttbr0_enable, tmp1, tmp2 > - .endm > -#endif > - > -/* > - * These macros are no-ops when UAO is present. > - */ > - .macro uaccess_disable_not_uao, tmp1 > - uaccess_ttbr0_disable \tmp1 > -alternative_if ARM64_ALT_PAN_NOT_UAO > - SET_PSTATE_PAN(1) > -alternative_else_nop_endif > - .endm > - > - .macro uaccess_enable_not_uao, tmp1, tmp2 > - uaccess_ttbr0_enable \tmp1, \tmp2 > -alternative_if ARM64_ALT_PAN_NOT_UAO > - SET_PSTATE_PAN(0) > -alternative_else_nop_endif > - .endm > - > -#endif /* __ASSEMBLY__ */ > - > #endif /* __ASM_UACCESS_H */ > diff --git a/arch/arm64/lib/clear_user.S b/arch/arm64/lib/clear_user.S > index add4a1334085..e88fb99c1561 100644 > --- a/arch/arm64/lib/clear_user.S > +++ b/arch/arm64/lib/clear_user.S > @@ -17,7 +17,7 @@ > */ > #include <linux/linkage.h> > > -#include <linux/uaccess.h> > +#include <asm/asm-uaccess.h> > > .text > > diff --git a/arch/arm64/lib/copy_from_user.S b/arch/arm64/lib/copy_from_user.S > index fd6cd05593f9..4b5d826895ff 100644 > --- a/arch/arm64/lib/copy_from_user.S > +++ b/arch/arm64/lib/copy_from_user.S > @@ -17,7 +17,7 @@ > #include <linux/linkage.h> > > #include <asm/cache.h> > -#include <linux/uaccess.h> > +#include <asm/asm-uaccess.h> > > /* > * Copy from user space to a kernel buffer (alignment handled by the hardware) > diff --git a/arch/arm64/lib/copy_in_user.S b/arch/arm64/lib/copy_in_user.S > index d828540ded6f..47184c3a97da 100644 > --- a/arch/arm64/lib/copy_in_user.S > +++ b/arch/arm64/lib/copy_in_user.S > @@ -19,7 +19,7 @@ > #include <linux/linkage.h> > > #include <asm/cache.h> > -#include <linux/uaccess.h> > +#include <asm/asm-uaccess.h> > > /* > * Copy from user space to user space (alignment handled by the hardware) > diff --git a/arch/arm64/lib/copy_to_user.S b/arch/arm64/lib/copy_to_user.S > index 3e6ae2663b82..351f0766f7a6 100644 > --- a/arch/arm64/lib/copy_to_user.S > +++ b/arch/arm64/lib/copy_to_user.S > @@ -17,7 +17,7 @@ > #include <linux/linkage.h> > > #include <asm/cache.h> > -#include <linux/uaccess.h> > +#include <asm/asm-uaccess.h> > > /* > * Copy to user space from a kernel buffer (alignment handled by the hardware) > diff --git a/arch/arm64/mm/cache.S b/arch/arm64/mm/cache.S > index 17f422a4dc55..83c27b6e6dca 100644 > --- a/arch/arm64/mm/cache.S > +++ b/arch/arm64/mm/cache.S > @@ -23,7 +23,7 @@ > #include <asm/assembler.h> > #include <asm/cpufeature.h> > #include <asm/alternative.h> > -#include <linux/uaccess.h> > +#include <asm/asm-uaccess.h> > > /* > * flush_icache_range(start,end) > diff --git a/arch/arm64/xen/hypercall.S b/arch/arm64/xen/hypercall.S > index 47cf3f9d89ff..947830a459d2 100644 > --- a/arch/arm64/xen/hypercall.S > +++ b/arch/arm64/xen/hypercall.S > @@ -49,7 +49,7 @@ > > #include <linux/linkage.h> > #include <asm/assembler.h> > -#include <linux/uaccess.h> > +#include <asm/asm-uaccess.h> > #include <xen/interface/xen.h> > > > > . > ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: Linux 4.10-rc1 2016-12-26 9:18 ` Al Viro 2016-12-26 9:38 ` Hanjun Guo @ 2016-12-26 9:45 ` Hanjun Guo 2016-12-26 14:23 ` Al Viro 1 sibling, 1 reply; 10+ messages in thread From: Hanjun Guo @ 2016-12-26 9:45 UTC (permalink / raw) To: Al Viro, Kefeng Wang Cc: Linus Torvalds, Linux Kernel Mailing List, Will Deacon, Catalin Marinas On 2016/12/26 17:18, Al Viro wrote: > On Mon, Dec 26, 2016 at 05:05:37PM +0800, Kefeng Wang wrote: >> It looks like we need revert the changes from assembly files. I tested Kefeng's patch and works. more comments below. > Better yet, split the damn thing in two and include the asm-only part. split will cause other places for building errors, because there is no -#ifndef __ASSEMBLY__ in the file. > >> diff --git a/arch/arm64/mm/cache.S b/arch/arm64/mm/cache.S >> diff --git a/arch/arm64/xen/hypercall.S b/arch/arm64/xen/hypercall.S > Missed those two... OK, how about this? > > arm64: don't pull uaccess.h into *.S > > Split asm-only parts of arm64 uaccess.h into a new header and use that > from *.S. > > Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> > > diff --git a/arch/arm64/include/asm/asm-uaccess.h b/arch/arm64/include/asm/asm-uaccess.h > new file mode 100644 > index 000000000000..df411f3e083c > --- /dev/null > +++ b/arch/arm64/include/asm/asm-uaccess.h > @@ -0,0 +1,65 @@ > +#ifndef __ASM_ASM_UACCESS_H > +#define __ASM_ASM_UACCESS_H > + > +#include <asm/alternative.h> > +#include <asm/kernel-pgtable.h> > +#include <asm/sysreg.h> > +#include <asm/assembler.h> > + > +/* > + * User access enabling/disabling macros. > + */ > +#ifdef CONFIG_ARM64_SW_TTBR0_PAN > + .macro __uaccess_ttbr0_disable, tmp1 > + mrs \tmp1, ttbr1_el1 // swapper_pg_dir > + add \tmp1, \tmp1, #SWAPPER_DIR_SIZE // reserved_ttbr0 at the end of swapper_pg_dir > + msr ttbr0_el1, \tmp1 // set reserved TTBR0_EL1 > + isb > + .endm > + > + .macro __uaccess_ttbr0_enable, tmp1 > + get_thread_info \tmp1 > + ldr \tmp1, [\tmp1, #TSK_TI_TTBR0] // load saved TTBR0_EL1 > + msr ttbr0_el1, \tmp1 // set the non-PAN TTBR0_EL1 > + isb > + .endm > + > + .macro uaccess_ttbr0_disable, tmp1 > +alternative_if_not ARM64_HAS_PAN > + __uaccess_ttbr0_disable \tmp1 > +alternative_else_nop_endif > + .endm > + > + .macro uaccess_ttbr0_enable, tmp1, tmp2 > +alternative_if_not ARM64_HAS_PAN > + save_and_disable_irq \tmp2 // avoid preemption > + __uaccess_ttbr0_enable \tmp1 > + restore_irq \tmp2 > +alternative_else_nop_endif > + .endm > +#else > + .macro uaccess_ttbr0_disable, tmp1 > + .endm > + > + .macro uaccess_ttbr0_enable, tmp1, tmp2 > + .endm > +#endif > + > +/* > + * These macros are no-ops when UAO is present. > + */ > + .macro uaccess_disable_not_uao, tmp1 > + uaccess_ttbr0_disable \tmp1 > +alternative_if ARM64_ALT_PAN_NOT_UAO > + SET_PSTATE_PAN(1) > +alternative_else_nop_endif > + .endm > + > + .macro uaccess_enable_not_uao, tmp1, tmp2 > + uaccess_ttbr0_enable \tmp1, \tmp2 > +alternative_if ARM64_ALT_PAN_NOT_UAO > + SET_PSTATE_PAN(0) > +alternative_else_nop_endif > + .endm > + > +#endif > diff --git a/arch/arm64/include/asm/uaccess.h b/arch/arm64/include/asm/uaccess.h > index d26750ca6e06..46da3ea638bb 100644 > --- a/arch/arm64/include/asm/uaccess.h > +++ b/arch/arm64/include/asm/uaccess.h > @@ -22,8 +22,6 @@ > #include <asm/kernel-pgtable.h> > #include <asm/sysreg.h> > > -#ifndef __ASSEMBLY__ > - > /* > * User space memory access functions > */ > @@ -424,66 +422,4 @@ extern long strncpy_from_user(char *dest, const char __user *src, long count); > extern __must_check long strlen_user(const char __user *str); > extern __must_check long strnlen_user(const char __user *str, long n); > > -#else /* __ASSEMBLY__ */ > - > -#include <asm/assembler.h> > - > -/* > - * User access enabling/disabling macros. > - */ > -#ifdef CONFIG_ARM64_SW_TTBR0_PAN > - .macro __uaccess_ttbr0_disable, tmp1 > - mrs \tmp1, ttbr1_el1 // swapper_pg_dir > - add \tmp1, \tmp1, #SWAPPER_DIR_SIZE // reserved_ttbr0 at the end of swapper_pg_dir > - msr ttbr0_el1, \tmp1 // set reserved TTBR0_EL1 > - isb > - .endm > - > - .macro __uaccess_ttbr0_enable, tmp1 > - get_thread_info \tmp1 > - ldr \tmp1, [\tmp1, #TSK_TI_TTBR0] // load saved TTBR0_EL1 > - msr ttbr0_el1, \tmp1 // set the non-PAN TTBR0_EL1 > - isb > - .endm > - > - .macro uaccess_ttbr0_disable, tmp1 > -alternative_if_not ARM64_HAS_PAN > - __uaccess_ttbr0_disable \tmp1 > -alternative_else_nop_endif > - .endm > - > - .macro uaccess_ttbr0_enable, tmp1, tmp2 > -alternative_if_not ARM64_HAS_PAN > - save_and_disable_irq \tmp2 // avoid preemption > - __uaccess_ttbr0_enable \tmp1 > - restore_irq \tmp2 > -alternative_else_nop_endif > - .endm > -#else > - .macro uaccess_ttbr0_disable, tmp1 > - .endm > - > - .macro uaccess_ttbr0_enable, tmp1, tmp2 > - .endm > -#endif > - > -/* > - * These macros are no-ops when UAO is present. > - */ > - .macro uaccess_disable_not_uao, tmp1 > - uaccess_ttbr0_disable \tmp1 > -alternative_if ARM64_ALT_PAN_NOT_UAO > - SET_PSTATE_PAN(1) > -alternative_else_nop_endif > - .endm > - > - .macro uaccess_enable_not_uao, tmp1, tmp2 > - uaccess_ttbr0_enable \tmp1, \tmp2 > -alternative_if ARM64_ALT_PAN_NOT_UAO > - SET_PSTATE_PAN(0) > -alternative_else_nop_endif > - .endm > - > -#endif /* __ASSEMBLY__ */ > - > #endif /* __ASM_UACCESS_H */ I think we need to remove the split and keep it unchanged, just add the change below. Thanks Hanjun > diff --git a/arch/arm64/lib/clear_user.S b/arch/arm64/lib/clear_user.S > index add4a1334085..e88fb99c1561 100644 > --- a/arch/arm64/lib/clear_user.S > +++ b/arch/arm64/lib/clear_user.S > @@ -17,7 +17,7 @@ > */ > #include <linux/linkage.h> > > -#include <linux/uaccess.h> > +#include <asm/asm-uaccess.h> > > .text > > diff --git a/arch/arm64/lib/copy_from_user.S b/arch/arm64/lib/copy_from_user.S > index fd6cd05593f9..4b5d826895ff 100644 > --- a/arch/arm64/lib/copy_from_user.S > +++ b/arch/arm64/lib/copy_from_user.S > @@ -17,7 +17,7 @@ > #include <linux/linkage.h> > > #include <asm/cache.h> > -#include <linux/uaccess.h> > +#include <asm/asm-uaccess.h> > > /* > * Copy from user space to a kernel buffer (alignment handled by the hardware) > diff --git a/arch/arm64/lib/copy_in_user.S b/arch/arm64/lib/copy_in_user.S > index d828540ded6f..47184c3a97da 100644 > --- a/arch/arm64/lib/copy_in_user.S > +++ b/arch/arm64/lib/copy_in_user.S > @@ -19,7 +19,7 @@ > #include <linux/linkage.h> > > #include <asm/cache.h> > -#include <linux/uaccess.h> > +#include <asm/asm-uaccess.h> > > /* > * Copy from user space to user space (alignment handled by the hardware) > diff --git a/arch/arm64/lib/copy_to_user.S b/arch/arm64/lib/copy_to_user.S > index 3e6ae2663b82..351f0766f7a6 100644 > --- a/arch/arm64/lib/copy_to_user.S > +++ b/arch/arm64/lib/copy_to_user.S > @@ -17,7 +17,7 @@ > #include <linux/linkage.h> > > #include <asm/cache.h> > -#include <linux/uaccess.h> > +#include <asm/asm-uaccess.h> > > /* > * Copy to user space from a kernel buffer (alignment handled by the hardware) > diff --git a/arch/arm64/mm/cache.S b/arch/arm64/mm/cache.S > index 17f422a4dc55..83c27b6e6dca 100644 > --- a/arch/arm64/mm/cache.S > +++ b/arch/arm64/mm/cache.S > @@ -23,7 +23,7 @@ > #include <asm/assembler.h> > #include <asm/cpufeature.h> > #include <asm/alternative.h> > -#include <linux/uaccess.h> > +#include <asm/asm-uaccess.h> > > /* > * flush_icache_range(start,end) > diff --git a/arch/arm64/xen/hypercall.S b/arch/arm64/xen/hypercall.S > index 47cf3f9d89ff..947830a459d2 100644 > --- a/arch/arm64/xen/hypercall.S > +++ b/arch/arm64/xen/hypercall.S > @@ -49,7 +49,7 @@ > > #include <linux/linkage.h> > #include <asm/assembler.h> > -#include <linux/uaccess.h> > +#include <asm/asm-uaccess.h> > #include <xen/interface/xen.h> > > > > . > ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: Linux 4.10-rc1 2016-12-26 9:45 ` Hanjun Guo @ 2016-12-26 14:23 ` Al Viro 2016-12-26 15:14 ` Al Viro 0 siblings, 1 reply; 10+ messages in thread From: Al Viro @ 2016-12-26 14:23 UTC (permalink / raw) To: Hanjun Guo Cc: Kefeng Wang, Linus Torvalds, Linux Kernel Mailing List, Will Deacon, Catalin Marinas On Mon, Dec 26, 2016 at 05:45:10PM +0800, Hanjun Guo wrote: > On 2016/12/26 17:18, Al Viro wrote: > > On Mon, Dec 26, 2016 at 05:05:37PM +0800, Kefeng Wang wrote: > >> It looks like we need revert the changes from assembly files. > > I tested Kefeng's patch and works. more comments below. > > > Better yet, split the damn thing in two and include the asm-only part. > > split will cause other places for building errors, because there is no > > -#ifndef __ASSEMBLY__ Huh? It's included only from assembler files, so what would use the other parts? ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: Linux 4.10-rc1 2016-12-26 14:23 ` Al Viro @ 2016-12-26 15:14 ` Al Viro 0 siblings, 0 replies; 10+ messages in thread From: Al Viro @ 2016-12-26 15:14 UTC (permalink / raw) To: Hanjun Guo Cc: Kefeng Wang, Linus Torvalds, Linux Kernel Mailing List, Will Deacon, Catalin Marinas On Mon, Dec 26, 2016 at 02:23:43PM +0000, Al Viro wrote: > On Mon, Dec 26, 2016 at 05:45:10PM +0800, Hanjun Guo wrote: > > On 2016/12/26 17:18, Al Viro wrote: > > > On Mon, Dec 26, 2016 at 05:05:37PM +0800, Kefeng Wang wrote: > > >> It looks like we need revert the changes from assembly files. > > > > I tested Kefeng's patch and works. more comments below. > > > > > Better yet, split the damn thing in two and include the asm-only part. > > > > split will cause other places for building errors, because there is no > > > > -#ifndef __ASSEMBLY__ > > Huh? It's included only from assembler files, so what would use the other > parts? FWIW, my arguments for splitting it are * asm and non-asm parts have almost no overlap - only uaccess_{en,dis}able_not_uao (as asm macro and static inline resp.), but that's it. It's not as if there had been arseloads of constants shared between C and assembler, etc. * having no asm/uaccess.h includes left allows to consolidate stuff into linux/uaccess.h; sure, in this case the stuff getting moved there would be under ifndef anyway, but "no includes outside of linux/uaccess.h" is easier to verify than "no includes outside of linux/uaccess.h and arch/arm64/.../*.S" I can live with reverting those several includes to asm/uaccess.h (all interesting stuff is under that ifndef), but I think splitting the asm part away would be cleaner. PS: if that variant does cause any build errors, I would very much like to see .config. Hanjun, could you post one that is triggering those? ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: Linux 4.10-rc1 2016-12-26 8:38 ` Hanjun Guo 2016-12-26 9:05 ` Kefeng Wang @ 2016-12-26 9:15 ` Al Viro 1 sibling, 0 replies; 10+ messages in thread From: Al Viro @ 2016-12-26 9:15 UTC (permalink / raw) To: Hanjun Guo Cc: Linus Torvalds, Linux Kernel Mailing List, yankejian, Catalin Marinas On Mon, Dec 26, 2016 at 04:38:13PM +0800, Hanjun Guo wrote: > ./include/asm-generic/atomic-long.h:23: Error: unknown mnemonic `typedef' -- `typedef atomic64_t atomic_long_t' *blink* OK, I see what has happened here - it's "arm64: Factor out PAN enabling/disabling into separate uaccess_* macros" that went in during this window, adding an include of asm/uaccess.h into several assembler files. AFAICS, the easiest way to deal with that is to separate for-asm parts of uaccess.h into a new header and use _that_ from *.S, as in (completely untested) diff below. Seeing that there's basically no overlap between the __ASSEMBLY__ and normal parts of arm64 uaccess.h, that would seem to be a fairly obvious solution... Objections? diff --git a/arch/arm64/include/asm/asm-uaccess.h b/arch/arm64/include/asm/asm-uaccess.h new file mode 100644 index 000000000000..df411f3e083c --- /dev/null +++ b/arch/arm64/include/asm/asm-uaccess.h @@ -0,0 +1,65 @@ +#ifndef __ASM_ASM_UACCESS_H +#define __ASM_ASM_UACCESS_H + +#include <asm/alternative.h> +#include <asm/kernel-pgtable.h> +#include <asm/sysreg.h> +#include <asm/assembler.h> + +/* + * User access enabling/disabling macros. + */ +#ifdef CONFIG_ARM64_SW_TTBR0_PAN + .macro __uaccess_ttbr0_disable, tmp1 + mrs \tmp1, ttbr1_el1 // swapper_pg_dir + add \tmp1, \tmp1, #SWAPPER_DIR_SIZE // reserved_ttbr0 at the end of swapper_pg_dir + msr ttbr0_el1, \tmp1 // set reserved TTBR0_EL1 + isb + .endm + + .macro __uaccess_ttbr0_enable, tmp1 + get_thread_info \tmp1 + ldr \tmp1, [\tmp1, #TSK_TI_TTBR0] // load saved TTBR0_EL1 + msr ttbr0_el1, \tmp1 // set the non-PAN TTBR0_EL1 + isb + .endm + + .macro uaccess_ttbr0_disable, tmp1 +alternative_if_not ARM64_HAS_PAN + __uaccess_ttbr0_disable \tmp1 +alternative_else_nop_endif + .endm + + .macro uaccess_ttbr0_enable, tmp1, tmp2 +alternative_if_not ARM64_HAS_PAN + save_and_disable_irq \tmp2 // avoid preemption + __uaccess_ttbr0_enable \tmp1 + restore_irq \tmp2 +alternative_else_nop_endif + .endm +#else + .macro uaccess_ttbr0_disable, tmp1 + .endm + + .macro uaccess_ttbr0_enable, tmp1, tmp2 + .endm +#endif + +/* + * These macros are no-ops when UAO is present. + */ + .macro uaccess_disable_not_uao, tmp1 + uaccess_ttbr0_disable \tmp1 +alternative_if ARM64_ALT_PAN_NOT_UAO + SET_PSTATE_PAN(1) +alternative_else_nop_endif + .endm + + .macro uaccess_enable_not_uao, tmp1, tmp2 + uaccess_ttbr0_enable \tmp1, \tmp2 +alternative_if ARM64_ALT_PAN_NOT_UAO + SET_PSTATE_PAN(0) +alternative_else_nop_endif + .endm + +#endif diff --git a/arch/arm64/include/asm/uaccess.h b/arch/arm64/include/asm/uaccess.h index d26750ca6e06..46da3ea638bb 100644 --- a/arch/arm64/include/asm/uaccess.h +++ b/arch/arm64/include/asm/uaccess.h @@ -22,8 +22,6 @@ #include <asm/kernel-pgtable.h> #include <asm/sysreg.h> -#ifndef __ASSEMBLY__ - /* * User space memory access functions */ @@ -424,66 +422,4 @@ extern long strncpy_from_user(char *dest, const char __user *src, long count); extern __must_check long strlen_user(const char __user *str); extern __must_check long strnlen_user(const char __user *str, long n); -#else /* __ASSEMBLY__ */ - -#include <asm/assembler.h> - -/* - * User access enabling/disabling macros. - */ -#ifdef CONFIG_ARM64_SW_TTBR0_PAN - .macro __uaccess_ttbr0_disable, tmp1 - mrs \tmp1, ttbr1_el1 // swapper_pg_dir - add \tmp1, \tmp1, #SWAPPER_DIR_SIZE // reserved_ttbr0 at the end of swapper_pg_dir - msr ttbr0_el1, \tmp1 // set reserved TTBR0_EL1 - isb - .endm - - .macro __uaccess_ttbr0_enable, tmp1 - get_thread_info \tmp1 - ldr \tmp1, [\tmp1, #TSK_TI_TTBR0] // load saved TTBR0_EL1 - msr ttbr0_el1, \tmp1 // set the non-PAN TTBR0_EL1 - isb - .endm - - .macro uaccess_ttbr0_disable, tmp1 -alternative_if_not ARM64_HAS_PAN - __uaccess_ttbr0_disable \tmp1 -alternative_else_nop_endif - .endm - - .macro uaccess_ttbr0_enable, tmp1, tmp2 -alternative_if_not ARM64_HAS_PAN - save_and_disable_irq \tmp2 // avoid preemption - __uaccess_ttbr0_enable \tmp1 - restore_irq \tmp2 -alternative_else_nop_endif - .endm -#else - .macro uaccess_ttbr0_disable, tmp1 - .endm - - .macro uaccess_ttbr0_enable, tmp1, tmp2 - .endm -#endif - -/* - * These macros are no-ops when UAO is present. - */ - .macro uaccess_disable_not_uao, tmp1 - uaccess_ttbr0_disable \tmp1 -alternative_if ARM64_ALT_PAN_NOT_UAO - SET_PSTATE_PAN(1) -alternative_else_nop_endif - .endm - - .macro uaccess_enable_not_uao, tmp1, tmp2 - uaccess_ttbr0_enable \tmp1, \tmp2 -alternative_if ARM64_ALT_PAN_NOT_UAO - SET_PSTATE_PAN(0) -alternative_else_nop_endif - .endm - -#endif /* __ASSEMBLY__ */ - #endif /* __ASM_UACCESS_H */ diff --git a/arch/arm64/lib/clear_user.S b/arch/arm64/lib/clear_user.S index add4a1334085..e88fb99c1561 100644 --- a/arch/arm64/lib/clear_user.S +++ b/arch/arm64/lib/clear_user.S @@ -17,7 +17,7 @@ */ #include <linux/linkage.h> -#include <linux/uaccess.h> +#include <asm/asm-uaccess.h> .text diff --git a/arch/arm64/lib/copy_from_user.S b/arch/arm64/lib/copy_from_user.S index fd6cd05593f9..4b5d826895ff 100644 --- a/arch/arm64/lib/copy_from_user.S +++ b/arch/arm64/lib/copy_from_user.S @@ -17,7 +17,7 @@ #include <linux/linkage.h> #include <asm/cache.h> -#include <linux/uaccess.h> +#include <asm/asm-uaccess.h> /* * Copy from user space to a kernel buffer (alignment handled by the hardware) diff --git a/arch/arm64/lib/copy_in_user.S b/arch/arm64/lib/copy_in_user.S index d828540ded6f..47184c3a97da 100644 --- a/arch/arm64/lib/copy_in_user.S +++ b/arch/arm64/lib/copy_in_user.S @@ -19,7 +19,7 @@ #include <linux/linkage.h> #include <asm/cache.h> -#include <linux/uaccess.h> +#include <asm/asm-uaccess.h> /* * Copy from user space to user space (alignment handled by the hardware) diff --git a/arch/arm64/lib/copy_to_user.S b/arch/arm64/lib/copy_to_user.S index 3e6ae2663b82..351f0766f7a6 100644 --- a/arch/arm64/lib/copy_to_user.S +++ b/arch/arm64/lib/copy_to_user.S @@ -17,7 +17,7 @@ #include <linux/linkage.h> #include <asm/cache.h> -#include <linux/uaccess.h> +#include <asm/asm-uaccess.h> /* * Copy to user space from a kernel buffer (alignment handled by the hardware) ^ permalink raw reply related [flat|nested] 10+ messages in thread
* linux-next: stats (Was: Linux 4.10-rc1) 2016-12-26 0:41 Linux 4.10-rc1 Linus Torvalds 2016-12-26 8:38 ` Hanjun Guo @ 2016-12-26 12:17 ` Stephen Rothwell 1 sibling, 0 replies; 10+ messages in thread From: Stephen Rothwell @ 2016-12-26 12:17 UTC (permalink / raw) To: linux-next; +Cc: Linus Torvalds, Linux Kernel Mailing List, Steven Miao Hi All, On Sun, 25 Dec 2016 16:41:46 -0800 Linus Torvalds <torvalds@linux-foundation.org> wrote: > > It's Christmas Day, and it's two weeks since the merge window opened. > Thus, the merge window is now closed. As usual, the executive friendly graph is at http://neuling.org/linux-next-size.html :-) (No merge commits counted, next-20161212 was the first linux-next after the merge window opened.) Commits in v4.10-rc1 (relative to v4.9): 11455 Commits in next-20161212: 10625 Commits with the same SHA1: 9927 Commits with the same patch_id: 437 (1) Commits with the same subject line: 25 (1) (1) not counting those in the lines above. So commits in -rc1 that were in next-20161212: 10389 90% Some breakdown of the list of extra commits (relative to next-20161212) in -rc1: Top ten first word of commit summary: 153 ib 64 drm 46 x86 38 i40iw 34 net 33 s390 33 input 30 ubifs 27 perf 26 btrfs Top ten authors: 32 tglx@linutronix.de 27 richard@nod.at 26 bart.vanassche@sandisk.com 22 henry.orosco@intel.com 20 leon@kernel.org 19 jeffm@suse.com 18 mst@redhat.com 18 idryomov@gmail.com 15 trond.myklebust@primarydata.com 13 vinod.koul@intel.com Top ten commiters: 225 dledford@redhat.com 115 davem@davemloft.net 63 tglx@linutronix.de 34 torvalds@linux-foundation.org 34 mst@redhat.com 33 schwidefsky@de.ibm.com 33 acme@redhat.com 32 idryomov@gmail.com 32 dmitry.torokhov@gmail.com 31 richard@nod.at There are also 236 commits in next-20161212 that didn't make it into v4.10-rc1. Top ten first word of commit summary: 24 arm 21 rcu 9 keys 9 coresight 9 btrfs 8 vfs 8 torture 8 thermal 6 mm 6 bf609 Top ten authors: 24 paulmck@linux.vnet.ibm.com 15 mszeredi@redhat.com 14 akpm@linux-foundation.org 11 olof@lixom.net 11 dhowells@redhat.com 10 viro@zeniv.linux.org.uk 8 wangxg.fnst@cn.fujitsu.com 6 vitalywool@gmail.com 6 colin.king@canonical.com 5 sonic.zhang@analog.com Some of Andrew's patches are fixes for other patches in his tree (and have been merged into those). Top ten commiters: 39 sfr@canb.auug.org.au 36 paulmck@linux.vnet.ibm.com 16 steven@ubuntu-virtualbox.(none) 15 mszeredi@redhat.com 13 olof@lixom.net 11 dhowells@redhat.com 10 viro@zeniv.linux.org.uk 10 edubezval@gmail.com 9 mathieu.poirier@linaro.org 9 dsterba@suse.com Those commits by me are from the quilt series (mainly Andrew's mmotm tree). Turns out that steven@ubuntu-virtualbox.(none) is Steven Miao <realmz6@gmail.com> and all those commits are old stuff left over in the blackfin tree since March, 2016 - it would be nice if they were cleaned up. -- Cheers, Stephen Rothwell ^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2016-12-26 15:14 UTC | newest] Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2016-12-26 0:41 Linux 4.10-rc1 Linus Torvalds 2016-12-26 8:38 ` Hanjun Guo 2016-12-26 9:05 ` Kefeng Wang 2016-12-26 9:18 ` Al Viro 2016-12-26 9:38 ` Hanjun Guo 2016-12-26 9:45 ` Hanjun Guo 2016-12-26 14:23 ` Al Viro 2016-12-26 15:14 ` Al Viro 2016-12-26 9:15 ` Al Viro 2016-12-26 12:17 ` linux-next: stats (Was: Linux 4.10-rc1) Stephen Rothwell
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).