1. 11 Jul, 2018 1 commit
    • Vineet Gupta's avatar
      ARC: mm: allow mprotect to make stack mappings executable · 93312b6d
      Vineet Gupta authored
      mprotect(EXEC) was failing for stack mappings as default vm flags was
      missing MAYEXEC.
      
      This was triggered by glibc test suite nptl/tst-execstack testcase
      
      What is surprising is that despite running LTP for years on, we didn't
      catch this issue as it lacks a directed test case.
      
      gcc dejagnu tests with nested functions also requiring exec stack work
      fine though because they rely on the GNU_STACK segment spit out by
      compiler and handled in kernel elf loader.
      
      This glibc case is different as the stack is non exec to begin with and
      a dlopen of shared lib with GNU_STACK segment triggers the exec stack
      proceedings using a mprotect(PROT_EXEC) which was broken.
      
      CC: stable@vger.kernel.org
      Signed-off-by: default avatarVineet Gupta <vgupta@synopsys.com>
      93312b6d
  2. 09 Jul, 2018 6 commits
    • Alexey Brodkin's avatar
      ARC: Fix CONFIG_SWAP · 6e376114
      Alexey Brodkin authored
      swap was broken on ARC due to silly copy-paste issue.
      
      We encode offset from swapcache page in __swp_entry() as (off << 13) but
      were not decoding back in __swp_offset() as (off >> 13) - it was still
      (off << 13).
      
      This finally fixes swap usage on ARC.
      
      | # mkswap /dev/sda2
      |
      | # swapon -a -e /dev/sda2
      | Adding 500728k swap on /dev/sda2.  Priority:-2 extents:1 across:500728k
      |
      | # free
      |              total       used       free     shared    buffers     cached
      | Mem:        765104      13456     751648       4736          8       4736
      | -/+ buffers/cache:       8712     756392
      | Swap:       500728          0     500728
      
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarAlexey Brodkin <abrodkin@synopsys.com>
      Signed-off-by: default avatarVineet Gupta <vgupta@synopsys.com>
      6e376114
    • Vineet Gupta's avatar
      ARC: [arcompact] entry.S: minor code movement · ca1147fc
      Vineet Gupta authored
      This is a non functional code changw, which moves r25 restore from macro
      into the caller of macro
      Signed-off-by: default avatarVineet Gupta <vgupta@synopsys.com>
      ca1147fc
    • Alexey Brodkin's avatar
      ARC: configs: Remove CONFIG_INITRAMFS_SOURCE from defconfigs · 64234961
      Alexey Brodkin authored
      We used to have pre-set CONFIG_INITRAMFS_SOURCE with local path
      to intramfs in ARC defconfigs. This was quite convenient for
      in-house development but not that convenient for newcomers
      who obviusly don't have folders like "arc_initramfs" next to
      the Linux source tree. Which leads to quite surprising failure
      of defconfig building:
      ------------------------------->8-----------------------------
        ../scripts/gen_initramfs_list.sh: Cannot open '../../arc_initramfs_hs/'
      ../usr/Makefile:57: recipe for target 'usr/initramfs_data.cpio.gz' failed
      make[2]: *** [usr/initramfs_data.cpio.gz] Error 1
      ------------------------------->8-----------------------------
      
      So now when more and more people start to deal with our defconfigs
      let's make their life easier with removal of CONFIG_INITRAMFS_SOURCE.
      Signed-off-by: default avatarAlexey Brodkin <abrodkin@synopsys.com>
      Cc: Kevin Hilman <khilman@baylibre.com>
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarAlexey Brodkin <abrodkin@synopsys.com>
      Signed-off-by: default avatarVineet Gupta <vgupta@synopsys.com>
      64234961
    • Anders Roxell's avatar
      ARC: configs: remove no longer needed CONFIG_DEVPTS_MULTIPLE_INSTANCES · 29c2068f
      Anders Roxell authored
      Since commit eedf265a ("devpts: Make each mount of devpts an
      independent filesystem.") CONFIG_DEVPTS_MULTIPLE_INSTANCES isn't needed
      in the defconfig anymore.
      Signed-off-by: default avatarAnders Roxell <anders.roxell@linaro.org>
      Signed-off-by: default avatarVineet Gupta <vgupta@synopsys.com>
      29c2068f
    • Peter Zijlstra's avatar
      ARC: Improve cmpxchg syscall implementation · e8708786
      Peter Zijlstra authored
      This is used in configs lacking hardware atomics to emulate atomic r-m-w
      for user space, implemented by disabling preemption in kernel.
      
      However there are issues in current implementation:
      
      1. Process not terminated if invalid user pointer passed:
         i.e. __get_user() failed.
      
      2. The reason for this patch was __put_user() failure not being handled
         either, specifically for the COW break scenario.
         The zero page is initially wired up and read from __get_user()
         succeeds. A subsequent write by __put_user() induces a
         Protection Violation, but COW can't finish as Linux page fault
         handler is disabled due to preempt disable.
         And what's worse is we silently return the stale value to user space.
         Fix this specific case by re-enabling preemption and explicitly
         fixing up the fault and retrying the whole sequence over.
      
      Cc: Max Filippov <jcmvbkbc@gmail.com>
      Cc: linux-arch@vger.kernel.org
      Signed-off-by: default avatarAlexey Brodkin <abrodkin@synopsys.com>
      Signed-off-by: default avatarPeter Zijlstra <peterz@infradead.org>
      Signed-off-by: default avatarVineet Gupta <vgupta@synopsys.com>
      [vgupta: rewrote the changelog]
      e8708786
    • Gustavo Pimentel's avatar
      ARC: [plat-hsdk]: Configure APB GPIO controller on ARC HSDK platform · ec58ba16
      Gustavo Pimentel authored
      In case of HSDK we have intermediate INTC in for of DW APB GPIO controller
      which is used as a de-bounce logic for interrupt wires that come from
      outside the board.
      
      We cannot use existing "irq-dw-apb-ictl" driver here because all input
      lines are routed to corresponding output lines but not muxed into one
      line (this is configured in RTL and we cannot change this in software).
      
      But even if we add such a feature to "irq-dw-apb-ictl" driver that won't
      benefit us as higher-level INTC (in case of HSDK it is IDU) anyways has
      per-input control so adding fully-controller intermediate INTC will only
      bring some overhead on interrupt processing but no other benefits.
      
      Thus we just do one-time configuration of DW APB GPIO controller and
      forget about it.
      
      Based on implementation available on arch/arc/plat-axs10x/axs10x.c file.
      Acked-by: default avatarAlexey Brodkin <abrodkin@synopsys.com>
      Signed-off-by: default avatarGustavo Pimentel <gustavo.pimentel@synopsys.com>
      Signed-off-by: default avatarVineet Gupta <vgupta@synopsys.com>
      ec58ba16
  3. 21 Jun, 2018 1 commit
  4. 20 Jun, 2018 1 commit
  5. 14 Jun, 2018 1 commit
    • Alexey Brodkin's avatar
      ARC: Explicitly add -mmedium-calls to CFLAGS · 74c11e30
      Alexey Brodkin authored
      GCC built for arc*-*-linux has "-mmedium-calls" implicitly enabled by default
      thus we don't see any problems during Linux kernel compilation.
      ----------------------------->8------------------------
      arc-linux-gcc -mcpu=arc700 -Q --help=target | grep calls
        -mlong-calls                          [disabled]
        -mmedium-calls                        [enabled]
      ----------------------------->8------------------------
      
      But if we try to use so-called Elf32 toolchain with GCC configured for
      arc*-*-elf* then we'd see the following failure:
      ----------------------------->8------------------------
      init/do_mounts.o: In function 'init_rootfs':
      do_mounts.c:(.init.text+0x108): relocation truncated to fit: R_ARC_S21W_PCREL
      against symbol 'unregister_filesystem' defined in .text section in fs/filesystems.o
      
      arc-elf32-ld: final link failed: Symbol needs debug section which does not exist
      make: *** [vmlinux] Error 1
      ----------------------------->8------------------------
      
      That happens because neither "-mmedium-calls" nor "-mlong-calls" are enabled in
      Elf32 GCC:
      ----------------------------->8------------------------
      arc-elf32-gcc -mcpu=arc700 -Q --help=target | grep calls
        -mlong-calls                          [disabled]
        -mmedium-calls                        [disabled]
      ----------------------------->8------------------------
      
      Now to make it possible to use Elf32 toolchain for building Linux kernel
      we're explicitly add "-mmedium-calls" to CFLAGS.
      
      And since we add "-mmedium-calls" to the global CFLAGS there's no point in
      having per-file copies thus removing them.
      Signed-off-by: default avatarAlexey Brodkin <abrodkin@synopsys.com>
      Signed-off-by: default avatarVineet Gupta <vgupta@synopsys.com>
      74c11e30
  6. 03 Jun, 2018 6 commits
    • Linus Torvalds's avatar
      Linux 4.17 · 29dcea88
      Linus Torvalds authored
      29dcea88
    • Linus Torvalds's avatar
      Merge branch 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs · 325e14f9
      Linus Torvalds authored
      Pull vfs fixes from Al Viro.
      
       - fix io_destroy()/aio_complete() race
      
       - the vfs_open() change to get rid of open_check_o_direct() boilerplate
         was nice, but buggy. Al has a patch avoiding a revert, but that's
         definitely not a last-day fodder, so for now revert it is...
      
      * 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
        Revert "fs: fold open_check_o_direct into do_dentry_open"
        fix io_destroy()/aio_complete() race
      325e14f9
    • Al Viro's avatar
      Revert "fs: fold open_check_o_direct into do_dentry_open" · af04fadc
      Al Viro authored
      This reverts commit cab64df1.
      
      Having vfs_open() in some cases drop the reference to
      struct file combined with
      
      	error = vfs_open(path, f, cred);
      	if (error) {
      		put_filp(f);
      		return ERR_PTR(error);
      	}
      	return f;
      
      is flat-out wrong.  It used to be
      
      		error = vfs_open(path, f, cred);
      		if (!error) {
      			/* from now on we need fput() to dispose of f */
      			error = open_check_o_direct(f);
      			if (error) {
      				fput(f);
      				f = ERR_PTR(error);
      			}
      		} else {
      			put_filp(f);
      			f = ERR_PTR(error);
      		}
      
      and sure, having that open_check_o_direct() boilerplate gotten rid of is
      nice, but not that way...
      
      Worse, another call chain (via finish_open()) is FUBAR now wrt
      FILE_OPENED handling - in that case we get error returned, with file
      already hit by fput() *AND* FILE_OPENED not set.  Guess what happens in
      path_openat(), when it hits
      
      	if (!(opened & FILE_OPENED)) {
      		BUG_ON(!error);
      		put_filp(file);
      	}
      
      The root cause of all that crap is that the callers of do_dentry_open()
      have no way to tell which way did it fail; while that could be fixed up
      (by passing something like int *opened to do_dentry_open() and have it
      marked if we'd called ->open()), it's probably much too late in the
      cycle to do so right now.
      Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      af04fadc
    • Linus Torvalds's avatar
      Merge branch 'sched-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 874cd339
      Linus Torvalds authored
      Pull scheduler fixes from Thomas Gleixner:
      
       - two patches addressing the problem that the scheduler allows under
         certain conditions user space tasks to be scheduled on CPUs which are
         not yet fully booted which causes a few subtle and hard to debug
         issue
      
       - add a missing runqueue clock update in the deadline scheduler which
         triggers a warning under certain circumstances
      
       - fix a silly typo in the scheduler header file
      
      * 'sched-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        sched/headers: Fix typo
        sched/deadline: Fix missing clock update
        sched/core: Require cpu_active() in select_task_rq(), for user tasks
        sched/core: Fix rules for running on online && !active CPUs
      874cd339
    • Linus Torvalds's avatar
      Merge branch 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 26bdace7
      Linus Torvalds authored
      Pull perf tooling fixes from Thomas Gleixner:
      
       - fix 'perf test Session topology' segfault on s390 (Thomas Richter)
      
       - fix NULL return handling in bpf__prepare_load() (YueHaibing)
      
       - fix indexing on Coresight ETM packet queue decoder (Mathieu Poirier)
      
       - fix perf.data format description of NRCPUS header (Arnaldo Carvalho
         de Melo)
      
       - update perf.data documentation section on cpu topology
      
       - handle uncore event aliases in small groups properly (Kan Liang)
      
       - add missing perf_sample.addr into python sample dictionary (Leo Yan)
      
      * 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        perf tools: Fix perf.data format description of NRCPUS header
        perf script python: Add addr into perf sample dict
        perf data: Update documentation section on cpu topology
        perf cs-etm: Fix indexing for decoder packet queue
        perf bpf: Fix NULL return handling in bpf__prepare_load()
        perf test: "Session topology" dumps core on s390
        perf parse-events: Handle uncore event aliases in small groups properly
      26bdace7
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net · 918fe1b3
      Linus Torvalds authored
      Pull networking fixes from David Miller:
      
       1) Infinite loop in _decode_session6(), from Eric Dumazet.
      
       2) Pass correct argument to nla_strlcpy() in netfilter, also from Eric
          Dumazet.
      
       3) Out of bounds memory access in ipv6 srh code, from Mathieu Xhonneux.
      
       4) NULL deref in XDP_REDIRECT handling of tun driver, from Toshiaki
          Makita.
      
       5) Incorrect idr release in cls_flower, from Paul Blakey.
      
       6) Probe error handling fix in davinci_emac, from Dan Carpenter.
      
       7) Memory leak in XPS configuration, from Alexander Duyck.
      
       8) Use after free with cloned sockets in kcm, from Kirill Tkhai.
      
       9) MTU handling fixes fo ip_tunnel and ip6_tunnel, from Nicolas
          Dichtel.
      
      10) Fix UAPI hole in bpf data structure for 32-bit compat applications,
          from Daniel Borkmann.
      
      * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (33 commits)
        bpf: fix uapi hole for 32 bit compat applications
        net: usb: cdc_mbim: add flag FLAG_SEND_ZLP
        ip6_tunnel: remove magic mtu value 0xFFF8
        ip_tunnel: restore binding to ifaces with a large mtu
        net: dsa: b53: Add BCM5389 support
        kcm: Fix use-after-free caused by clonned sockets
        net-sysfs: Fix memory leak in XPS configuration
        ixgbe: fix parsing of TC actions for HW offload
        net: ethernet: davinci_emac: fix error handling in probe()
        net/ncsi: Fix array size in dumpit handler
        cls_flower: Fix incorrect idr release when failing to modify rule
        net/sonic: Use dma_mapping_error()
        xfrm Fix potential error pointer dereference in xfrm_bundle_create.
        vhost_net: flush batched heads before trying to busy polling
        tun: Fix NULL pointer dereference in XDP redirect
        be2net: Fix error detection logic for BE3
        net: qmi_wwan: Add Netgear Aircard 779S
        mlxsw: spectrum: Forbid creation of VLAN 1 over port/LAG
        atm: zatm: fix memcmp casting
        iwlwifi: pcie: compare with number of IRQs requested for, not number of CPUs
        ...
      918fe1b3
  7. 02 Jun, 2018 15 commits
  8. 01 Jun, 2018 9 commits