1. 15 11月, 2012 6 次提交
    • L
      ACPICA: Fix indent caused divergences. · 1f86e8c1
      Lv Zheng 提交于
      New version of "indent" program will generate different outputs that
      will lead to the divergences between the Linux and the ACPICA.
      This patch fixes such divergences caused by the "indent" program.
      The version of the "indent" used for this patch is "GNU indent 2.2.11".
      
      This patch will not affect the generated vmlinux binary.
      This will decrease 581 lines of 20120913 divergence.diff.
      Signed-off-by: NRobert Moore <robert.moore@intel.com>
      Signed-off-by: NLv Zheng <lv.zheng@intel.com>
      Signed-off-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
      1f86e8c1
    • L
      ACPICA: Fix AcpiSrc caused divergences. · 644ef74e
      Lv Zheng 提交于
      There are definitions that can been converted into new styles by
      the recent AcpiSrc while they remain the old styles in the Linux.
      This patch fixes those definitions that will be converted by the
      AcpiSrc.
      
      This patch will not affect the generated vmlinux binary.
      This will decrease 97 lines of 20120913 divergence.diff.
      Signed-off-by: NLv Zheng <lv.zheng@intel.com>
      Signed-off-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
      644ef74e
    • L
      ACPICA: Fix divergences of definition conflicts. · 78e25fef
      Lv Zheng 提交于
      There are conflicts in the "acpi_device_id*" definitions between the
      Linux and the ACPICA.  The definitions of acpi_device_id* in ACPICA
      have been changed to the "acpi_pnp_device_id*".  This patch changes
      the corresponding "acpica_device_id*" definitiions in the Linux.
      
      This patch will not affect the generated vmlinx binary.
      This will decrease 298 lines of 20120913 divergence.diff.
      Signed-off-by: NLv Zheng <lv.zheng@intel.com>
      Signed-off-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
      78e25fef
    • L
      ACPICA: Fix unmerged debugger divergences. · f540fadf
      Lv Zheng 提交于
      Debugger improvements in ACPICA are always ignored by ACPICA Linux
      release.  This will lead to divergences between Linux and ACPICA.
      This patch fixes such unmerged debugger updates.
      
      Following patches are included:
      1. Fixed a couple compiler warnings for extra extern
         Wed, 14 Mar 2007 21:12:19 +0000
      2. Cleanup for internal Reference Object.
         Wed, 27 Aug 2008 10:11:30 -0700
      3. Debugger: Lock method args for multithread command.
         Fri, 24 Apr 2009 12:28:49 -0700
      4. Debugger: Add max count argument for Batch command.
         Tue, 29 Sep 2009 12:31:58 -0700
      5. Add new host interfaces for _OSI support.
         Thu, 5 Aug 2010 14:18:28 -0700
      6. Increase debugger buffer size for method return objects.
         Wed, 17 Nov 2010 13:48:30 -0800
      7. Debugger: Add command to display status of global handlers.
         Tue, 25 Jan 2011 13:47:58 -0800
      8. Debugger: Split large dbcmds.c file.
         Wed, 26 Jan 2011 13:03:41 -0800
      9. Debugger/AcpiExec: Add support to pass complex args to methods.
         Tue, 17 May 2011 13:33:39 -0700
      10.Debugger: Add Template command to dump resource templates.
         Fri, 28 Oct 2011 14:18:51 -0700
      11.Support for custom ACPICA build for ACPI 5.0 reduced hardware.
         Wed, 1 Feb 2012 13:18:17 -0800
      12.Debugger: Improve command help support.
         Wed, 15 Feb 2012 07:59:26 -0800
      13.Update ACPI_HW_DEPENDENT* macro invocations.
         Wed, 15 Feb 2012 08:14:08 -0800
      14.Debugger: Rename function to simplify source code conversion.
         Wed, 13 Jun 2012 14:23:06 -0700
      15.Debugger: Enhance "Tables" and "Unload" commands.
         Fri, 29 Jun 2012 13:10:58 -0700
      16.Debugger: update prototype for AcpiDbSleep function.
         Fri, 17 Aug 2012 13:43:02 -0700
      
      This patch will not affect the generated vmlinx binary.
      This will decrease 264 lines of 20120913 divergence.diff.
      Signed-off-by: NRobert Moore <robert.moore@intel.com>
      Signed-off-by: NLv Zheng <lv.zheng@intel.com>
      Signed-off-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
      f540fadf
    • L
      ACPICA: Fix unmerged utility divergences. · 6d33b6be
      Lv Zheng 提交于
      Utility improvements in ACPICA are partial ignored by ACPICA Linux
      release.  This will lead to divergences between Linux and ACPICA.
      This patch ports the entire "utility" into Linux and makes them
      igored in the compilation stage by "ACPI_FUTURE_USAGE".
      The following "Utility" files have been ported into the Linux:
        drivers/acpi/uttrack.c
        drivers/acpi/utcache.c
        drivers/acpi/utids.c
      
      This patch will not affect the generated vmlinx binary.
      This will decrease 274 lines of 20120913 divergence.diff.
      Signed-off-by: NRobert Moore <robert.moore@intel.com>
      Signed-off-by: NLv Zheng <lv.zheng@intel.com>
      Signed-off-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
      6d33b6be
    • B
      Cleanup of invalid ACPI name handling and repair · 45dcd315
      Bob Moore 提交于
       Implemented a change/cleanup for the handling of invalid ACPI names.
       Names are now validated and repaired only when
       1) entering a new name into the namespace and
       2) disassembling a named AML opcode. A warning is only displayed in
          debug mode or when the interpreter is in "strict" mode, since some
          working machines do in fact contain invalid ACPI names.
      Signed-off-by: NLv Zheng <lv.zheng@intel.com>
      Signed-off-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
      45dcd315
  2. 11 11月, 2012 3 次提交
    • L
      Linux 3.7-rc5 · 77b67063
      Linus Torvalds 提交于
      77b67063
    • L
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net · b251f0f3
      Linus Torvalds 提交于
      Pull networking fixes from David Miller:
       "Bug fixes galore, mostly in drivers as is often the case:
      
        1) USB gadget and cdc_eem drivers need adjustments to their frame size
           lengths in order to handle VLANs correctly.  From Ian Coolidge.
      
        2) TIPC and several network drivers erroneously call tasklet_disable
           before tasklet_kill, fix from Xiaotian Feng.
      
        3) r8169 driver needs to apply the WOL suspend quirk to more chipsets,
           fix from Cyril Brulebois.
      
        4) Fix multicast filters on RTL_GIGA_MAC_VER_35 r8169 chips, from
           Nathan Walp.
      
        5) FDB netlink dumps should use RTM_NEWNEIGH as the message type, not
           zero.  From John Fastabend.
      
        6) Fix smsc95xx tx checksum offload on big-endian, from Steve
           Glendinning.
      
        7) __inet_diag_dump() needs to repsect and report the error value
           returned from inet_diag_lock_handler() rather than ignore it.
           Otherwise if an inet diag handler is not available for a particular
           protocol, we essentially report success instead of giving an error
           indication.  Fix from Cyrill Gorcunov.
      
        8) When the QFQ packet scheduler sees TSO/GSO packets it does not
           handle things properly, and in fact ends up corrupting it's
           datastructures as well as mis-schedule packets.  Fix from Paolo
           Valente.
      
        9) Fix oopser in skb_loop_sk(), from Eric Leblond.
      
        10) CXGB4 passes partially uninitialized datastructures in to FW
            commands, fix from Vipul Pandya.
      
        11) When we send unsolicited ipv6 neighbour advertisements, we should
            send them to the link-local allnodes multicast address, as per
            RFC4861.  Fix from Hannes Frederic Sowa.
      
        12) There is some kind of bug in the usbnet's kevent deferral
            mechanism, but more immediately when it triggers an uncontrolled
            stream of kernel messages spam the log.  Rate limit the error log
            message triggered when this problem occurs, as sending thousands
            of error messages into the kernel log doesn't help matters at all,
            and in fact makes further diagnosis more difficult.
      
            From Steve Glendinning.
      
        13) Fix gianfar restore from hibernation, from Wang Dongsheng.
      
        14) The netlink message attribute sizes are wrong in the ipv6 GRE
            driver, it was using the size of ipv4 addresses instead of ipv6
            ones :-) Fix from Nicolas Dichtel."
      
      * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net:
        gre6: fix rtnl dump messages
        gianfar: ethernet vanishes after restoring from hibernation
        usbnet: ratelimit kevent may have been dropped warnings
        ipv6: send unsolicited neighbour advertisements to all-nodes
        net: usb: cdc_eem: Fix rx skb allocation for 802.1Q VLANs
        usb: gadget: g_ether: fix frame size check for 802.1Q
        cxgb4: Fix initialization of SGE_CONTROL register
        isdn: Make CONFIG_ISDN depend on CONFIG_NETDEVICES
        cxgb4: Initialize data structures before using.
        af-packet: fix oops when socket is not present
        pkt_sched: enable QFQ to support TSO/GSO
        net: inet_diag -- Return error code if protocol handler is missed
        net: bnx2x: Fix typo in bnx2x driver
        smsc95xx: fix tx checksum offload for big endian
        rtnetlink: Use nlmsg type RTM_NEWNEIGH from dflt fdb dump
        ptp: update adjfreq callback description
        r8169: allow multicast packets on sub-8168f chipset.
        r8169: Fix WoL on RTL8168d/8111d.
        drivers/net: use tasklet_kill in device remove/close process
        tipc: do not use tasklet_disable before tasklet_kill
      b251f0f3
    • L
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc · 2b1768f3
      Linus Torvalds 提交于
      Pull sparc fixes from David Miller:
       "Several build/bug fixes for sparc, including:
      
        1) Configuring a mix of static vs.  modular sparc64 crypto modules
           didn't work, remove an ill-conceived attempt to only have to build
           the device match table for these drivers once to fix the problem.
      
           Reported by Meelis Roos.
      
        2) Make the montgomery multiple/square and mpmul instructions actually
           usable in 32-bit tasks.  Essentially this involves providing 32-bit
           userspace with a way to use a 64-bit stack when it needs to.
      
        3) Our sparc64 atomic backoffs don't yield cpu strands properly on
           Niagara chips.  Use pause instruction when available to achieve
           this, otherwise use a benign instruction we know blocks the strand
           for some time.
      
        4) Wire up kcmp
      
        5) Fix the build of various drivers by removing the unnecessary
           blocking of OF_GPIO when SPARC.
      
        6) Fix unintended regression wherein of_address_to_resource stopped
           being provided.  Fix from Andreas Larsson.
      
        7) Fix NULL dereference in leon_handle_ext_irq(), also from Andreas
           Larsson."
      
      * git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc:
        sparc64: Fix build with mix of modular vs. non-modular crypto drivers.
        sparc: Support atomic64_dec_if_positive properly.
        of/address: sparc: Declare of_address_to_resource() as an extern function for sparc again
        sparc32, leon: Check for existent irq_map entry in leon_handle_ext_irq
        sparc: Add sparc support for platform_get_irq()
        sparc: Allow OF_GPIO on sparc.
        qlogicpti: Fix build warning.
        sparc: Wire up sys_kcmp.
        sparc64: Improvde documentation and readability of atomic backoff code.
        sparc64: Use pause instruction when available.
        sparc64: Fix cpu strand yielding.
        sparc64: Make montmul/montsqr/mpmul usable in 32-bit threads.
      2b1768f3
  3. 10 11月, 2012 17 次提交
  4. 09 11月, 2012 14 次提交
    • S
      xen/arm: Fix compile errors when drivers are compiled as modules (export more). · ab277bbf
      Stefano Stabellini 提交于
      The commit 911dec0d
      "xen/arm: Fix compile errors when drivers are compiled as modules." exports
      the neccessary functions. But to guard ourselves against out-of-tree modules
      and future drivers hitting this, lets export all of the relevant
      hypercalls.
      Acked-by: NArnd Bergmann <arnd@arndb.de>
      Signed-off-by: NStefano Stabellini <stefano.stabellini@eu.citrix.com>
      Signed-off-by: NKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
      ab277bbf
    • T
      drm/vmwgfx: Fix a case where the code would BUG when trying to pin GMR memory · afcc87aa
      Thomas Hellstrom 提交于
      Signed-off-by: NThomas Hellstrom <thellstrom@vmware.com>
      Reviewed-by: NBrian Paul <brianp@vmware.com>
      Reviewed-by: NDmitry Torokhov <dtor@vmware.com>
      Cc: stable@vger.kernel.org
      Cc: linux-graphics-maintainer@vmware.com
      Signed-off-by: NDave Airlie <airlied@redhat.com>
      afcc87aa
    • T
      drm/vmwgfx: Fix hibernation device reset · 95e8f6a2
      Thomas Hellstrom 提交于
      The device would not reset properly when resuming from hibernation.
      Signed-off-by: NThomas Hellstrom <thellstrom@vmware.com>
      Reviewed-by: NBrian Paul <brianp@vmware.com>
      Reviewed-by: NDmitry Torokhov <dtor@vmware.com>
      Cc: stable@vger.kernel.org
      Cc: linux-graphics-maintainer@vmware.com
      Signed-off-by: NDave Airlie <airlied@redhat.com>
      95e8f6a2
    • L
      Merge tag 'pinctrl-for-v3.7-rc5' of... · a186d25d
      Linus Torvalds 提交于
      Merge tag 'pinctrl-for-v3.7-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl
      
      Pull pinctrl fixes from Linus Walleij:
      
       - A set of SPEAr pinctrl fixes that recently arrived
      
       - A fixup for the Samsung/Exynos Kconfig deps
      
      * tag 'pinctrl-for-v3.7-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl:
        pinctrl: samsung and exynos need to depend on OF && GPIOLIB
        pinctrl: SPEAr1340: Add clcd sleep mode pin configuration
        pinctrl: SPEAr1340: Make DDR reset & clock pads as gpio
        pinctrl: SPEAr1310: add register entries for enabling pad direction
        pinctrl: SPEAr1310: Separate out pci pins from pcie_sata pin group
        pinctrl: SPEAr1310: Fix value of PERIP_CFG reigster and MCIF_SEL_SHIFT
        pinctrl: SPEAr1310: fix clcd high resolution pin group name
        pinctrl: SPEAr320: Correct pad mux entries for rmii/smii
        pinctrl: SPEAr3xx: correct register space to configure pwm
        pinctrl: SPEAr: Don't update all non muxreg bits on pinctrl_disable
      a186d25d
    • L
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux · 4ad48bb7
      Linus Torvalds 提交于
      Pull s390 fixes from Martin Schwidefsky:
       "A couple of bug fixes.  I keep the fingers crossed that we now got
        transparent huge pages ready for prime time."
      
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux:
        s390/cio: fix length calculation in idset.c
        s390/sclp: fix addressing mode clobber
        s390: Move css limits from drivers/s390/cio/ to include/asm/.
        s390/thp: respect page protection in pmd_none() and pmd_present()
        s390/mm: use pmd_large() instead of pmd_huge()
        s390/cio: suppress 2nd path verification during resume
      4ad48bb7
    • L
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid · 976bacef
      Linus Torvalds 提交于
      Pull HID fix from Jiri Kosina:
       "This reverts a patch that causes regression in binding between HID
        devices and drivers during device unplug/replug cycle."
      
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid:
        HID: hidraw: put old deallocation mechanism in place
      976bacef
    • L
      Merge branch 'akpm' (Fixes from Andrew) · ce6d841e
      Linus Torvalds 提交于
      Merge misc fixes from Andrew Morton:
       "Five fixes"
      
      * emailed patches from Andrew Morton <akpm@linux-foundation.org>: (5 patches)
        h8300: add missing L1_CACHE_SHIFT
        mm: bugfix: set current->reclaim_state to NULL while returning from kswapd()
        fanotify: fix missing break
        revert "epoll: support for disabling items, and a self-test app"
        checkpatch: improve network block comment style checking
      ce6d841e
    • L
      Merge branch 'drm-fixes' of git://people.freedesktop.org/~airlied/linux · c0cba03b
      Linus Torvalds 提交于
      Pull drm fixes from Dave Airlie:
       "Just radeon and nouveau, mostly regressions fixers, and a couple of
        radeon register checker fixes."
      
      * 'drm-fixes' of git://people.freedesktop.org/~airlied/linux:
        drm/nouveau: fix acpi edid retrieval
        drm/nvc0/disp: fix regression in vblank semaphore release
        drm/nv40/mpeg: fix context handling
        drm/nv40/graph: fix typo in type names
        drm/nv41/vm: fix typo in type name
        drm/radeon/si: add some missing regs to the VM reg checker
        drm/radeon/cayman: add some missing regs to the VM reg checker
        drm/radeon/dce3: switch back to old pll allocation order for discrete
      c0cba03b
    • L
      Merge tag 'fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux · cdfe1565
      Linus Torvalds 提交于
      Pull virtio and module fixes from Rusty Russell:
       "YA module signing build tweak, and two cc'd to stable."
      
      * tag 'fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux:
        virtio: Don't access index after unregister.
        modules: don't break modules_install on external modules with no key.
        module: fix out-by-one error in kallsyms
      cdfe1565
    • L
      Merge tag 'for-linus-v3.7-rc5' of git://oss.sgi.com/xfs/xfs · a601e637
      Linus Torvalds 提交于
      Pull xfs bugfixes from Ben Myers:
      
       - fix for large transactions spanning multiple iclog buffers
      
       - zero the allocation_args structure on the stack before using it to
         determine whether to use a worker for allocation
       - move allocation stack switch to xfs_bmapi_allocate in order to
         prevent deadlock on AGF buffers
      
       - growfs no longer reads in garbage for new secondary superblocks
      
       - silence a build warning
      
       - ensure that invalid buffers never get written to disk while on free
         list
      
       - don't vmap inode cluster buffers during free
      
       - fix buffer shutdown reference count mismatch
      
       - fix reading of wrapped log data
      
      * tag 'for-linus-v3.7-rc5' of git://oss.sgi.com/xfs/xfs:
        xfs: fix reading of wrapped log data
        xfs: fix buffer shudown reference count mismatch
        xfs: don't vmap inode cluster buffers during free
        xfs: invalidate allocbt blocks moved to the free list
        xfs: silence uninitialised f.file warning.
        xfs: growfs: don't read garbage for new secondary superblocks
        xfs: move allocation stack switch up to xfs_bmapi_allocate
        xfs: introduce XFS_BMAPI_STACK_SWITCH
        xfs: zero allocation_args on the kernel stack
        xfs: only update the last_sync_lsn when a transaction completes
      a601e637
    • F
      h8300: add missing L1_CACHE_SHIFT · 6893f567
      Fengguang Wu 提交于
      Fix the build error
      
        lib/atomic64.c: In function 'lock_addr':
        lib/atomic64.c:40:11: error: 'L1_CACHE_SHIFT' undeclared (first use in this function)
        lib/atomic64.c:40:11: note: each undeclared identifier is reported only once for each function it appears in
      Signed-off-by: NFengguang Wu <fengguang.wu@intel.com>
      Cc: Yoshinori Sato <ysato@users.sourceforge.jp>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      6893f567
    • T
      mm: bugfix: set current->reclaim_state to NULL while returning from kswapd() · b0a8cc58
      Takamori Yamaguchi 提交于
      In kswapd(), set current->reclaim_state to NULL before returning, as
      current->reclaim_state holds reference to variable on kswapd()'s stack.
      
      In rare cases, while returning from kswapd() during memory offlining,
      __free_slab() and freepages() can access the dangling pointer of
      current->reclaim_state.
      Signed-off-by: NTakamori Yamaguchi <takamori.yamaguchi@jp.sony.com>
      Signed-off-by: NAaditya Kumar <aaditya.kumar@ap.sony.com>
      Acked-by: NDavid Rientjes <rientjes@google.com>
      Cc: <stable@vger.kernel.org>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      b0a8cc58
    • E
      fanotify: fix missing break · 848561d3
      Eric Paris 提交于
      Anders Blomdell noted in 2010 that Fanotify lost events and provided a
      test case.  Eric Paris confirmed it was a bug and posted a fix to the
      list
      
        https://groups.google.com/forum/?fromgroups=#!topic/linux.kernel/RrJfTfyW2BE
      
      but never applied it.  Repeated attempts over time to actually get him
      to apply it have never had a reply from anyone who has raised it
      
      So apply it anyway
      Signed-off-by: NAlan Cox <alan@linux.intel.com>
      Reported-by: NAnders Blomdell <anders.blomdell@control.lth.se>
      Cc: Eric Paris <eparis@redhat.com>
      Cc: <stable@vger.kernel.org>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      848561d3
    • A
      revert "epoll: support for disabling items, and a self-test app" · a80a6b85
      Andrew Morton 提交于
      Revert commit 03a7beb5 ("epoll: support for disabling items, and a
      self-test app") pending resolution of the issues identified by Michael
      Kerrisk, copied below.
      
      We'll revisit this for 3.8.
      
      : I've taken a look at this patch as it currently stands in 3.7-rc1, and
      : done a bit of testing. (By the way, the test program
      : tools/testing/selftests/epoll/test_epoll.c does not compile...)
      :
      : There are one or two places where the behavior seems a little strange,
      : so I have a question or two at the end of this mail. But other than
      : that, I want to check my understanding so that the interface can be
      : correctly documented.
      :
      : Just to go though my understanding, the problem is the following
      : scenario in a multithreaded application:
      :
      : 1. Multiple threads are performing epoll_wait() operations,
      :    and maintaining a user-space cache that contains information
      :    corresponding to each file descriptor being monitored by
      :    epoll_wait().
      :
      : 2. At some point, a thread wants to delete (EPOLL_CTL_DEL)
      :    a file descriptor from the epoll interest list, and
      :    delete the corresponding record from the user-space cache.
      :
      : 3. The problem with (2) is that some other thread may have
      :    previously done an epoll_wait() that retrieved information
      :    about the fd in question, and may be in the middle of using
      :    information in the cache that relates to that fd. Thus,
      :    there is a potential race.
      :
      : 4. The race can't solved purely in user space, because doing
      :    so would require applying a mutex across the epoll_wait()
      :    call, which would of course blow thread concurrency.
      :
      : Right?
      :
      : Your solution is the EPOLL_CTL_DISABLE operation. I want to
      : confirm my understanding about how to use this flag, since
      : the description that has accompanied the patches so far
      : has been a bit sparse
      :
      : 0. In the scenario you're concerned about, deleting a file
      :    descriptor means (safely) doing the following:
      :    (a) Deleting the file descriptor from the epoll interest list
      :        using EPOLL_CTL_DEL
      :    (b) Deleting the corresponding record in the user-space cache
      :
      : 1. It's only meaningful to use this EPOLL_CTL_DISABLE in
      :    conjunction with EPOLLONESHOT.
      :
      : 2. Using EPOLL_CTL_DISABLE without using EPOLLONESHOT in
      :    conjunction is a logical error.
      :
      : 3. The correct way to code multithreaded applications using
      :    EPOLL_CTL_DISABLE and EPOLLONESHOT is as follows:
      :
      :    a. All EPOLL_CTL_ADD and EPOLL_CTL_MOD operations should
      :       should EPOLLONESHOT.
      :
      :    b. When a thread wants to delete a file descriptor, it
      :       should do the following:
      :
      :       [1] Call epoll_ctl(EPOLL_CTL_DISABLE)
      :       [2] If the return status from epoll_ctl(EPOLL_CTL_DISABLE)
      :           was zero, then the file descriptor can be safely
      :           deleted by the thread that made this call.
      :       [3] If the epoll_ctl(EPOLL_CTL_DISABLE) fails with EBUSY,
      :           then the descriptor is in use. In this case, the calling
      :           thread should set a flag in the user-space cache to
      :           indicate that the thread that is using the descriptor
      :           should perform the deletion operation.
      :
      : Is all of the above correct?
      :
      : The implementation depends on checking on whether
      : (events & ~EP_PRIVATE_BITS) == 0
      : This replies on the fact that EPOLL_CTL_AD and EPOLL_CTL_MOD always
      : set EPOLLHUP and EPOLLERR in the 'events' mask, and EPOLLONESHOT
      : causes those flags (as well as all others in ~EP_PRIVATE_BITS) to be
      : cleared.
      :
      : A corollary to the previous paragraph is that using EPOLL_CTL_DISABLE
      : is only useful in conjunction with EPOLLONESHOT. However, as things
      : stand, one can use EPOLL_CTL_DISABLE on a file descriptor that does
      : not have EPOLLONESHOT set in 'events' This results in the following
      : (slightly surprising) behavior:
      :
      : (a) The first call to epoll_ctl(EPOLL_CTL_DISABLE) returns 0
      :     (the indicator that the file descriptor can be safely deleted).
      : (b) The next call to epoll_ctl(EPOLL_CTL_DISABLE) fails with EBUSY.
      :
      : This doesn't seem particularly useful, and in fact is probably an
      : indication that the user made a logic error: they should only be using
      : epoll_ctl(EPOLL_CTL_DISABLE) on a file descriptor for which
      : EPOLLONESHOT was set in 'events'. If that is correct, then would it
      : not make sense to return an error to user space for this case?
      
      Cc: Michael Kerrisk <mtk.manpages@gmail.com>
      Cc: "Paton J. Lewis" <palewis@adobe.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      a80a6b85