1. 11 Aug, 2016 1 commit
    • Linus Torvalds's avatar
      Merge tag 'ceph-for-4.8-rc2' of https://github.com/ceph/ceph-client · 3b3ce01a
      Linus Torvalds authored
      Pull ceph fixes from Ilya Dryomov:
       "A patch for a NULL dereference bug introduced in 4.8-rc1 and a handful
        of static checker fixes"
      
      * tag 'ceph-for-4.8-rc2' of https://github.com/ceph/ceph-client:
        ceph: initialize pathbase in the !dentry case in encode_caps_cb()
        rbd: nuke the 32-bit pool id check
        rbd: destroy header_oloc in rbd_dev_release()
        ceph: fix null pointer dereference in ceph_flush_snaps()
        libceph: using kfree_rcu() to simplify the code
        libceph: make cancel_generic_request() static
        libceph: fix return value check in alloc_msg_with_page_vector()
      3b3ce01a
  2. 10 Aug, 2016 13 commits
  3. 09 Aug, 2016 17 commits
    • Linus Torvalds's avatar
      Revert "printk: create pr_<level> functions" · a0cba217
      Linus Torvalds authored
      This reverts commit 874f9c7d.
      
      Geert Uytterhoeven reports:
       "This change seems to have an (unintendent?) side-effect.
      
        Before, pr_*() calls without a trailing newline characters would be
        printed with a newline character appended, both on the console and in
        the output of the dmesg command.
      
        After this commit, no new line character is appended, and the output
        of the next pr_*() call of the same type may be appended, like in:
      
          - Truncating RAM at 0x0000000040000000-0x00000000c0000000 to -0x0000000070000000
          - Ignoring RAM at 0x0000000200000000-0x0000000240000000 (!CONFIG_HIGHMEM)
          + Truncating RAM at 0x0000000040000000-0x00000000c0000000 to -0x0000000070000000Ignoring RAM at 0x0000000200000000-0x0000000240000000 (!CONFIG_HIGHMEM)"
      
      Joe Perches says:
       "No, that is not intentional.
      
        The newline handling code inside vprintk_emit is a bit involved and
        for now I suggest a revert until this has all the same behavior as
        earlier"
      Reported-by: default avatarGeert Uytterhoeven <geert@linux-m68k.org>
      Requested-by: default avatarJoe Perches <joe@perches.com>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      a0cba217
    • Linus Torvalds's avatar
      Merge tag 'trace-v4.8-2' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace · 84bd8d33
      Linus Torvalds authored
      Pull tracing fix from Steven Rostedt:
       "Fix tick_stop tracepoint symbols for user export.
      
        Luiz Capitulino noticed that the tick_stop tracepoint wasn't being
        parsed properly by the tracing user space tools.
      
        This was due to the TRACE_DEFINE_ENUM() being set to a define, when it
        should have been set to the enum itself.  The define was of the MASK
        that used the BIT to shift.  The BIT was the enum and by adding that,
        everything gets converted nicely.  The MASK is still kept just in case
        it gets converted to an enum in the future"
      
      * tag 'trace-v4.8-2' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace:
        tracing: Fix tick_stop tracepoint symbols for user export
      84bd8d33
    • Linus Torvalds's avatar
      Merge tag 'gcc-plugin-infrastructure-v4.8-rc2' of... · b79f34d6
      Linus Torvalds authored
      Merge tag 'gcc-plugin-infrastructure-v4.8-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux
      
      Pull gcc plugin improvements from Kees Cook:
       "Several fixes/improvements for the gcc plugin infrastructure:
      
         - fix a problem with gcc plugins interfering with cc-option tests.
      
         - abort more gracefully when gcc plugin headers or compiler support
           is missing.
      
         - improve the gcc plugin rule generation to be more dynamic, pass
           arguments, and build from subdirectories"
      
      * tag 'gcc-plugin-infrastructure-v4.8-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux:
        gcc-plugins: Add support for plugin subdirectories
        gcc-plugins: Automate make rule generation
        gcc-plugins: Add support for passing plugin arguments
        gcc-plugins: abort builds cleanly when not supported
        kbuild: no gcc-plugins during cc-option tests
      b79f34d6
    • Linus Torvalds's avatar
      Merge tag 'platform-drivers-x86-v4.8-3' of... · e1d009ea
      Linus Torvalds authored
      Merge tag 'platform-drivers-x86-v4.8-3' of git://git.infradead.org/users/dvhart/linux-platform-drivers-x86
      
      Pull x86 platform driver update from Darren Hart:
       "dell-wmi: ignore battery remove/insert event"
      
      * tag 'platform-drivers-x86-v4.8-3' of git://git.infradead.org/users/dvhart/linux-platform-drivers-x86:
        dell-wmi: Ignore WMI event 0xe00e
      e1d009ea
    • Linus Torvalds's avatar
      Merge tag 'drm-fixes-for-4.8-rc2' of git://people.freedesktop.org/~airlied/linux · cb0d93aa
      Linus Torvalds authored
      Pull drm fixes from Dave Airlie:
       "This contains a bunch of amdgpu fixes, and some i915 regression fixes.
      
        It also contains some fixes for an older regression with some EDID
        changes and some 6bpc panels.
      
        Then there are the lockdep, cirrus and rcar-du regression fixes from
        this window"
      
      * tag 'drm-fixes-for-4.8-rc2' of git://people.freedesktop.org/~airlied/linux:
        drm/cirrus: Fix NULL pointer dereference when registering the fbdev
        drm/edid: Set 8 bpc color depth for displays with "DFP 1.x compliant TMDS".
        drm/i915/dp: Revert "drm/i915/dp: fall back to 18 bpp when sink capability is unknown"
        drm/edid: Add 6 bpc quirk for display AEO model 0.
        drm: Paper over locking inversion after registration rework
        drm: rcar-du: Link HDMI encoder with bridge
        drm/ttm: Wait for a BO to become idle before unbinding it from GTT
        drm/i915/fbdev: Check for the framebuffer before use
        drm/amdgpu: update golden setting of polaris10
        drm/amdgpu: update golden setting of stoney
        drm/amdgpu: update golden setting of polaris11
        drm/amdgpu: update golden setting of carrizo
        drm/amdgpu: update golden setting of iceland
        drm/amd/amdgpu: change pptable output format from ASCII to binary
        drm/amdgpu/ci: add mullins to default case for smc ucode
        drm/amdgpu/gmc7: add missing mullins case
        drm/i915: Never fully mask the the EI up rps interrupt on SNB/IVB
        drm/i915: Wait up to 3ms for the pcu to ack the cdclk change request on SKL
      cb0d93aa
    • Brian King's avatar
      ipr: Fix sync scsi scan · a3d1ddd9
      Brian King authored
      Commit b195d5e2 ("ipr: Wait to do async scan until scsi host is
      initialized") fixed async scan for ipr, but broke sync scan for ipr.
      
      This fixes sync scan back up.
      Signed-off-by: default avatarBrian King <brking@linux.vnet.ibm.com>
      Reported-and-tested-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      a3d1ddd9
    • Vladimir Davydov's avatar
      mm: memcontrol: only mark charged pages with PageKmemcg · c4159a75
      Vladimir Davydov authored
      To distinguish non-slab pages charged to kmemcg we mark them PageKmemcg,
      which sets page->_mapcount to -512.  Currently, we set/clear PageKmemcg
      in __alloc_pages_nodemask()/free_pages_prepare() for any page allocated
      with __GFP_ACCOUNT, including those that aren't actually charged to any
      cgroup, i.e. allocated from the root cgroup context.  To avoid overhead
      in case cgroups are not used, we only do that if memcg_kmem_enabled() is
      true.  The latter is set iff there are kmem-enabled memory cgroups
      (online or offline).  The root cgroup is not considered kmem-enabled.
      
      As a result, if a page is allocated with __GFP_ACCOUNT for the root
      cgroup when there are kmem-enabled memory cgroups and is freed after all
      kmem-enabled memory cgroups were removed, e.g.
      
        # no memory cgroups has been created yet, create one
        mkdir /sys/fs/cgroup/memory/test
        # run something allocating pages with __GFP_ACCOUNT, e.g.
        # a program using pipe
        dmesg | tail
        # remove the memory cgroup
        rmdir /sys/fs/cgroup/memory/test
      
      we'll get bad page state bug complaining about page->_mapcount != -1:
      
        BUG: Bad page state in process swapper/0  pfn:1fd945c
        page:ffffea007f651700 count:0 mapcount:-511 mapping:          (null) index:0x0
        flags: 0x1000000000000000()
      
      To avoid that, let's mark with PageKmemcg only those pages that are
      actually charged to and hence pin a non-root memory cgroup.
      
      Fixes: 4949148a ("mm: charge/uncharge kmemcg from generic page allocator paths")
      Reported-and-tested-by: default avatarEric Dumazet <eric.dumazet@gmail.com>
      Signed-off-by: default avatarVladimir Davydov <vdavydov@virtuozzo.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      c4159a75
    • Ilya Dryomov's avatar
      ceph: initialize pathbase in the !dentry case in encode_caps_cb() · 4eacd4cb
      Ilya Dryomov authored
      pathbase is the base inode; set it to 0 if we've got no path.
      
      Coverity-id: 146348
      Signed-off-by: default avatarIlya Dryomov <idryomov@gmail.com>
      Reviewed-by: default avatarAlex Elder <elder@linaro.org>
      4eacd4cb
    • Ilya Dryomov's avatar
      rbd: nuke the 32-bit pool id check · d8734849
      Ilya Dryomov authored
      ceph_file_layout::pool_id is now s64.  rbd_add_get_pool_id() and
      ceph_pg_poolid_by_name() both return an int, so it's bogus anyway.
      Signed-off-by: default avatarIlya Dryomov <idryomov@gmail.com>
      Reviewed-by: default avatarAlex Elder <elder@linaro.org>
      d8734849
    • Steven Rostedt (Red Hat)'s avatar
      tracing: Fix tick_stop tracepoint symbols for user export · c87edb36
      Steven Rostedt (Red Hat) authored
      The symbols used in the tick_stop tracepoint were not being converted
      properly into integers in the trace_stop format file. Instead we had this:
      
      print fmt: "success=%d dependency=%s", REC->success,
          __print_symbolic(REC->dependency, { 0, "NONE" },
           { (1 << TICK_DEP_BIT_POSIX_TIMER), "POSIX_TIMER" },
           { (1 << TICK_DEP_BIT_PERF_EVENTS), "PERF_EVENTS" },
           { (1 << TICK_DEP_BIT_SCHED), "SCHED" },
           { (1 << TICK_DEP_BIT_CLOCK_UNSTABLE), "CLOCK_UNSTABLE" })
      
      User space tools have no idea how to parse "TICK_DEP_BIT_SCHED" or the other
      symbols used to do the bit shifting. The reason is that the conversion was
      done with using the TICK_DEP_MASK_* symbols which are just macros that
      convert to the BIT shift itself (with the exception of NONE, which was
      converted properly, because it doesn't use bits, and is defined as zero).
      
      The TICK_DEP_BIT_* needs to be denoted by TRACE_DEFINE_ENUM() in order to
      have this properly converted for user space tools to parse this event.
      
      Cc: stable@vger.kernel.org
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      Fixes: e6e6cc22 ("nohz: Use enum code for tick stop failure tracing message")
      Reported-by: default avatarLuiz Capitulino <lcapitulino@redhat.com>
      Tested-by: default avatarLuiz Capitulino <lcapitulino@redhat.com>
      Signed-off-by: default avatarSteven Rostedt <rostedt@goodmis.org>
      c87edb36
    • James Hogan's avatar
      metag: Drop show_mem() from mem_init() · 97b1d23f
      James Hogan authored
      The recent commit 599d0c95 ("mm, vmscan: move LRU lists to node"),
      changed memory management code so that show_mem() is no longer safe to
      call prior to setup_per_cpu_pageset(), as pgdat->per_cpu_nodestats will
      still be NULL. This causes an oops on metag due to the call to
      show_mem() from mem_init():
      
        node_page_state_snapshot(...) + 0x48
        pgdat_reclaimable(struct pglist_data * pgdat = 0x402517a0)
        show_free_areas(unsigned int filter = 0) + 0x2cc
        show_mem(unsigned int filter = 0) + 0x18
        mem_init()
        mm_init()
        start_kernel() + 0x204
      
      This wasn't a problem before with zone_reclaimable() as zone_pcp_init()
      was already setting zone->pageset to &boot_pageset, via setup_arch() and
      paging_init(), which happens before mm_init():
      
        zone_pcp_init(...)
        free_area_init_core(...) + 0x138
        free_area_init_node(int nid = 0, ...) + 0x1a0
        free_area_init_nodes(...) + 0x440
        paging_init(unsigned long mem_end = 0x4fe00000) + 0x378
        setup_arch(char ** cmdline_p = 0x4024e038) + 0x2b8
        start_kernel() + 0x54
      
      No other arches appear to call show_mem() during boot, and it doesn't
      really add much value to the log, so lets just drop it from mem_init().
      Signed-off-by: default avatarJames Hogan <james.hogan@imgtec.com>
      Acked-by: default avatarMel Gorman <mgorman@techsingularity.net>
      Cc: linux-metag@vger.kernel.org
      97b1d23f
    • Boris Brezillon's avatar
      drm/cirrus: Fix NULL pointer dereference when registering the fbdev · 36e9d08b
      Boris Brezillon authored
      cirrus_modeset_init() is initializing/registering the emulated fbdev
      and, since commit c61b93fe ("drm/atomic: Fix remaining places where
      !funcs->best_encoder is valid"), DRM internals can access/test some of
      the fields in mode_config->funcs as part of the fbdev registration
      process.
      Make sure dev->mode_config.funcs is properly set to avoid dereferencing
      a NULL pointer.
      Reported-by: default avatarMike Marshall <hubcap@omnibond.com>
      Reported-by: default avatarEric W. Biederman <ebiederm@xmission.com>
      Signed-off-by: default avatarBoris Brezillon <boris.brezillon@free-electrons.com>
      Fixes: c61b93fe ("drm/atomic: Fix remaining places where !funcs->best_encoder is valid")
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      36e9d08b
    • Emese Revfy's avatar
      gcc-plugins: Add support for plugin subdirectories · caefd8c9
      Emese Revfy authored
      This adds support for building more complex gcc plugins that live in a
      subdirectory instead of just in a single source file.
      Reported-by: default avatarPaX Team <pageexec@freemail.hu>
      Signed-off-by: default avatarEmese Revfy <re.emese@gmail.com>
      [kees: clarified commit message]
      Signed-off-by: default avatarKees Cook <keescook@chromium.org>
      caefd8c9
    • Emese Revfy's avatar
      gcc-plugins: Automate make rule generation · 7040c83b
      Emese Revfy authored
      There's no reason to repeat the same names in the Makefile when the .so
      files have already been listed. The .o list can be generated from them.
      Reported-by: default avatarPaX Team <pageexec@freemail.hu>
      Signed-off-by: default avatarEmese Revfy <re.emese@gmail.com>
      [kees: clarified commit message]
      Signed-off-by: default avatarKees Cook <keescook@chromium.org>
      7040c83b
    • Emese Revfy's avatar
      gcc-plugins: Add support for passing plugin arguments · 65d59ec8
      Emese Revfy authored
      The latent_entropy plugin needs to pass arguments, so this adds the
      support.
      Signed-off-by: default avatarEmese Revfy <re.emese@gmail.com>
      Signed-off-by: default avatarKees Cook <keescook@chromium.org>
      65d59ec8
    • Kees Cook's avatar
      gcc-plugins: abort builds cleanly when not supported · ed58c0e9
      Kees Cook authored
      When the compiler doesn't support gcc plugins (either due to missing
      headers or too old a version), report the problem and abort the build
      instead of emitting a warning and letting the build founder with arcane
      compiler errors.
      Signed-off-by: default avatarKees Cook <keescook@chromium.org>
      ed58c0e9
    • Emese Revfy's avatar
      kbuild: no gcc-plugins during cc-option tests · d26e9414
      Emese Revfy authored
      The gcc-plugins arguments should not be included when performing
      cc-option tests.
      
      Steps to reproduce:
      1) make mrproper
      2) make defconfig
      3) enable GCC_PLUGINS, GCC_PLUGIN_CYC_COMPLEXITY
      4) enable FUNCTION_TRACER (it will select other options as well)
      5) make && make modules
      
      Build errors:
      MODPOST 18 modules
      ERROR: "__fentry__" [net/netfilter/xt_nat.ko] undefined!
      ERROR: "__fentry__" [net/netfilter/xt_mark.ko] undefined!
      ERROR: "__fentry__" [net/netfilter/xt_addrtype.ko] undefined!
      ERROR: "__fentry__" [net/netfilter/xt_LOG.ko] undefined!
      ERROR: "__fentry__" [net/netfilter/nf_nat_sip.ko] undefined!
      ERROR: "__fentry__" [net/netfilter/nf_nat_irc.ko] undefined!
      ERROR: "__fentry__" [net/netfilter/nf_nat_ftp.ko] undefined!
      ERROR: "__fentry__" [net/netfilter/nf_nat.ko] undefined!
      Reported-by: default avatarLaura Abbott <labbott@redhat.com>
      Signed-off-by: default avatarEmese Revfy <re.emese@gmail.com>
      [kees: renamed variable, clarified commit message]
      Signed-off-by: default avatarKees Cook <keescook@chromium.org>
      d26e9414
  4. 08 Aug, 2016 9 commits
    • Mario Kleiner's avatar
      drm/edid: Set 8 bpc color depth for displays with "DFP 1.x compliant TMDS". · 210a021d
      Mario Kleiner authored
      According to E-EDID spec 1.3, table 3.9, a digital video sink with the
      "DFP 1.x compliant TMDS" bit set is "signal compatible with VESA DFP 1.x
      TMDS CRGB, 1 pixel / clock, up to 8 bits / color MSB aligned".
      
      For such displays, the DFP spec 1.0, section 3.10 "EDID support" says:
      
      "If the DFP monitor only supports EDID 1.X (1.1, 1.2, etc.)
       without extensions, the host will make the following assumptions:
      
       1. 24-bit MSB-aligned RGB TFT
       2. DE polarity is active high
       3. H and V syncs are active high
       4. Established CRT timings will be used
       5. Dithering will not be enabled on the host"
      
      So if we don't know the bit depth of the display from additional
      colorimetry info we should assume 8 bpc / 24 bpp by default.
      
      This patch adds info->bpc = 8 assignement for that case.
      Signed-off-by: default avatarMario Kleiner <mario.kleiner.de@gmail.com>
      Cc: Jani Nikula <jani.nikula@intel.com>
      Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
      Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      210a021d
    • Mario Kleiner's avatar
      drm/i915/dp: Revert "drm/i915/dp: fall back to 18 bpp when sink capability is unknown" · 196f954e
      Mario Kleiner authored
      This reverts commit 013dd9e0
      ("drm/i915/dp: fall back to 18 bpp when sink capability is unknown")
      
      This commit introduced a regression into stable kernels,
      as it reduces output color depth to 6 bpc for any video
      sink connected to a Displayport connector if that sink
      doesn't report a specific color depth via EDID, or if
      our EDID parser doesn't actually recognize the proper
      bpc from EDID.
      
      Affected are active DisplayPort->VGA converters and
      active DisplayPort->DVI converters. Both should be
      able to handle 8 bpc, but are degraded to 6 bpc with
      this patch.
      
      The reverted commit was meant to fix
      Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=105331
      
      A followup patch implements a fix for that specific bug,
      which is caused by a faulty EDID of the affected DP panel
      by adding a new EDID quirk for that panel.
      
      DP 18 bpp fallback handling and other improvements to
      DP sink bpc detection will be handled for future
      kernels in a separate series of patches.
      
      Please backport to stable.
      Signed-off-by: default avatarMario Kleiner <mario.kleiner.de@gmail.com>
      Acked-by: default avatarJani Nikula <jani.nikula@intel.com>
      Cc: stable@vger.kernel.org
      Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
      Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      196f954e
    • Mario Kleiner's avatar
      drm/edid: Add 6 bpc quirk for display AEO model 0. · e10aec65
      Mario Kleiner authored
      Bugzilla https://bugzilla.kernel.org/show_bug.cgi?id=105331
      reports that the "AEO model 0" display is driven with 8 bpc
      without dithering by default, which looks bad because that
      panel is apparently a 6 bpc DP panel with faulty EDID.
      
      A fix for this was made by commit 013dd9e0
      ("drm/i915/dp: fall back to 18 bpp when sink capability is unknown").
      
      That commit triggers new regressions in precision for DP->DVI and
      DP->VGA displays. A patch is out to revert that commit, but it will
      revert video output for the AEO model 0 panel to 8 bpc without
      dithering.
      
      The EDID 1.3 of that panel, as decoded from the xrandr output
      attached to that bugzilla bug report, is somewhat faulty, and beyond
      other problems also sets the "DFP 1.x compliant TMDS" bit, which
      according to DFP spec means to drive the panel with 8 bpc and
      no dithering in absence of other colorimetry information.
      
      Try to make the original bug reporter happy despite the
      faulty EDID by adding a quirk to mark that panel as 6 bpc,
      so 6 bpc output with dithering creates a nice picture.
      
      Tested by injecting the edid from the fdo bug into a DP connector
      via drm_kms_helper.edid_firmware and verifying the 6 bpc + dithering
      is selected.
      
      This patch should be backported to stable.
      Signed-off-by: default avatarMario Kleiner <mario.kleiner.de@gmail.com>
      Cc: stable@vger.kernel.org
      Cc: Jani Nikula <jani.nikula@intel.com>
      Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
      Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      e10aec65
    • Linus Torvalds's avatar
      Merge tag 'lkdtm-v4.8-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux · 81abf252
      Linus Torvalds authored
      Pull lkdtm update from Kees Cook:
       "Fix rebuild problem with LKDTM's rodata test"
      
      [ This, and the usercopy branch, both came in before the merge window
        closed, but ended up in my 'need to look more' queue and thus got
        merged only after rc1 was out ]
      
      * tag 'lkdtm-v4.8-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux:
        lkdtm: Fix targets for objcopy usage
        lkdtm: fix false positive warning from -Wmaybe-uninitialized
      81abf252
    • Linus Torvalds's avatar
      Merge tag 'usercopy-v4.8' of git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux · 1eccfa09
      Linus Torvalds authored
      Pull usercopy protection from Kees Cook:
       "Tbhis implements HARDENED_USERCOPY verification of copy_to_user and
        copy_from_user bounds checking for most architectures on SLAB and
        SLUB"
      
      * tag 'usercopy-v4.8' of git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux:
        mm: SLUB hardened usercopy support
        mm: SLAB hardened usercopy support
        s390/uaccess: Enable hardened usercopy
        sparc/uaccess: Enable hardened usercopy
        powerpc/uaccess: Enable hardened usercopy
        ia64/uaccess: Enable hardened usercopy
        arm64/uaccess: Enable hardened usercopy
        ARM: uaccess: Enable hardened usercopy
        x86/uaccess: Enable hardened usercopy
        mm: Hardened usercopy
        mm: Implement stack frame object validation
        mm: Add is_migrate_cma_page
      1eccfa09
    • Linus Torvalds's avatar
      unsafe_[get|put]_user: change interface to use a error target label · 1bd4403d
      Linus Torvalds authored
      When I initially added the unsafe_[get|put]_user() helpers in commit
      5b24a7a2 ("Add 'unsafe' user access functions for batched
      accesses"), I made the mistake of modeling the interface on our
      traditional __[get|put]_user() functions, which return zero on success,
      or -EFAULT on failure.
      
      That interface is fairly easy to use, but it's actually fairly nasty for
      good code generation, since it essentially forces the caller to check
      the error value for each access.
      
      In particular, since the error handling is already internally
      implemented with an exception handler, and we already use "asm goto" for
      various other things, we could fairly easily make the error cases just
      jump directly to an error label instead, and avoid the need for explicit
      checking after each operation.
      
      So switch the interface to pass in an error label, rather than checking
      the error value in the caller.  Best do it now before we start growing
      more users (the signal handling code in particular would be a good place
      to use the new interface).
      
      So rather than
      
      	if (unsafe_get_user(x, ptr))
      		... handle error ..
      
      the interface is now
      
      	unsafe_get_user(x, ptr, label);
      
      where an error during the user mode fetch will now just cause a jump to
      'label' in the caller.
      
      Right now the actual _implementation_ of this all still ends up being a
      "if (err) goto label", and does not take advantage of any exception
      label tricks, but for "unsafe_put_user()" in particular it should be
      fairly straightforward to convert to using the exception table model.
      
      Note that "unsafe_get_user()" is much harder to convert to a clever
      exception table model, because current versions of gcc do not allow the
      use of "asm goto" (for the exception) with output values (for the actual
      value to be fetched).  But that is hopefully not a limitation in the
      long term.
      
      [ Also note that it might be a good idea to switch unsafe_get_user() to
        actually _return_ the value it fetches from user space, but this
        commit only changes the error handling semantics ]
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      1bd4403d
    • Ilya Dryomov's avatar
      rbd: destroy header_oloc in rbd_dev_release() · 6b6dddbe
      Ilya Dryomov authored
      Purely cosmetic at this point, as rbd doesn't use RADOS namespaces and
      hence rbd_dev->header_oloc->pool_ns is always NULL.
      Signed-off-by: default avatarIlya Dryomov <idryomov@gmail.com>
      6b6dddbe
    • Yan, Zheng's avatar
      e4d2b16a
    • Wei Yongjun's avatar
      libceph: using kfree_rcu() to simplify the code · 864364a2
      Wei Yongjun authored
      The callback function of call_rcu() just calls a kfree(), so we
      can use kfree_rcu() instead of call_rcu() + callback function.
      Signed-off-by: default avatarWei Yongjun <weiyj.lk@gmail.com>
      Signed-off-by: default avatarIlya Dryomov <idryomov@gmail.com>
      864364a2