# git rev-parse -q --verify b75a2bf899b668b1d52de8846aafdbcf81349c73^{commit} b75a2bf899b668b1d52de8846aafdbcf81349c73 already have revision, skipping fetch # git checkout -q -f -B kisskb b75a2bf899b668b1d52de8846aafdbcf81349c73 # git clean -qxdf # git log -1 commit b75a2bf899b668b1d52de8846aafdbcf81349c73 Merge: 763cfc8 346c09f Author: Linus Torvalds Date: Wed Apr 27 12:03:59 2016 -0700 Merge branch 'for-4.6-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq Pull workqueue fix from Tejun Heo: "So, it turns out we had a silly bug in the most fundamental part of workqueue for a very long time. AFAICS, this dates back to pre-git era and has quite likely been there from the time workqueue was first introduced. A work item uses its PENDING bit to synchronize multiple queuers. Anyone who wins the PENDING bit owns the pending state of the work item. Whether a queuer wins or loses the race, one thing should be guaranteed - there will soon be at least one execution of the work item - where "after" means that the execution instance would be able to see all the changes that the queuer has made prior to the queueing attempt. Unfortunately, we were missing a smp_mb() after clearing PENDING for execution, so nothing guaranteed visibility of the changes that a queueing loser has made, which manifested as a reproducible blk-mq stall. Lots of kudos to Roman for debugging the problem. The patch for -stable is the minimal one. For v3.7, Peter is working on a patch to make the code path slightly more efficient and less fragile" * 'for-4.6-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq: workqueue: fix ghost PENDING flag while doing MQ IO # < /opt/cross/gcc-4.6.3-nolibc/arm-unknown-linux-gnueabi/bin/arm-unknown-linux-gnueabi-gcc --version # < git log --format=%s --max-count=1 b75a2bf899b668b1d52de8846aafdbcf81349c73 # < make -j 48 ARCH=arm O=/home/kisskb/slave/build/linus_realview-smp_defconfig_arm CROSS_COMPILE=/opt/cross/gcc-4.6.3-nolibc/arm-unknown-linux-gnueabi/bin/arm-unknown-linux-gnueabi- realview-smp_defconfig make[2]: *** [realview-smp_defconfig] Error 1 make[1]: *** [realview-smp_defconfig] Error 2 make: *** [sub-make] Error 2 Command 'make -j 48 ARCH=arm O=/home/kisskb/slave/build/linus_realview-smp_defconfig_arm CROSS_COMPILE=/opt/cross/gcc-4.6.3-nolibc/arm-unknown-linux-gnueabi/bin/arm-unknown-linux-gnueabi- realview-smp_defconfig' returned non-zero exit status 2 # rm -rf /home/kisskb/slave/build/linus_realview-smp_defconfig_arm # Build took: 0:00:02.361031