1. 14 10月, 2012 1 次提交
    • R
      ARM: config: sort select statements alphanumerically · b1b3f49c
      Russell King 提交于
      As suggested by Andrew Morton:
      
        This is a pet peeve of mine.  Any time there's a long list of items
        (header file inclusions, kconfig entries, array initalisers, etc) and
        someone wants to add a new item, they *always* go and stick it at the
        end of the list.
      
        Guys, don't do this.  Either put the new item into a randomly-chosen
        position or, probably better, alphanumerically sort the list.
      
      lets sort all our select statements alphanumerically.  This commit was
      created by the following perl:
      
      while (<>) {
      	while (/\\\s*$/) {
      		$_ .= <>;
      	}
      	undef %selects if /^\s*config\s+/;
      	if (/^\s+select\s+(\w+).*/) {
      		if (defined($selects{$1})) {
      			if ($selects{$1} eq $_) {
      				print STDERR "Warning: removing duplicated $1 entry\n";
      			} else {
      				print STDERR "Error: $1 differently selected\n".
      					"\tOld: $selects{$1}\n".
      					"\tNew: $_\n";
      				exit 1;
      			}
      		}
      		$selects{$1} = $_;
      		next;
      	}
      	if (%selects and (/^\s*$/ or /^\s+help/ or /^\s+---help---/ or
      			  /^endif/ or /^endchoice/)) {
      		foreach $k (sort (keys %selects)) {
      			print "$selects{$k}";
      		}
      		undef %selects;
      	}
      	print;
      }
      if (%selects) {
      	foreach $k (sort (keys %selects)) {
      		print "$selects{$k}";
      	}
      }
      
      It found two duplicates:
      
      Warning: removing duplicated S5P_SETUP_MIPIPHY entry
      Warning: removing duplicated HARDIRQS_SW_RESEND entry
      
      and they are identical duplicates, hence the shrinkage in the diffstat
      of two lines.
      
      We have four testers reporting success of this change (Tony, Stephen,
      Linus and Sekhar.)
      Acked-by: NJason Cooper <jason@lakedaemon.net>
      Acked-by: NTony Lindgren <tony@atomide.com>
      Acked-by: NStephen Warren <swarren@nvidia.com>
      Acked-by: NLinus Walleij <linus.walleij@linaro.org>
      Acked-by: NSekhar Nori <nsekhar@ti.com>
      Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      b1b3f49c
  2. 12 10月, 2012 18 次提交
    • L
      Merge branch 'v4l_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media · 4f1cd914
      Linus Torvalds 提交于
      Pull second set of media updates from Mauro Carvalho Chehab:
       "Despite its size, most of the stuff here is trivial.  This series
        contains:
      
         - s5p-mfc: additions at the driver and at the core to support H.264
           hardware codec;
         - Some improvements at s5p and davinci embedded drivers;
         - Some V4L2 compliance fixes applied on a few drivers;
         - Several random trivial patches, including several fixes and a few
           new board support additions;
      
        Notes:
      
         1) Some Exynos media patches were dependent on some -arm fixes that
            got merged on changeset 782cd9ee.  That's why this pull request is
            based that changeset.
      
         2) As promised, I reviewed the pending VB2 DMABUF series.
      
            While setting a test environment, it was noticed that the upstream
            support for Samsung Exynos 4 boards (smdk310 and Origen) are
            broken upstream, likely due to regressions: both defconfigs are
            wrong and regulator settings for both boards are broken.  That,
            allied with some bug at the dummy regulator driver, causes OOPSes
            during boot time.
      
            Long story short: even fixing the above, the proposed patches
            OOPSed when running the DMABUF test.  Not sure yet if the OOPSes
            are due to some other undetected regressions, or due to some bug
            on the patches.
      
            Due to the above, DMABUF patches for vb2 got NACKed for 3.7."
      
      * 'v4l_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media: (109 commits)
        [media] m5mols: Add missing #include <linux/sizes.h>
        [media] stk1160: Add support for S-Video input
        Revert "[media] omap3isp: Replace cpu_is_omap3630() with ISP revision check"
        [media]  dvb: LNA implementation changes
        [media] v4l2-ioctl: fix W=1 warnings
        [media] v4l2-ioctl: add blocks check for VIDIOC_SUBDEV_G/S_EDID
        [media] omap3isp: Fix compilation error in ispreg.h
        [media] rc-msi-digivox-ii: Add full scan keycodes
        [media] cx25821: testing the wrong variable
        [media] tda18271-common: hold the I2C adapter during write transfers
        [media] ds3000: add module parameter to force firmware upload
        [media] drivers/media: Remove unnecessary semicolon
        [media] winbond: remove space from driver name
        [media] iguanair: cannot send data from the stack
        [media] omap3isp: Replace cpu_is_omap3630() with ISP revision check
        [media] dvb-usb: print small buffers via %*ph
        [media] uvc: Add return code check at vb2_queue_init()
        [media] em28xx: Replace memcpy with struct assignment
        [media] bt8xx: Add video4linux control V4L2_CID_COLOR_KILLER
        [media] mem2mem_testdev: Use devm_kzalloc() in probe
        ...
      
      Conflicts:
      	arch/arm/mach-davinci/include/mach/da8xx.h
      4f1cd914
    • L
      Merge tag 'pinctrl-for-3.7-late' of... · 759e00b8
      Linus Torvalds 提交于
      Merge tag 'pinctrl-for-3.7-late' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl
      
      Pull second set of pinctrl patches from Linus Walleij:
       "Here is a late pinctrl pull request with stuff that wasn't quite
        tested at the first pull request.
      
        The main reason to not hold off is that the modifications to
        irq_domain_add_simple() as reviewed by Rob Herring introduce new
        infrastructure for irqdomains that will be useful for the next cycle:
        instead of sprinkling irq descriptor allocation all over the kernel
        wherever a "legacy" domain is registered, which is necessary for any
        platform using sparse IRQs, and many irq chips are say GPIO
        controllers which may be used with several systems, some with sparse
        IRQs some not, we push this into the irq_domain_add_simple() so we can
        atleast do mistakes in one place.
      
        The irq_domain_add_simple() is currently unused in the kernel, so I
        need to provide a user.  The Nomadik stuff that goes with are changes
        to the driver I use day-to-day to make use of this facility (and a
        dependency), so see it as a way to eat my own dogfood: if this blows
        up the egg hits my face.
      
        A second round of pinctrl patches for v3.7:
         - Complement the Nomadik pinctrl driver with alternate Cx functions
           so it handles all oddities.
         - A patch to the IRQdomain to reform the simple irqdomain to handle
           IRQ descriptor allocation dynamically.
         - Use the above feature in the Nomadik pin controller."
      
      * tag 'pinctrl-for-3.7-late' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl:
        pinctrl/nomadik: use simple or linear IRQ domain
        irqdomain: augment add_simple() to allocate descs
        pinctrl/nomadik: support other alternate-C functions
      759e00b8
    • L
      Merge branch 'for-linus' of git://git.linaro.org/people/rmk/linux-arm · 5cea24c5
      Linus Torvalds 提交于
      Pull second set of ARM updates from Russell King:
       "This is the second set of ARM updates for this merge window.
      
        Contained within are changes to allow the kernel to boot in hypervisor
        mode on CPUs supporting virtualization, and cache flushing support to
        the point of inner sharable unification, which are used by the
        suspend/resume code to avoid having to do a full cache flush.
      
        Also included is one fix for VFP code identified by Michael Olbrich."
      
      * 'for-linus' of git://git.linaro.org/people/rmk/linux-arm:
        ARM: vfp: fix saving d16-d31 vfp registers on v6+ kernels
        ARM: 7549/1: HYP: fix boot on some ARM1136 cores
        ARM: 7542/1: mm: fix cache LoUIS API for xscale and feroceon
        ARM: mm: update __v7_setup() to the new LoUIS cache maintenance API
        ARM: kernel: update __cpu_disable to use cache LoUIS maintenance API
        ARM: kernel: update cpu_suspend code to use cache LoUIS operations
        ARM: mm: rename jump labels in v7_flush_dcache_all function
        ARM: mm: implement LoUIS API for cache maintenance ops
        ARM: virt: arch_timers: enable access to physical timers
        ARM: virt: Add CONFIG_ARM_VIRT_EXT option
        ARM: virt: Add boot-time diagnostics
        ARM: virt: Update documentation for hyp mode entry support
        ARM: zImage/virt: hyp mode entry support for the zImage loader
        ARM: virt: allow the kernel to be entered in HYP mode
        ARM: opcodes: add __ERET/__MSR_ELR_HYP instruction encoding
      5cea24c5
    • L
      Merge tag 'sound-3.7' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound · 2fc07efa
      Linus Torvalds 提交于
      Pull sound updates #2 from Takashi Iwai:
       "This update contains a few cleanup works, regression/stable fixes
        gathered since the last pull request.
      
         - Clean up with generic hd-audio jack handling code by David
           Henningsson
         - A few regression fixes for standardized HD-audio auto-parser
         - Misc clean-up and small fixes"
      
      * tag 'sound-3.7' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound:
        ALSA: hda - do not detect jack on internal speakers for Realtek
        ALSA: hda - Fix missing beep on ASUS X43U notebook
        ALSA: hda - Remove AZX_DCAPS_POSFIX_COMBO
        ALSA: hda - Warn an allocation for an uninitialized array
        ALSA: hda/cirrus - Add missing init/free of hda_gen_spec
        ALSA: hda - Fix memory leaks at error path in patch_cirrus.c
        ALSA: hda - Add missing hda_gen_spec to struct via_spec
        ALSA: hda - remove "Mic Jack Mode" for headset jacks (Latitude Exx30)
        ALSA: hda - make Cirrus codec use generic unsol event handler
        ALSA: hda - make VIA codec use generic unsol event handler
        ALSA: hda - Remove dead GPIO code for VIA codec
        ALSA: usb-audio: Add TASCAM US122 MKII playback
      2fc07efa
    • L
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs · 79360ddd
      Linus Torvalds 提交于
      Pull pile 2 of vfs updates from Al Viro:
       "Stuff in this one - assorted fixes, lglock tidy-up, death to
        lock_super().
      
        There'll be a VFS pile tomorrow (with patches from Jeff Layton,
        sanitizing getname() and related parts of audit and preparing for
        ESTALE fixes), but I'd rather push the stuff in this one ASAP - some
        of the bugs closed here are quite unpleasant."
      
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
        vfs: bogus warnings in fs/namei.c
        consitify do_mount() arguments
        lglock: add DEFINE_STATIC_LGLOCK()
        lglock: make the per_cpu locks static
        lglock: remove unused DEFINE_LGLOCK_LOCKDEP()
        MAX_LFS_FILESIZE definition for 64bit needs LL...
        tmpfs,ceph,gfs2,isofs,reiserfs,xfs: fix fh_len checking
        vfs: drop lock/unlock super
        ufs: drop lock/unlock super
        sysv: drop lock/unlock super
        hpfs: drop lock/unlock super
        fat: drop lock/unlock super
        ext3: drop lock/unlock super
        exofs: drop lock/unlock super
        dup3: Return an error when oldfd == newfd.
        fs: handle failed audit_log_start properly
        fs: prevent use after free in auditing when symlink following was denied
      79360ddd
    • L
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/signal · 8213a2f3
      Linus Torvalds 提交于
      Pull pile 2 of execve and kernel_thread unification work from Al Viro:
       "Stuff in there: kernel_thread/kernel_execve/sys_execve conversions for
        several more architectures plus assorted signal fixes and cleanups.
      
        There'll be more (in particular, real fixes for the alpha
        do_notify_resume() irq mess)..."
      
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/signal: (43 commits)
        alpha: don't open-code trace_report_syscall_{enter,exit}
        Uninclude linux/freezer.h
        m32r: trim masks
        avr32: trim masks
        tile: don't bother with SIGTRAP in setup_frame
        microblaze: don't bother with SIGTRAP in setup_rt_frame()
        mn10300: don't bother with SIGTRAP in setup_frame()
        frv: no need to raise SIGTRAP in setup_frame()
        x86: get rid of duplicate code in case of CONFIG_VM86
        unicore32: remove pointless test
        h8300: trim _TIF_WORK_MASK
        parisc: decide whether to go to slow path (tracesys) based on thread flags
        parisc: don't bother looping in do_signal()
        parisc: fix double restarts
        bury the rest of TIF_IRET
        sanitize tsk_is_polling()
        bury _TIF_RESTORE_SIGMASK
        unicore32: unobfuscate _TIF_WORK_MASK
        mips: NOTIFY_RESUME is not needed in TIF masks
        mips: merge the identical "return from syscall" per-ABI code
        ...
      
      Conflicts:
      	arch/arm/include/asm/thread_info.h
      8213a2f3
    • L
      Merge branch 'writeback-for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/wfg/linux · 40924754
      Linus Torvalds 提交于
      Pull writeback fixes from Fengguang Wu:
       "Three trivial writeback fixes"
      
      * 'writeback-for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/wfg/linux:
        CPU hotplug, writeback: Don't call writeback_set_ratelimit() too often during hotplug
        writeback: correct comment for move_expired_inodes()
        backing-dev: use kstrto* in preference to simple_strtoul
      40924754
    • L
      Merge branch 'misc' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild · cbd8aca4
      Linus Torvalds 提交于
      Pull kbuild misc changes from Michal Marek:
       "In the non-critical part of kbuild, I have
         - Some make coccicheck improvements and two new tests
         - Support for a cleaner html output in scripts/kernel-doc, named
           html5 (no, it does not play videos, yet)
      
        BTW, Randy wants to route further kernel-doc patches through the
        kbuild tree."
      
      * 'misc' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild:
        Update SmPL/Coccinelle section of MAINTAINERS
        coccicheck: Add the rep+ctxt mode
        scripts/coccinelle/tests/odd_ptr_err.cocci: semantic patch for IS_ERR/PTR_ERR inconsistency
        scripts/tags.sh: Add magic for pci access functions
        scripts/coccinelle: ptr_ret: Add ternary operator version
        scripts/kernel-doc: drop maintainer
        scripts/kernel-doc: added support for html5
      cbd8aca4
    • L
      Merge branch 'kconfig' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild · 35e9a274
      Linus Torvalds 提交于
      Pull kconfig changes from Michal Marek:
       "kconfig in v3.7 is going to
         - initialize ncurses only once in menuconfig
         - be able to jump to a search result in menuconfig
         - change the misnomer oldnoconfig to a more meaningful name
           olddefconfig, keeping the old name as alias"
      
      * 'kconfig' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild:
        kconfig: replace 'oldnoconfig' with 'olddefconfig', and keep the old name as an alias
        menuconfig: Assign jump keys per-page instead of globally
        menuconfig: Do not open code textbox scroll up/down
        menuconfig: Add jump keys to search results
        menuconfig: Extend dialog_textbox so that it can return to a scrolled position
        menuconfig: Extend dialog_textbox so that it can exit on arbitrary keypresses
        menuconfig: Remove superfluous conditionnal
        kconfig: document oldnoconfig to what it really does in conf.c
        kconfig/mconf.c: revision of curses initialization.
      35e9a274
    • L
      Merge branch 'kbuild' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild · ae3e4628
      Linus Torvalds 提交于
      Pull kbuild changes from Michal Marek:
       "The main part of kbuild for v3.7 contains:
         - Fix for scripts/Makefile.modpost to not choke on a '.ko' substring
           in the build directory path
         - Two warning fixes (modpost and main Makefile)
         - __compiletime_error works also with gcc 4.3
         - make tar{gz,bz2,xz}-pkg uses default compression settings instead
           of saving as many bytes as possible (this should actually be in the
           misc branch, I don't know why I applied it here)."
      
      * 'kbuild' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild:
        compiler-gcc4.h: correct verion check for __compiletime_error
        modpost: Permit .GCC.command.line sections
        Kbuild: use normal compression settings for tar*-pkg
        scripts/Makefile.modpost: error in finding modules from .mod files.
        kbuild: Remove useless warning while appending KCFLAGS
      ae3e4628
    • L
      Merge tag 'fbdev-updates-for-3.7' of git://github.com/schandinat/linux-2.6 · 5f76945a
      Linus Torvalds 提交于
      Pull fbdev updates from Florian Tobias Schandinat:
       "This includes:
         - large updates for OMAP
           - basic OMAP5 DSS support for DPI and DSI outputs
           - large cleanups and restructuring
         - some update to Exynos and da8xx-fb
         - removal of the pnx4008 driver (arch removed)
         - various other small patches"
      
      Fix up some trivial conflicts (mostly just include line changes, but
      also some due to the renaming of the deferred work functions by Tejun).
      
      * tag 'fbdev-updates-for-3.7' of git://github.com/schandinat/linux-2.6: (193 commits)
        gbefb: fix compile error
        video: mark nuc900fb_map_video_memory as __devinit
        video/mx3fb: set .owner to prevent module unloading while being used
        video: exynos_dp: use clk_prepare_enable and clk_disable_unprepare
        drivers/video/exynos/exynos_mipi_dsi.c: fix error return code
        drivers/video/savage/savagefb_driver.c: fix error return code
        video: s3c-fb: use clk_prepare_enable and clk_disable_unprepare
        da8xx-fb: save and restore LCDC context across suspend/resume cycle
        da8xx-fb: add pm_runtime support
        video/udlfb: fix line counting in fb_write
        OMAPDSS: add missing include for string.h
        OMAPDSS: DISPC: Configure color conversion coefficients for writeback
        OMAPDSS: DISPC: Add manager like functions for writeback
        OMAPDSS: DISPC: Configure writeback FIFOs
        OMAPDSS: DISPC: Configure writeback specific parameters in dispc_wb_setup()
        OMAPDSS: DISPC: Configure overlay-like parameters in dispc_wb_setup
        OMAPDSS: DISPC: Add function to set channel in for writeback
        OMAPDSS: DISPC: Don't set chroma resampling bit for writeback
        OMAPDSS: DISPC: Downscale chroma if plane is writeback
        OMAPDSS: DISPC: Configure input and output sizes for writeback
        ...
      5f76945a
    • L
      Merge tag 'for-linus-merge-3.7' of git://git.kernel.org/pub/scm/linux/kernel/git/ericvh/v9fs · 940e3a8d
      Linus Torvalds 提交于
      Pull v9fs update from Eric Van Hensbergen.
      
      * tag 'for-linus-merge-3.7' of git://git.kernel.org/pub/scm/linux/kernel/git/ericvh/v9fs:
        9P: Fix race between p9_write_work() and p9_fd_request()
        9P: Fix race in p9_write_work()
        9P: fix test at the end of p9_write_work()
        9P: Fix race in p9_read_work()
        9p: don't use __getname/__putname for uname/aname
        net/9p: Check errno validity
        fs/9p: avoid debug OOPS when reading a long symlink
      940e3a8d
    • A
      vfs: bogus warnings in fs/namei.c · 98f6ef64
      Arnd Bergmann 提交于
      The follow_link() function always initializes its *p argument,
      or returns an error, but when building with 'gcc -s', the compiler
      gets confused by the __always_inline attribute to the function
      and can no longer detect where the cookie was initialized.
      
      The solution is to always initialize the pointer from follow_link,
      even in the error path. When building with -O2, this has zero impact
      on generated code and adds a single instruction in the error path
      for a -Os build on ARM.
      
      Without this patch, building with gcc-4.6 through gcc-4.8 and
      CONFIG_CC_OPTIMIZE_FOR_SIZE results in:
      
      fs/namei.c: In function 'link_path_walk':
      fs/namei.c:649:24: warning: 'cookie' may be used uninitialized in this function [-Wuninitialized]
      fs/namei.c:1544:9: note: 'cookie' was declared here
      fs/namei.c: In function 'path_lookupat':
      fs/namei.c:649:24: warning: 'cookie' may be used uninitialized in this function [-Wuninitialized]
      fs/namei.c:1934:10: note: 'cookie' was declared here
      fs/namei.c: In function 'path_openat':
      fs/namei.c:649:24: warning: 'cookie' may be used uninitialized in this function [-Wuninitialized]
      fs/namei.c:2899:9: note: 'cookie' was declared here
      Signed-off-by: NArnd Bergmann <arnd@arndb.de>
      Signed-off-by: NAl Viro <viro@zeniv.linux.org.uk>
      98f6ef64
    • A
      consitify do_mount() arguments · 808d4e3c
      Al Viro 提交于
      Signed-off-by: NAl Viro <viro@zeniv.linux.org.uk>
      808d4e3c
    • D
      compiler-gcc4.h: correct verion check for __compiletime_error · 415c2c52
      Daniel Santos 提交于
      __attribute__((error(msg))) was introduced in gcc 4.3 (not 4.4) and as I
      was unable to find any gcc bugs pertaining to it, I'm presuming that it
      has functioned as advertised since 4.3.0.
      Signed-off-by: NDaniel Santos <daniel.santos@pobox.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Tested-by: NDavid Rientjes <rientjes@google.com>
      Signed-off-by: NMichal Marek <mmarek@suse.cz>
      415c2c52
    • J
      modpost: Permit .GCC.command.line sections · 76b27645
      Jonathan Kliegman 提交于
      Allow .GCC.command.line sections in modules to prevent modpost warnings:
      WARNING: sound/usb/snd-usbmidi-lib.o (.GCC.command.line): unexpected non-allocatable section.
      Did you forget to use "ax"/"aw" in a .S file?
      Note that for example <linux/init.h> contains
      section definitions for use in .S files.
      Signed-off-by: NJonathan Kliegman <kliegs@chromium.org>
      Signed-off-by: NMichal Marek <mmarek@suse.cz>
      76b27645
    • M
      Merge branch 'staging/for_v3.7' into v4l_for_linus · bf3b202b
      Mauro Carvalho Chehab 提交于
      Applied on the top of changeset 782cd9ee, as some of those patches
      depend on some fixes that went via -arm tree.
      
      * staging/for_v3.7: (109 commits)
        [media] m5mols: Add missing #include <linux/sizes.h>
        [media] stk1160: Add support for S-Video input
        Revert "[media] omap3isp: Replace cpu_is_omap3630() with ISP revision check"
        [media]  dvb: LNA implementation changes
        [media] v4l2-ioctl: fix W=1 warnings
        [media] v4l2-ioctl: add blocks check for VIDIOC_SUBDEV_G/S_EDID
        [media] omap3isp: Fix compilation error in ispreg.h
        [media] rc-msi-digivox-ii: Add full scan keycodes
        [media] cx25821: testing the wrong variable
        [media] tda18271-common: hold the I2C adapter during write transfers
        [media] ds3000: add module parameter to force firmware upload
        [media] drivers/media: Remove unnecessary semicolon
        [media] winbond: remove space from driver name
        [media] iguanair: cannot send data from the stack
        [media] omap3isp: Replace cpu_is_omap3630() with ISP revision check
        [media] dvb-usb: print small buffers via %*ph
        [media] uvc: Add return code check at vb2_queue_init()
        [media] em28xx: Replace memcpy with struct assignment
        [media] bt8xx: Add video4linux control V4L2_CID_COLOR_KILLER
        [media] mem2mem_testdev: Use devm_kzalloc() in probe
        ...
      bf3b202b
    • S
      9P: Fix race between p9_write_work() and p9_fd_request() · 759f4298
      Simon Derr 提交于
      Race scenario:
      
      thread A			thread B
      
      p9_write_work()                p9_fd_request()
      
      if (list_empty
        (&m->unsent_req_list))
        ...
      
                                     spin_lock(&client->lock);
                                     req->status = REQ_STATUS_UNSENT;
                                     list_add_tail(..., &m->unsent_req_list);
                                     spin_unlock(&client->lock);
                                     ....
                                     if (n & POLLOUT &&
                                     !test_and_set_bit(Wworksched, &m->wsched)
                                     schedule_work(&m->wq);
                                     --> not done because Wworksched is set
      
        clear_bit(Wworksched, &m->wsched);
        return;
      
      --> nobody will take care of sending the new request.
      
      This is not very likely to happen though, because p9_write_work()
      being called with an empty unsent_req_list is not frequent.
      But this also means that taking the lock earlier will not be costly.
      Signed-off-by: NSimon Derr <simon.derr@bull.net>
      Signed-off-by: NEric Van Hensbergen <ericvh@gmail.com>
      759f4298
  3. 11 10月, 2012 21 次提交