1. 06 1月, 2012 1 次提交
  2. 03 1月, 2012 1 次提交
  3. 15 12月, 2011 1 次提交
  4. 14 12月, 2011 1 次提交
  5. 13 12月, 2011 1 次提交
  6. 08 12月, 2011 1 次提交
  7. 07 12月, 2011 7 次提交
    • S
      SUNRPC: create svc_xprt in proper network namespace · bd4620dd
      Stanislav Kinsbursky 提交于
      This patch makes svc_xprt inherit network namespace link from its socket.
      Signed-off-by: NStanislav Kinsbursky <skinsbursky@parallels.com>
      Signed-off-by: NJ. Bruce Fields <bfields@redhat.com>
      bd4620dd
    • J
      svcrpc: update outdated BKL comment · 94cf3179
      J. Bruce Fields 提交于
      Signed-off-by: NJ. Bruce Fields <bfields@redhat.com>
      94cf3179
    • M
      nfsd41: allow non-reclaim open-by-fh's in 4.1 · 0cf99b91
      Mi Jinlong 提交于
      With NFSv4.0 it was safe to assume that open-by-filehandles were always
      reclaims.
      
      With NFSv4.1 there are non-reclaim open-by-filehandle operations, so we
      should ensure we're only insisting on reclaims in the
      OPEN_CLAIM_PREVIOUS case.
      Signed-off-by: NMi Jinlong <mijinlong@cn.fujitsu.com>
      Signed-off-by: NJ. Bruce Fields <bfields@redhat.com>
      0cf99b91
    • J
      svcrpc: avoid memory-corruption on pool shutdown · b4f36f88
      J. Bruce Fields 提交于
      Socket callbacks use svc_xprt_enqueue() to add an xprt to a
      pool->sp_sockets list.  In normal operation a server thread will later
      come along and take the xprt off that list.  On shutdown, after all the
      threads have exited, we instead manually walk the sv_tempsocks and
      sv_permsocks lists to find all the xprt's and delete them.
      
      So the sp_sockets lists don't really matter any more.  As a result,
      we've mostly just ignored them and hoped they would go away.
      
      Which has gotten us into trouble; witness for example ebc63e53
      "svcrpc: fix list-corrupting race on nfsd shutdown", the result of Ben
      Greear noticing that a still-running svc_xprt_enqueue() could re-add an
      xprt to an sp_sockets list just before it was deleted.  The fix was to
      remove it from the list at the end of svc_delete_xprt().  But that only
      made corruption less likely--I can see nothing that prevents a
      svc_xprt_enqueue() from adding another xprt to the list at the same
      moment that we're removing this xprt from the list.  In fact, despite
      the earlier xpo_detach(), I don't even see what guarantees that
      svc_xprt_enqueue() couldn't still be running on this xprt.
      
      So, instead, note that svc_xprt_enqueue() essentially does:
      	lock sp_lock
      		if XPT_BUSY unset
      			add to sp_sockets
      	unlock sp_lock
      
      So, if we do:
      
      	set XPT_BUSY on every xprt.
      	Empty every sp_sockets list, under the sp_socks locks.
      
      Then we're left knowing that the sp_sockets lists are all empty and will
      stay that way, since any svc_xprt_enqueue() will check XPT_BUSY under
      the sp_lock and see it set.
      
      And *then* we can continue deleting the xprt's.
      
      (Thanks to Jeff Layton for being correctly suspicious of this code....)
      
      Cc: Ben Greear <greearb@candelatech.com>
      Cc: Jeff Layton <jlayton@redhat.com>
      Cc: stable@kernel.org
      Signed-off-by: NJ. Bruce Fields <bfields@redhat.com>
      b4f36f88
    • J
      svcrpc: destroy server sockets all at once · 2fefb8a0
      J. Bruce Fields 提交于
      There's no reason I can see that we need to call sv_shutdown between
      closing the two lists of sockets.
      
      Cc: stable@kernel.org
      Signed-off-by: NJ. Bruce Fields <bfields@redhat.com>
      2fefb8a0
    • J
      svcrpc: make svc_delete_xprt static · 7710ec36
      J. Bruce Fields 提交于
      Signed-off-by: NJ. Bruce Fields <bfields@redhat.com>
      7710ec36
    • S
      nfsd: Fix oops when parsing a 0 length export · b2ea70af
      Sasha Levin 提交于
      expkey_parse() oopses when handling a 0 length export. This is easily
      triggerable from usermode by writing 0 bytes into
      '/proc/[proc id]/net/rpc/nfsd.fh/channel'.
      
      Below is the log:
      
      [ 1402.286893] BUG: unable to handle kernel paging request at ffff880077c49fff
      [ 1402.287632] IP: [<ffffffff812b4b99>] expkey_parse+0x28/0x2e1
      [ 1402.287632] PGD 2206063 PUD 1fdfd067 PMD 1ffbc067 PTE 8000000077c49160
      [ 1402.287632] Oops: 0000 [#1] PREEMPT SMP DEBUG_PAGEALLOC
      [ 1402.287632] CPU 1
      [ 1402.287632] Pid: 20198, comm: trinity Not tainted 3.2.0-rc2-sasha-00058-gc65cd37 #6
      [ 1402.287632] RIP: 0010:[<ffffffff812b4b99>]  [<ffffffff812b4b99>] expkey_parse+0x28/0x2e1
      [ 1402.287632] RSP: 0018:ffff880077f0fd68  EFLAGS: 00010292
      [ 1402.287632] RAX: ffff880077c49fff RBX: 00000000ffffffea RCX: 0000000001043400
      [ 1402.287632] RDX: 0000000000000000 RSI: ffff880077c4a000 RDI: ffffffff82283de0
      [ 1402.287632] RBP: ffff880077f0fe18 R08: 0000000000000001 R09: ffff880000000000
      [ 1402.287632] R10: 0000000000000000 R11: 0000000000000001 R12: ffff880077c4a000
      [ 1402.287632] R13: ffffffff82283de0 R14: 0000000001043400 R15: ffffffff82283de0
      [ 1402.287632] FS:  00007f25fec3f700(0000) GS:ffff88007d400000(0000) knlGS:0000000000000000
      [ 1402.287632] CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b
      [ 1402.287632] CR2: ffff880077c49fff CR3: 0000000077e1d000 CR4: 00000000000406e0
      [ 1402.287632] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
      [ 1402.287632] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
      [ 1402.287632] Process trinity (pid: 20198, threadinfo ffff880077f0e000, task ffff880077db17b0)
      [ 1402.287632] Stack:
      [ 1402.287632]  ffff880077db17b0 ffff880077c4a000 ffff880077f0fdb8 ffffffff810b411e
      [ 1402.287632]  ffff880000000000 ffff880077db17b0 ffff880077c4a000 ffffffff82283de0
      [ 1402.287632]  0000000001043400 ffffffff82283de0 ffff880077f0fde8 ffffffff81111f63
      [ 1402.287632] Call Trace:
      [ 1402.287632]  [<ffffffff810b411e>] ? lock_release+0x1af/0x1bc
      [ 1402.287632]  [<ffffffff81111f63>] ? might_fault+0x97/0x9e
      [ 1402.287632]  [<ffffffff81111f1a>] ? might_fault+0x4e/0x9e
      [ 1402.287632]  [<ffffffff81a8bcf2>] cache_do_downcall+0x3e/0x4f
      [ 1402.287632]  [<ffffffff81a8c950>] cache_write.clone.16+0xbb/0x130
      [ 1402.287632]  [<ffffffff81a8c9df>] ? cache_write_pipefs+0x1a/0x1a
      [ 1402.287632]  [<ffffffff81a8c9f8>] cache_write_procfs+0x19/0x1b
      [ 1402.287632]  [<ffffffff8118dc54>] proc_reg_write+0x8e/0xad
      [ 1402.287632]  [<ffffffff8113fe81>] vfs_write+0xaa/0xfd
      [ 1402.287632]  [<ffffffff8114142d>] ? fget_light+0x35/0x9e
      [ 1402.287632]  [<ffffffff8113ff8b>] sys_write+0x48/0x6f
      [ 1402.287632]  [<ffffffff81bbdb92>] system_call_fastpath+0x16/0x1b
      [ 1402.287632] Code: c0 c9 c3 55 48 63 d2 48 89 e5 48 8d 44 32 ff 41 57 41 56 41 55 41 54 53 bb ea ff ff ff 48 81 ec 88 00 00 00 48 89 b5 58 ff ff ff
      [ 1402.287632]  38 0a 0f 85 89 02 00 00 c6 00 00 48 8b 3d 44 4a e5 01 48 85
      [ 1402.287632] RIP  [<ffffffff812b4b99>] expkey_parse+0x28/0x2e1
      [ 1402.287632]  RSP <ffff880077f0fd68>
      [ 1402.287632] CR2: ffff880077c49fff
      [ 1402.287632] ---[ end trace 368ef53ff773a5e3 ]---
      
      Cc: "J. Bruce Fields" <bfields@fieldses.org>
      Cc: Neil Brown <neilb@suse.de>
      Cc: linux-nfs@vger.kernel.org
      Cc: stable@kernel.org
      Signed-off-by: NSasha Levin <levinsasha928@gmail.com>
      Signed-off-by: NJ. Bruce Fields <bfields@redhat.com>
      b2ea70af
  8. 26 11月, 2011 1 次提交
  9. 16 11月, 2011 2 次提交
  10. 09 11月, 2011 1 次提交
  11. 08 11月, 2011 23 次提交
    • J
      nfsd4: hash lockowners to simplify RELEASE_LOCKOWNER · 06f1f864
      J. Bruce Fields 提交于
      Hash lockowners on just the owner string rather than on (owner, inode).
      This makes the owner-string lookup needed for RELEASE_LOCKOWNER simpler
      (currently it's doing at a linear search through the entire hash
      table!).  That may come at the expense of making (owner, inode) lookups
      more expensive if a client reuses the same lockowner across multiple
      files.  We might add a separate lookup for that.
      Signed-off-by: NJ. Bruce Fields <bfields@redhat.com>
      06f1f864
    • B
      NFSD: Remove unnecessary whitespace · c7e8472c
      Bryan Schumaker 提交于
      The close parenthesis was hard to find with it spaced so far over.
      Signed-off-by: NBryan Schumaker <bjschuma@netapp.com>
      [bfields@redhat.com: get all these lines under 80 chars while we're here]
      Signed-off-by: NJ. Bruce Fields <bfields@redhat.com>
      c7e8472c
    • B
      NFSD: Call nfsd4_init_slabs() from init_nfsd() · 72083396
      Bryan Schumaker 提交于
      init_nfsd() was calling free_slabs() during cleanup code, but the call
      to init_slabs() was hidden in nfsd4_state_init().  This could be
      confusing to people unfamiliar with the code.
      Signed-off-by: NBryan Schumaker <bjschuma@netapp.com>
      Signed-off-by: NJ. Bruce Fields <bfields@redhat.com>
      72083396
    • B
      114a0a08
    • B
      NFSD: Added fault injection script · 800b927b
      Bryan Schumaker 提交于
      This script provides a convenient way to use the NFSD fault injection
      framework.  Fault injection writes to dmesg using the KERN_INFO flag, so
      this script will compare the before and after output of `dmesg` to show
      the user what happened
      Signed-off-by: NBryan Schumaker <bjschuma@netapp.com>
      Signed-off-by: NJ. Bruce Fields <bfields@redhat.com>
      800b927b
    • B
      NFSD: Added fault injection · 65178db4
      Bryan Schumaker 提交于
      Fault injection on the NFS server makes it easier to test the client's
      state manager and recovery threads.  Simulating errors on the server is
      easier than finding the right conditions that cause them naturally.
      
      This patch uses debugfs to add a simple framework for fault injection to
      the server.  This framework is a config option, and can be enabled
      through CONFIG_NFSD_FAULT_INJECTION.  Assuming you have debugfs mounted
      to /sys/debug, a set of files will be created in /sys/debug/nfsd/.
      Writing to any of these files will cause the corresponding action and
      write a log entry to dmesg.
      Signed-off-by: NBryan Schumaker <bjschuma@netapp.com>
      Signed-off-by: NJ. Bruce Fields <bfields@redhat.com>
      65178db4
    • J
      nfsd4: maintain one seqid stream per (lockowner, file) · 64a284d0
      J. Bruce Fields 提交于
      Instead of creating a new lockowner and stateid for every
      open_to_lockowner call, reuse the existing lockowner if it exists.
      Reported-by: NTrond Myklebust <Trond.Myklebust@netapp.com>
      Signed-off-by: NJ. Bruce Fields <bfields@redhat.com>
      64a284d0
    • J
      nfsd4: cleanup lock clientid handling in sessions case · 684e5638
      J. Bruce Fields 提交于
      I'd rather the "ignore clientid in sessions case" rule be enforced in
      just one place.
      Signed-off-by: NJ. Bruce Fields <bfields@redhat.com>
      684e5638
    • J
      nfsd4: fix lockowner matching · b93d87c1
      J. Bruce Fields 提交于
      Lockowners are looked up by file as well as by owner, but we were
      forgetting to do a comparison on the file.  This could cause an
      incorrect result from lockt.
      
      (Note looking up the inode from the lockowner is pretty awkward here.
      The data structures need fixing.)
      
      Cc: stable@kernel.org
      Signed-off-by: NJ. Bruce Fields <bfields@redhat.com>
      b93d87c1
    • N
      Update NFSD MAINTAINER · f8e6defe
      NeilBrown 提交于
      Neil hasn't really been at all active as a maintainer for some years now.
      So move his maintainership to CREDITS
      Signed-off-by: NNeilBrown <neilb@suse.de>
      Signed-off-by: NJ. Bruce Fields <bfields@redhat.com>
      f8e6defe
    • L
      Linux 3.2-rc1 · 1ea6b8f4
      Linus Torvalds 提交于
      .. with new name.  Because nothing says "really solid kernel release"
      like naming it after an extinct animal that just happened to be in the
      news lately.
      1ea6b8f4
    • L
      Merge branch 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap · 075cb105
      Linus Torvalds 提交于
      * 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap: (31 commits)
        ARM: OMAP: Fix export.h or module.h includes
        ARM: OMAP: omap_device: Include linux/export.h
        ARM: OMAP2: Fix H4 matrix keyboard warning
        ARM: OMAP1: Remove unused omap-alsa.h
        ARM: OMAP1: Fix warnings about enabling 32 KiHz timer
        ARM: OMAP2+: timer: Remove omap_device_pm_latency
        ARM: OMAP2+: clock data: Remove redundant timer clkdev
        ARM: OMAP: Devkit8000: Remove double omap_mux_init_gpio
        ARM: OMAP: usb: musb: OMAP: Delete unused function
        MAINTAINERS: Update linux-omap git repository
        ARM: OMAP: change get_context_loss_count ret value to int
        ARM: OMAP4: hsmmc: configure SDMMC1_DR0 properly
        ARM: OMAP4: hsmmc: Fix Pbias configuration on regulator OFF
        ARM: OMAP3: hwmod: fix variant registration and remove SmartReflex from common list
        ARM: OMAP: I2C: Fix omap_register_i2c_bus() return value on success
        ARM: OMAP: dmtimer: Include linux/module.h
        ARM: OMAP2+: l3-noc: Include linux/module.h
        ARM: OMAP2+: devices: Fixes for McPDM
        ARM: OMAP: Fix errors and warnings when building for one board
        ARM: OMAP3: PM: restrict erratum i443 handling to OMAP3430 only
        ...
      075cb105
    • A
      VFS: we need to set LOOKUP_JUMPED on mountpoint crossing · a3fbbde7
      Al Viro 提交于
      Mountpoint crossing is similar to following procfs symlinks - we do
      not get ->d_revalidate() called for dentry we have arrived at, with
      unpleasant consequences for NFS4.
      
      Simple way to reproduce the problem in mainline:
      
          cat >/tmp/a.c <<'EOF'
          #include <unistd.h>
          #include <fcntl.h>
          #include <stdio.h>
          main()
          {
                  struct flock fl = {.l_type = F_RDLCK, .l_whence = SEEK_SET, .l_len = 1};
                  if (fcntl(0, F_SETLK, &fl))
                          perror("setlk");
          }
          EOF
          cc /tmp/a.c -o /tmp/test
      
      then on nfs4:
      
          mount --bind file1 file2
          /tmp/test < file1		# ok
          /tmp/test < file2		# spews "setlk: No locks available"...
      
      What happens is the missing call of ->d_revalidate() after mountpoint
      crossing and that's where NFS4 would issue OPEN request to server.
      
      The fix is simple - treat mountpoint crossing the same way we deal with
      following procfs-style symlinks.  I.e.  set LOOKUP_JUMPED...
      
      Cc: stable@kernel.org
      Signed-off-by: NAl Viro <viro@zeniv.linux.org.uk>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      a3fbbde7
    • L
      Merge branch 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 54a0f913
      Linus Torvalds 提交于
      * 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        perf top: Fix live annotation in the --stdio interface
        perf top tui: Don't recalc column widths considering just the first page
        perf report: Add progress bar when processing time ordered events
        perf hists browser: Warn about lost events
        perf tools: Fix a typo of command name as trace-cmd
        perf hists: Fix recalculation of total_period when sorting entries
        perf header: Fix build on old systems
        perf ui browser: Handle K_RESIZE in dialog windows
        perf ui browser: No need to switch char sets that often
        perf hists browser: Use K_TIMER
        perf ui: Rename ui__warning_paranoid to ui__error_paranoid
        perf ui: Reimplement the popup windows using libslang
        perf ui: Reimplement ui__popup_menu using ui__browser
        perf ui: Reimplement ui_helpline using libslang
        perf ui: Improve handling sigwinch a bit
        perf ui progress: Reimplement using slang
        perf evlist: Fix grouping of multiple events
      54a0f913
    • T
      Merge branch 'fixes-modulesplit' into fixes · d30cc16c
      Tony Lindgren 提交于
      d30cc16c
    • T
      ARM: OMAP: Fix export.h or module.h includes · a1bcc1dc
      Tony Lindgren 提交于
      Commit 32aaeffb (Merge branch
      'modsplit-Oct31_2011'...) caused some build errors. Fix these
      and make sure we always have export.h or module.h included
      for MODULE_ and EXPORT_SYMBOL users:
      
      $ grep -rl ^MODULE_ arch/arm/*omap*/*.c | xargs \
        grep -L linux/module.h
        arch/arm/mach-omap2/dsp.c
        arch/arm/mach-omap2/mailbox.c
        arch/arm/mach-omap2/omap-iommu.c
        arch/arm/mach-omap2/smartreflex.c
      
      Also check we either have export.h or module.h included
      for the files exporting symbols:
      
      $ grep -rl EXPORT_SYMBOL arch/arm/*omap*/*.c | xargs \
        grep -L linux/export.h | xargs grep -L linux/module.h
      
      Cc: Russell King <rmk+kernel@arm.linux.org.uk>
      Signed-off-by: NTony Lindgren <tony@atomide.com>
      a1bcc1dc
    • A
      ARM: OMAP: omap_device: Include linux/export.h · 55581415
      Axel Lin 提交于
      Include linux/export.h to fix below build warning:
      
        CC      arch/arm/plat-omap/omap_device.o
      arch/arm/plat-omap/omap_device.c:1055: warning: data definition has no type or storage class
      arch/arm/plat-omap/omap_device.c:1055: warning: type defaults to 'int' in declaration of 'EXPORT_SYMBOL'
      arch/arm/plat-omap/omap_device.c:1055: warning: parameter names (without types) in function declaration
      Signed-off-by: NAxel Lin <axel.lin@gmail.com>
      Signed-off-by: NTony Lindgren <tony@atomide.com>
      55581415
    • L
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net · 94956eed
      Linus Torvalds 提交于
      * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (47 commits)
        forcedeth: fix a few sparse warnings (variable shadowing)
        forcedeth: Improve stats counters
        forcedeth: remove unneeded stats updates
        forcedeth: Acknowledge only interrupts that are being processed
        forcedeth: fix race when unloading module
        MAINTAINERS/rds: update maintainer
        wanrouter: Remove kernel_lock annotations
        usbnet: fix oops in usbnet_start_xmit
        ixgbe: Fix compile for kernel without CONFIG_PCI_IOV defined
        etherh: Add MAINTAINERS entry for etherh
        bonding: comparing a u8 with -1 is always false
        sky2: fix regression on Yukon Optima
        netlink: clarify attribute length check documentation
        netlink: validate NLA_MSECS length
        i825xx:xscale:8390:freescale: Fix Kconfig dependancies
        macvlan: receive multicast with local address
        tg3: Update version to 3.121
        tg3: Eliminate timer race with reset_task
        tg3: Schedule at most one tg3_reset_task run
        tg3: Obtain PCI function number from device
        ...
      94956eed
    • A
      50e69630
    • D
      forcedeth: fix a few sparse warnings (variable shadowing) · e45a6187
      david decotigny 提交于
      This fixes the following sparse warnings:
      drivers/net/ethernet/nvidia/forcedeth.c:2113:7: warning: symbol 'size' shadows an earlier one
      drivers/net/ethernet/nvidia/forcedeth.c:2102:6: originally declared here
      drivers/net/ethernet/nvidia/forcedeth.c:2155:7: warning: symbol 'size' shadows an earlier one
      drivers/net/ethernet/nvidia/forcedeth.c:2102:6: originally declared here
      drivers/net/ethernet/nvidia/forcedeth.c:2227:7: warning: symbol 'size' shadows an earlier one
      drivers/net/ethernet/nvidia/forcedeth.c:2215:6: originally declared here
      drivers/net/ethernet/nvidia/forcedeth.c:2271:7: warning: symbol 'size' shadows an earlier one
      drivers/net/ethernet/nvidia/forcedeth.c:2215:6: originally declared here
      drivers/net/ethernet/nvidia/forcedeth.c:2986:20: warning: symbol 'addr' shadows an earlier one
      drivers/net/ethernet/nvidia/forcedeth.c:2963:6: originally declared here
      Signed-off-by: NDavid Decotigny <david.decotigny@google.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      e45a6187
    • M
      forcedeth: Improve stats counters · 0bdfea8b
      Mandeep Baines 提交于
      Rx byte count was off; instead use the hardware's count.  Tx packet
      count was counting pre-TSO packets; instead count on-the-wire packets.
      Report hardware dropped frame count as rx_fifo_errors.
      
      - The count of transmitted packets reported by the forcedeth driver
        reports pre-TSO (TCP Segmentation Offload) packet counts and not the
        count of the number of packets sent on the wire. This change fixes
        the forcedeth driver to report the correct count. Fixed the code by
        copying the count stored in the NIC H/W to the value reported by the
        driver.
      
      - Count rx_drop_frame errors as rx_fifo_errors:
        We see a lot of rx_drop_frame errors if we disable the rx bottom-halves
        for too long.  Normally, rx_fifo_errors would be counted in this case.
        The rx_drop_frame error count is private to forcedeth and is not
        reported by ifconfig or sysfs.  The rx_fifo_errors count is currently
        unused in the forcedeth driver.  It is reported by ifconfig as overruns.
        This change reports rx_drop_frame errors as rx_fifo_errors.
      Signed-off-by: NDavid Decotigny <david.decotigny@google.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      0bdfea8b
    • D
      forcedeth: remove unneeded stats updates · 4687f3f3
      david decotigny 提交于
      Function ndo_get_stats() updates most of the stats from hardware
      registers, making the manual updates un-needed. This change removes
      these manual updates. Main exception is rx_missed_errors which needs
      manual update.
      
      Another exception is rx_packets, still updated manually in this commit
      to make sure this patch doesn't change behavior of driver. This will
      be addressed by a future patch.
      Signed-off-by: NDavid Decotigny <david.decotigny@google.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      4687f3f3
    • M
      forcedeth: Acknowledge only interrupts that are being processed · 2a4e7a08
      Mike Ditto 提交于
      This is to avoid a race, accidentally acknowledging an interrupt that
      we didn't notice and won't immediately process.  This is based solely
      on code inspection; it is not known if there was an actual bug here.
      Signed-off-by: NDavid Decotigny <david.decotigny@google.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      2a4e7a08