1. 24 Dec, 2014 5 commits
    • Herbert Xu's avatar
      net: Move napi polling code out of net_rx_action · 726ce70e
      Herbert Xu authored
      This patch creates a new function napi_poll and moves the napi
      polling code from net_rx_action into it.
      Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      726ce70e
    • Antonio Quartulli's avatar
      batman-adv: avoid NULL dereferences and fix if check · 0d164491
      Antonio Quartulli authored
      Gateway having bandwidth_down equal to zero are not accepted
      at all and so never added to the Gateway list.
      For this reason checking the bandwidth_down member in
      batadv_gw_out_of_range() is useless.
      
      This is probably a copy/paste error and this check was supposed
      to be "!gw_node" only. Moreover, the way the check is written
      now may also lead to a NULL dereference.
      
      Fix this by rewriting the if-condition properly.
      
      Introduced by 414254e3
      ("batman-adv: tvlv - gateway download/upload bandwidth container")
      Signed-off-by: default avatarAntonio Quartulli <antonio@meshcoding.com>
      Reported-by: default avatarDavid Binderman <dcb314@hotmail.com>
      Signed-off-by: default avatarMarek Lindner <mareklindner@neomailbox.ch>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      0d164491
    • Sven Eckelmann's avatar
      batman-adv: Unify fragment size calculation · 0402e444
      Sven Eckelmann authored
      The fragmentation code was replaced in 610bfc6b
      ("batman-adv: Receive fragmented packets and merge") by an implementation which
      can handle up to 16 fragments of a packet. The packet is prepared for the split
      in fragments by the function batadv_frag_send_packet and the actual split is
      done by batadv_frag_create.
      
      Both functions calculate the size of a fragment themself. But their calculation
      differs because batadv_frag_send_packet also subtracts ETH_HLEN. Therefore,
      the check in batadv_frag_send_packet "can a full fragment can be created?" may
      return true even when batadv_frag_create cannot create a full fragment.
      
      The function batadv_frag_create doesn't check the size of the skb before
      splitting it and therefore might try to create a larger fragment than the
      remaining buffer. This creates an integer underflow and an invalid len is given
      to skb_split.
      Signed-off-by: default avatarSven Eckelmann <sven@narfation.org>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      0402e444
    • Sven Eckelmann's avatar
      batman-adv: Calculate extra tail size based on queued fragments · 5b6698b0
      Sven Eckelmann authored
      The fragmentation code was replaced in 610bfc6b
      ("batman-adv: Receive fragmented packets and merge"). The new code provided a
      mostly unused parameter skb for the merging function. It is used inside the
      function to calculate the additionally needed skb tailroom. But instead of
      increasing its own tailroom, it is only increasing the tailroom of the first
      queued skb. This is not correct in some situations because the first queued
      entry can be a different one than the parameter.
      
      An observed problem was:
      
      1. packet with size 104, total_size 1464, fragno 1 was received
         - packet is queued
      2. packet with size 1400, total_size 1464, fragno 0 was received
         - packet is queued at the end of the list
      3. enough data was received and can be given to the merge function
         (1464 == (1400 - 20) + (104 - 20))
         - merge functions gets 1400 byte large packet as skb argument
      4. merge function gets first entry in queue (104 byte)
         - stored as skb_out
      5. merge function calculates the required extra tail as total_size - skb->len
         - pskb_expand_head tail of skb_out with 64 bytes
      6. merge function tries to squeeze the extra 1380 bytes from the second queued
         skb (1400 byte aka skb parameter) in the 64 extra tail bytes of skb_out
      
      Instead calculate the extra required tail bytes for skb_out also using skb_out
      instead of using the parameter skb. The skb parameter is only used to get the
      total_size from the last received packet. This is also the total_size used to
      decide that all fragments were received.
      Reported-by: default avatarPhilipp Psurek <philipp.psurek@gmail.com>
      Signed-off-by: default avatarSven Eckelmann <sven@narfation.org>
      Acked-by: default avatarMartin Hundebøll <martin@hundeboll.net>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      5b6698b0
    • Jason Wang's avatar
      net: drop the packet when fails to do software segmentation or header check · af6dabc9
      Jason Wang authored
      Commit cecda693 ("net: keep original skb
      which only needs header checking during software GSO") keeps the original
      skb for packets that only needs header check, but it doesn't drop the
      packet if software segmentation or header check were failed.
      
      Fixes cecda693 ("net: keep original skb which only needs header checking during software GSO")
      Cc: Eric Dumazet <eric.dumazet@gmail.com>
      Signed-off-by: default avatarJason Wang <jasowang@redhat.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      af6dabc9
  2. 22 Dec, 2014 15 commits
  3. 19 Dec, 2014 20 commits
    • David S. Miller's avatar
      Merge branch 'for-upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/bluetooth/bluetooth · 02d6a746
      David S. Miller authored
      Johan Hedberg says:
      
      ====================
      pull request: bluetooth 2014-12-19
      
      Here's one more pull request for 3.19. It contains the socket type
      verification fixes from Al Viro as well as an skb double-free fix for
      6lowpan from Jukka Rissanen.
      
      Please let me know if there are any issues pulling. Thanks.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      02d6a746
    • Govindarajulu Varadarajan's avatar
      enic: fix rx skb checksum · 17e96834
      Govindarajulu Varadarajan authored
      Hardware always provides compliment of IP pseudo checksum. Stack expects
      whole packet checksum without pseudo checksum if CHECKSUM_COMPLETE is set.
      
      This causes checksum error in nf & ovs.
      
      kernel: qg-19546f09-f2: hw csum failure
      kernel: CPU: 9 PID: 0 Comm: swapper/9 Tainted: GF          O--------------   3.10.0-123.8.1.el7.x86_64 #1
      kernel: Hardware name: Cisco Systems Inc UCSB-B200-M3/UCSB-B200-M3, BIOS B200M3.2.2.3.0.080820141339 08/08/2014
      kernel: ffff881218f40000 df68243feb35e3a8 ffff881237a43ab8 ffffffff815e237b
      kernel: ffff881237a43ad0 ffffffff814cd4ca ffff8829ec71eb00 ffff881237a43af0
      kernel: ffffffff814c6232 0000000000000286 ffff8829ec71eb00 ffff881237a43b00
      kernel: Call Trace:
      kernel: <IRQ>  [<ffffffff815e237b>] dump_stack+0x19/0x1b
      kernel: [<ffffffff814cd4ca>] netdev_rx_csum_fault+0x3a/0x40
      kernel: [<ffffffff814c6232>] __skb_checksum_complete_head+0x62/0x70
      kernel: [<ffffffff814c6251>] __skb_checksum_complete+0x11/0x20
      kernel: [<ffffffff8155a20c>] nf_ip_checksum+0xcc/0x100
      kernel: [<ffffffffa049edc7>] icmp_error+0x1f7/0x35c [nf_conntrack_ipv4]
      kernel: [<ffffffff814cf419>] ? netif_rx+0xb9/0x1d0
      kernel: [<ffffffffa040eb7b>] ? internal_dev_recv+0xdb/0x130 [openvswitch]
      kernel: [<ffffffffa04c8330>] nf_conntrack_in+0xf0/0xa80 [nf_conntrack]
      kernel: [<ffffffff81509380>] ? inet_del_offload+0x40/0x40
      kernel: [<ffffffffa049e302>] ipv4_conntrack_in+0x22/0x30 [nf_conntrack_ipv4]
      kernel: [<ffffffff815005ca>] nf_iterate+0xaa/0xc0
      kernel: [<ffffffff81509380>] ? inet_del_offload+0x40/0x40
      kernel: [<ffffffff81500664>] nf_hook_slow+0x84/0x140
      kernel: [<ffffffff81509380>] ? inet_del_offload+0x40/0x40
      kernel: [<ffffffff81509dd4>] ip_rcv+0x344/0x380
      
      Hardware verifies IP & tcp/udp header checksum but does not provide payload
      checksum, use CHECKSUM_UNNECESSARY. Set it only if its valid IP tcp/udp packet.
      
      Cc: Jiri Benc <jbenc@redhat.com>
      Cc: Stefan Assmann <sassmann@redhat.com>
      Reported-by: default avatarSunil Choudhary <schoudha@redhat.com>
      Signed-off-by: default avatarGovindarajulu Varadarajan <_govind@gmx.com>
      Reviewed-by: default avatarJiri Benc <jbenc@redhat.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      17e96834
    • Li RongQing's avatar
      sunvnet: fix a memory leak in vnet_handle_offloads · 4f2ff8ef
      Li RongQing authored
      when skb_gso_segment returns error, the original skb should be freed
      Signed-off-by: default avatarLi RongQing <roy.qing.li@gmail.com>
      Acked-by: default avatarDavid L Stevens <david.stevens@oracle.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      4f2ff8ef
    • Al Viro's avatar
    • Al Viro's avatar
      Bluetooth: cmtp: cmtp_add_connection() should verify that it's dealing with l2cap socket · 96c26653
      Al Viro authored
      ... rather than relying on ciptool(8) never passing it anything else.  Give
      it e.g. an AF_UNIX connected socket (from socketpair(2)) and it'll oops,
      trying to evaluate &l2cap_pi(sock->sk)->chan->dst...
      Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
      Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
      96c26653
    • Al Viro's avatar
      Bluetooth: hidp_connection_add() unsafe use of l2cap_pi() · 51bda2bc
      Al Viro authored
      it's OK after we'd verified the sockets, but not before that.
      Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
      Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
      51bda2bc
    • Jukka Rissanen's avatar
      Bluetooth: 6lowpan: Do not free skb when packet is dropped · 004fa5ed
      Jukka Rissanen authored
      If we need to drop the message because of some error in the
      compression etc, then do not free the skb as that is done
      automatically in other part of networking stack.
      Signed-off-by: default avatarJukka Rissanen <jukka.rissanen@linux.intel.com>
      Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
      004fa5ed
    • Linus Torvalds's avatar
      Merge tag 'modules-next-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux · d790be38
      Linus Torvalds authored
      Pull module updates from Rusty Russell:
       "The exciting thing here is the getting rid of stop_machine on module
        removal.  This is possible by using a simple atomic_t for the counter,
        rather than our fancy per-cpu counter: it turns out that no one is
        doing a module increment per net packet, so the slowdown should be in
        the noise"
      
      * tag 'modules-next-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux:
        param: do not set store func without write perm
        params: cleanup sysfs allocation
        kernel:module Fix coding style errors and warnings.
        module: Remove stop_machine from module unloading
        module: Replace module_ref with atomic_t refcnt
        lib/bug: Use RCU list ops for module_bug_list
        module: Unlink module with RCU synchronizing instead of stop_machine
        module: Wait for RCU synchronizing before releasing a module
      d790be38
    • Linus Torvalds's avatar
      Merge tag 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mst/vhost · 64ec45bf
      Linus Torvalds authored
      Pull virtio fixes from Michael S Tsirkin:
       "virtio 1.0 related fixes
      
        Most importantly, this fixes using virtio_pci as a module.
      
        Further, the big virtio 1.0 conversion missed a couple of places.
        This fixes them up.
      
        This isn't 100% sparse-clean yet because on many architectures
        get_user triggers sparse warnings when used with __bitwise tag (when
        same tag is on both pointer and value read).
      
        I posted a patchset to fix it up by adding __force on all arches that
        don't already have it (many do), when that's merged these warnings
        will go away"
      
      * tag 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mst/vhost:
        virtio_pci: restore module attributes
        mic/host: fix up virtio 1.0 APIs
        vringh: update for virtio 1.0 APIs
        vringh: 64 bit features
        tools/virtio: add virtio 1.0 in vringh_test
        tools/virtio: add virtio 1.0 in virtio_test
        tools/virtio: enable -Werror
        tools/virtio: 64 bit features
        tools/virtio: fix vringh test
        tools/virtio: more stubs
        virtio: core support for config generation
        virtio_pci: add VIRTIO_PCI_NO_LEGACY
        virtio_pci: move probe to common file
        virtio_pci_common.h: drop VIRTIO_PCI_NO_LEGACY
        virtio_config: fix virtio_cread_bytes
        virtio: set VIRTIO_CONFIG_S_FEATURES_OK on restore
      64ec45bf
    • Linus Torvalds's avatar
      Merge tag 'pm+acpi-3.19-rc1-2' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm · c0f486fd
      Linus Torvalds authored
      Pull more ACPI and power management updates from Rafael Wysocki:
       "These are regression fixes (leds-gpio, ACPI backlight driver,
        operating performance points library, ACPI device enumeration
        messages, cpupower tool), other bug fixes (ACPI EC driver, ACPI device
        PM), some cleanups in the operating performance points (OPP)
        framework, continuation of CONFIG_PM_RUNTIME elimination, a couple of
        minor intel_pstate driver changes, a new MAINTAINERS entry for it and
        an ACPI fan driver change needed for better support of thermal
        management in user space.
      
        Specifics:
      
         - Fix a regression in leds-gpio introduced by a recent commit that
           inadvertently changed the name of one of the properties used by the
           driver (Fabio Estevam).
      
         - Fix a regression in the ACPI backlight driver introduced by a
           recent fix that missed one special case that had to be taken into
           account (Aaron Lu).
      
         - Drop the level of some new kernel messages from the ACPI core
           introduced by a recent commit to KERN_DEBUG which they should have
           used from the start and drop some other unuseful KERN_ERR messages
           printed by ACPI (Rafael J Wysocki).
      
         - Revert an incorrect commit modifying the cpupower tool (Prarit
           Bhargava).
      
         - Fix two regressions introduced by recent commits in the OPP library
           and clean up some existing minor issues in that code (Viresh
           Kumar).
      
         - Continue to replace CONFIG_PM_RUNTIME with CONFIG_PM throughout the
           tree (or drop it where that can be done) in order to make it
           possible to eliminate CONFIG_PM_RUNTIME (Rafael J Wysocki, Ulf
           Hansson, Ludovic Desroches).
      
           There will be one more "CONFIG_PM_RUNTIME removal" batch after this
           one, because some new uses of it have been introduced during the
           current merge window, but that should be sufficient to finally get
           rid of it.
      
         - Make the ACPI EC driver more robust against race conditions related
           to GPE handler installation failures (Lv Zheng).
      
         - Prevent the ACPI device PM core code from attempting to disable
           GPEs that it has not enabled which confuses ACPICA and makes it
           report errors unnecessarily (Rafael J Wysocki).
      
         - Add a "force" command line switch to the intel_pstate driver to
           make it possible to override the blacklisting of some systems in
           that driver if needed (Ethan Zhao).
      
         - Improve intel_pstate code documentation and add a MAINTAINERS entry
           for it (Kristen Carlson Accardi).
      
         - Make the ACPI fan driver create cooling device interfaces witn
           names that reflect the IDs of the ACPI device objects they are
           associated with, except for "generic" ACPI fans (PNP ID "PNP0C0B").
      
           That's necessary for user space thermal management tools to be able
           to connect the fans with the parts of the system they are supposed
           to be cooling properly.  From Srinivas Pandruvada"
      
      * tag 'pm+acpi-3.19-rc1-2' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm: (32 commits)
        MAINTAINERS: add entry for intel_pstate
        ACPI / video: update the skip case for acpi_video_device_in_dod()
        power / PM: Eliminate CONFIG_PM_RUNTIME
        NFC / PM: Replace CONFIG_PM_RUNTIME with CONFIG_PM
        SCSI / PM: Replace CONFIG_PM_RUNTIME with CONFIG_PM
        ACPI / EC: Fix unexpected ec_remove_handlers() invocations
        Revert "tools: cpupower: fix return checks for sysfs_get_idlestate_count()"
        tracing / PM: Replace CONFIG_PM_RUNTIME with CONFIG_PM
        x86 / PM: Replace CONFIG_PM_RUNTIME in io_apic.c
        PM: Remove the SET_PM_RUNTIME_PM_OPS() macro
        mmc: atmel-mci: use SET_RUNTIME_PM_OPS() macro
        PM / Kconfig: Replace PM_RUNTIME with PM in dependencies
        ARM / PM: Replace CONFIG_PM_RUNTIME with CONFIG_PM
        sound / PM: Replace CONFIG_PM_RUNTIME with CONFIG_PM
        phy / PM: Replace CONFIG_PM_RUNTIME with CONFIG_PM
        video / PM: Replace CONFIG_PM_RUNTIME with CONFIG_PM
        tty / PM: Replace CONFIG_PM_RUNTIME with CONFIG_PM
        spi: Replace CONFIG_PM_RUNTIME with CONFIG_PM
        ACPI / PM: Do not disable wakeup GPEs that have not been enabled
        ACPI / utils: Drop error messages from acpi_evaluate_reference()
        ...
      c0f486fd
    • Linus Torvalds's avatar
      Merge tag 'platform-drivers-x86-v3.19-1' of... · 385336e3
      Linus Torvalds authored
      Merge tag 'platform-drivers-x86-v3.19-1' of git://git.infradead.org/users/dvhart/linux-platform-drivers-x86
      
      Pull x86 platform driver update from Darren Hart:
       - thinkpad-acpi: Switch to software mute, cleanups
       - acerhdf: Bang-bang thermal governor, new models, cleanups
       - dell-laptop: New keyboard backlight support and documentation
       - toshiba_acpi: Keyboard backlight updates, hotkey handling
       - dell-wmi: Keypress filtering, WMI event processing
       - eeepc-laptop: Multiple cleanups, improved error handling, documentation
       - hp_wireless: Inform the user if hp_wireless_input_setup()/add() fails
       - misc: Code cleanups, quirks, various new IDs
      
      * tag 'platform-drivers-x86-v3.19-1' of git://git.infradead.org/users/dvhart/linux-platform-drivers-x86: (33 commits)
        platform/x86/acerhdf: Still depends on THERMAL
        Documentation: Add entry for dell-laptop sysfs interface
        acpi: Remove _OSI(Linux) for ThinkPads
        thinkpad-acpi: Try to use full software mute control
        acerhdf: minor clean up
        acerhdf: added critical trip point
        acerhdf: Use bang-bang thermal governor
        acerhdf: Adding support for new models
        acerhdf: Adding support for "manual mode"
        dell-smo8800: Add more ACPI ids and change description of driver
        platform: x86: dell-laptop: Add support for keyboard backlight
        toshiba_acpi: Add keyboard backlight mode change event
        toshiba_acpi: Change notify funtion to handle more events
        toshiba_acpi: Move hotkey enabling code to its own function
        dell-wmi: Don't report keypresses on keybord illumination change
        dell-wmi: Don't report keypresses for radio state changes
        hp_wireless: Inform the user if hp_wireless_input_setup()/add() fails
        toshiba-acpi: Add missing ID (TOS6207)
        Sony-laptop: Deletion of an unnecessary check before the function call "pci_dev_put"
        platform: x86: Deletion of checks before backlight_device_unregister()
        ...
      385336e3
    • Linus Torvalds's avatar
      Merge git://www.linux-watchdog.org/linux-watchdog · ebcffcda
      Linus Torvalds authored
      Pull small watchdog update from Wim Van Sebroeck:
       - fix the argument of watchdog_active() in imx2_wdt
       - Add power management support to the imx2_wdt watchdog.
      
      * git://www.linux-watchdog.org/linux-watchdog:
        watchdog: imx2_wdt: Fix the argument of watchdog_active()
        watchdog: imx2_wdt: Add power management support.
      ebcffcda
    • Linus Torvalds's avatar
      Merge tag 'media/v3.19-2' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media · 0ec28c37
      Linus Torvalds authored
      Pull second set of media updates from Mauro Carvalho Chehab:
      
       - Move drivers for really old legacy hardware to staging.  Those are
         using obsolete media kAPIs and are for hardware that nobody uses for
         years.  Simply not worth porting them to the new kAPIs.  Of course,
         if anyone pops up to fix, we can move them back from there
      
       - While not too late, do some API fixups at the new colorspace API,
         added for v3.19
      
       - Some improvements for rcar_vin driver
      
       - Some fixups at cx88 and vivid drivers
      
       - Some Documentation fixups
      
      * tag 'media/v3.19-2' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media:
        [media] bq/c-qcam, w9966, pms: move to staging in preparation for removal
        [media] tlg2300: move to staging in preparation for removal
        [media] vino/saa7191: move to staging in preparation for removal
        [media] MAINTAINERS: vivi -> vivid
        [media] cx88: remove leftover start_video_dma() call
        [media] cx88: add missing alloc_ctx support
        [media] v4l2-ioctl: WARN_ON if querycap didn't fill device_caps
        [media] vivid: fix CROP_BOUNDS typo for video output
        [media] DocBook media: update version number and document changes
        [media] vivid.txt: document new controls
        [media] DocBook media: add missing ycbcr_enc and quantization fields
        [media] v4l2-mediabus.h: use two __u16 instead of two __u32
        [media] rcar_vin: Fix interrupt enable in progressive
        [media] rcar_vin: Enable VSYNC field toggle mode
        [media] rcar_vin: Add scaling support
        [media] rcar_vin: Add DT support for r8a7793 and r8a7794 SoCs
        [media] rcar_vin: Add YUYV capture format support
      0ec28c37
    • Linus Torvalds's avatar
      Merge tag 'rdma-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband · 4c929fee
      Linus Torvalds authored
      Pull infiniband updates from Roland Dreier:
       "Main batch of InfiniBand/RDMA changes for 3.19:
      
         - On-demand paging support in core midlayer and mlx5 driver.  This
           lets userspace create non-pinned memory regions and have the
           adapter HW trigger page faults.
         - iSER and IPoIB updates and fixes.
         - Low-level HW driver updates for cxgb4, mlx4 and ocrdma.
         - Other miscellaneous fixes"
      
      * tag 'rdma-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband: (56 commits)
        IB/mlx5: Implement on demand paging by adding support for MMU notifiers
        IB/mlx5: Add support for RDMA read/write responder page faults
        IB/mlx5: Handle page faults
        IB/mlx5: Page faults handling infrastructure
        IB/mlx5: Add mlx5_ib_update_mtt to update page tables after creation
        IB/mlx5: Changes in memory region creation to support on-demand paging
        IB/mlx5: Implement the ODP capability query verb
        mlx5_core: Add support for page faults events and low level handling
        mlx5_core: Re-add MLX5_DEV_CAP_FLAG_ON_DMND_PG flag
        IB/srp: Allow newline separator for connection string
        IB/core: Implement support for MMU notifiers regarding on demand paging regions
        IB/core: Add support for on demand paging regions
        IB/core: Add flags for on demand paging support
        IB/core: Add support for extended query device caps
        IB/mlx5: Add function to read WQE from user-space
        IB/core: Add umem function to read data from user-space
        IB/core: Replace ib_umem's offset field with a full address
        IB/mlx5: Enhance UMR support to allow partial page table update
        IB/mlx5: Remove per-MR pas and dma pointers
        RDMA/ocrdma: Always resolve destination mac from GRH for UD QPs
        ...
      4c929fee
    • Linus Torvalds's avatar
      Merge branch 'akpm' (patches from Andrew) · 018cb13e
      Linus Torvalds authored
      Merge misc patches from Andrew Morton:
       "A few stragglers"
      
      * emailed patches from Andrew Morton <akpm@linux-foundation.org>:
        tools/testing/selftests/Makefile: alphasort the TARGETS list
        mm/zsmalloc: adjust order of functions
        ocfs2: fix journal commit deadlock
        ocfs2/dlm: fix race between dispatched_work and dlm_lockres_grab_inflight_worker
        ocfs2: reflink: fix slow unlink for refcounted file
        mm/memory.c:do_shared_fault(): add comment
        .mailmap: Santosh Shilimkar has moved
        .mailmap: update akpm@osdl.org
        lib/show_mem.c: add cma reserved information
        fs/proc/meminfo.c: include cma info in proc/meminfo
        mm: cma: split cma-reserved in dmesg log
        hfsplus: fix longname handling
        mm/mempolicy.c: remove unnecessary is_valid_nodemask()
      018cb13e
    • Andrew Morton's avatar
      tools/testing/selftests/Makefile: alphasort the TARGETS list · 96e869d8
      Andrew Morton authored
      This list is supposed to be sorted, to reduce patch collisions.
      
      Cc: Shuah Khan <shuah.kh@samsung.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      96e869d8
    • Ganesh Mahendran's avatar
      mm/zsmalloc: adjust order of functions · 66cdef66
      Ganesh Mahendran authored
      Currently functions in zsmalloc.c does not arranged in a readable and
      reasonable sequence.  With the more and more functions added, we may
      meet below inconvenience.  For example:
      
      Current functions:
      
          void zs_init()
          {
          }
      
          static void get_maxobj_per_zspage()
          {
          }
      
      Then I want to add a func_1() which is called from zs_init(), and this
      new added function func_1() will used get_maxobj_per_zspage() which is
      defined below zs_init().
      
          void func_1()
          {
              get_maxobj_per_zspage()
          }
      
          void zs_init()
          {
              func_1()
          }
      
          static void get_maxobj_per_zspage()
          {
          }
      
      This will cause compiling issue. So we must add a declaration:
      
          static void get_maxobj_per_zspage();
      
      before func_1() if we do not put get_maxobj_per_zspage() before
      func_1().
      
      In addition, puting module_[init|exit] functions at the bottom of the
      file conforms to our habit.
      
      So, this patch ajusts function sequence as:
      
          /* helper functions */
          ...
          obj_location_to_handle()
          ...
      
          /* Some exported functions */
          ...
      
          zs_map_object()
          zs_unmap_object()
      
          zs_malloc()
          zs_free()
      
          zs_init()
          zs_exit()
      Signed-off-by: default avatarGanesh Mahendran <opensource.ganesh@gmail.com>
      Cc: Nitin Gupta <ngupta@vflare.org>
      Acked-by: default avatarMinchan Kim <minchan@kernel.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      66cdef66
    • Junxiao Bi's avatar
      ocfs2: fix journal commit deadlock · 136f49b9
      Junxiao Bi authored
      For buffer write, page lock will be got in write_begin and released in
      write_end, in ocfs2_write_end_nolock(), before it unlock the page in
      ocfs2_free_write_ctxt(), it calls ocfs2_run_deallocs(), this will ask
      for the read lock of journal->j_trans_barrier.  Holding page lock and
      ask for journal->j_trans_barrier breaks the locking order.
      
      This will cause a deadlock with journal commit threads, ocfs2cmt will
      get write lock of journal->j_trans_barrier first, then it wakes up
      kjournald2 to do the commit work, at last it waits until done.  To
      commit journal, kjournald2 needs flushing data first, it needs get the
      cache page lock.
      
      Since some ocfs2 cluster locks are holding by write process, this
      deadlock may hung the whole cluster.
      
      unlock pages before ocfs2_run_deallocs() can fix the locking order, also
      put unlock before ocfs2_commit_trans() to make page lock is unlocked
      before j_trans_barrier to preserve unlocking order.
      Signed-off-by: default avatarJunxiao Bi <junxiao.bi@oracle.com>
      Reviewed-by: default avatarWengang Wang <wen.gang.wang@oracle.com>
      Cc: <stable@vger.kernel.org>
      Reviewed-by: default avatarMark Fasheh <mfasheh@suse.de>
      Cc: Joel Becker <jlbec@evilplan.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      136f49b9
    • Joseph Qi's avatar
      ocfs2/dlm: fix race between dispatched_work and dlm_lockres_grab_inflight_worker · 1e589581
      Joseph Qi authored
      Commit ac4fef4d ("ocfs2/dlm: do not purge lockres that is queued for
      assert master") may have the following possible race case:
      
        dlm_dispatch_assert_master       dlm_wq
        ========================================================================
        queue_work(dlm->quedlm_worker,
            &dlm->dispatched_work);
                                       dispatch work,
                                       dlm_lockres_drop_inflight_worker
                                       *BUG_ON(res->inflight_assert_workers == 0)*
        dlm_lockres_grab_inflight_worker
        inflight_assert_workers++
      
      So ensure inflight_assert_workers to be increased first.
      Signed-off-by: default avatarJoseph Qi <joseph.qi@huawei.com>
      Signed-off-by: default avatarXue jiufei <xuejiufei@huawei.com>
      Cc: Joel Becker <jlbec@evilplan.org>
      Reviewed-by: default avatarMark Fasheh <mfasheh@suse.de>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      1e589581
    • Junxiao Bi's avatar
      ocfs2: reflink: fix slow unlink for refcounted file · f62f12b3
      Junxiao Bi authored
      When running ocfs2 test suite multiple nodes reflink stress test, for a
      4 nodes cluster, every unlink() for refcounted file needs about 700s.
      
      The slow unlink is caused by the contention of refcount tree lock since
      all nodes are unlink files using the same refcount tree.  When the
      unlinking file have many extents(over 1600 in our test), most of the
      extents has refcounted flag set.  In ocfs2_commit_truncate(), it will
      execute the following call trace for every extents.  This means it needs
      get and released refcount tree lock about 1600 times.  And when several
      nodes are do this at the same time, the performance will be very low.
      
        ocfs2_remove_btree_range()
        --  ocfs2_lock_refcount_tree()
        ----  ocfs2_refcount_lock()
        ------  __ocfs2_cluster_lock()
      
      ocfs2_refcount_lock() is costly, move it to ocfs2_commit_truncate() to
      do lock/unlock once can improve a lot performance.
      Signed-off-by: default avatarJunxiao Bi <junxiao.bi@oracle.com>
      Cc: Wengang <wen.gang.wang@oracle.com>
      Reviewed-by: default avatarMark Fasheh <mfasheh@suse.de>
      Cc: Joel Becker <jlbec@evilplan.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      f62f12b3