Apply patches from 3.0.1rc

It's easier to just delete all the generic -stable macro stuff and
do it by hand than it is to make it work with our munged 3.0->2.6.40.x

This is only going to live until f16 is out anyway, so lets not waste effort.
This commit is contained in:
Dave Jones 2011-08-03 19:09:58 -04:00
parent bdcd61e44a
commit 3082e89bfa
3 changed files with 7 additions and 160 deletions

View File

@ -1,68 +0,0 @@
commit bfe159a51203c15d23cb3158fffdc25ec4b4dda1
Author: James Bottomley <James.Bottomley@HansenPartnership.com>
Date: Thu Jul 7 15:45:40 2011 -0500
[SCSI] fix crash in scsi_dispatch_cmd()
USB surprise removal of sr is triggering an oops in
scsi_dispatch_command(). What seems to be happening is that USB is
hanging on to a queue reference until the last close of the upper
device, so the crash is caused by surprise remove of a mounted CD
followed by attempted unmount.
The problem is that USB doesn't issue its final commands as part of
the SCSI teardown path, but on last close when the block queue is long
gone. The long term fix is probably to make sr do the teardown in the
same way as sd (so remove all the lower bits on ejection, but keep the
upper disk alive until last close of user space). However, the
current oops can be simply fixed by not allowing any commands to be
sent to a dead queue.
Cc: stable@kernel.org
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
diff --git a/block/blk-core.c b/block/blk-core.c
index d2f8f40..1d49e1c 100644
--- a/block/blk-core.c
+++ b/block/blk-core.c
@@ -839,6 +839,9 @@ struct request *blk_get_request(struct request_queue *q, int rw, gfp_t gfp_mask)
{
struct request *rq;
+ if (unlikely(test_bit(QUEUE_FLAG_DEAD, &q->queue_flags)))
+ return NULL;
+
BUG_ON(rw != READ && rw != WRITE);
spin_lock_irq(q->queue_lock);
diff --git a/block/blk-exec.c b/block/blk-exec.c
index 8a0e7ec..a1ebceb 100644
--- a/block/blk-exec.c
+++ b/block/blk-exec.c
@@ -50,6 +50,13 @@ void blk_execute_rq_nowait(struct request_queue *q, struct gendisk *bd_disk,
{
int where = at_head ? ELEVATOR_INSERT_FRONT : ELEVATOR_INSERT_BACK;
+ if (unlikely(test_bit(QUEUE_FLAG_DEAD, &q->queue_flags))) {
+ rq->errors = -ENXIO;
+ if (rq->end_io)
+ rq->end_io(rq, rq->errors);
+ return;
+ }
+
rq->rq_disk = bd_disk;
rq->end_io = done;
WARN_ON(irqs_disabled());
diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c
index ec1803a..28d9c9d 100644
--- a/drivers/scsi/scsi_lib.c
+++ b/drivers/scsi/scsi_lib.c
@@ -213,6 +213,8 @@ int scsi_execute(struct scsi_device *sdev, const unsigned char *cmd,
int ret = DRIVER_ERROR << 24;
req = blk_get_request(sdev->request_queue, write, __GFP_WAIT);
+ if (!req)
+ return ret;
if (bufflen && blk_rq_map_kern(sdev->request_queue, req,
buffer, bufflen, __GFP_WAIT))

View File

@ -51,7 +51,7 @@ Summary: The Linux kernel
# For non-released -rc kernels, this will be prepended with "0.", so
# for example a 3 here will become 0.3
#
%global baserelease 6
%global baserelease 0
%global fedora_build %{baserelease}
# base_sublevel is the kernel version we're starting with and patching
@ -64,7 +64,7 @@ Summary: The Linux kernel
%if 0%{?released_kernel}
# Do we have a -stable update to apply?
%define stable_update 0
%define stable_update 1
# Is it a -stable RC?
%define stable_rc 0
# Set rpm version accordingly
@ -558,40 +558,8 @@ Source1000: config-local
# Here should be only the patches up to the upstream canonical Linus tree.
Patch00: patch-3.0.bz2
Patch01: patch-3.0.1-rc1.bz2
# For a stable release kernel
%if 0%{?stable_update}
%if 0%{?stable_base}
%define stable_patch_00 patch-3.%{base_sublevel}.%{stable_base}.bz2
Patch01: %{stable_patch_00}
%endif
%if 0%{?stable_rc}
%define stable_patch_01 patch-3.%{base_sublevel}.%{stable_update}-rc%{stable_rc}.bz2
Patch02: %{stable_patch_01}
%endif
# non-released_kernel case
# These are automagically defined by the rcrev and gitrev values set up
# near the top of this spec file.
%else
%if 0%{?rcrev}
Patch00: patch-3.0-rc%{rcrev}.bz2
%if 0%{?gitrev}
Patch01: patch-3.0-rc%{rcrev}-git%{gitrev}.bz2
%endif
%else
# pre-{base_sublevel+1}-rc1 case
%if 0%{?gitrev}
Patch00: patch-3.%{base_sublevel}-git%{gitrev}.bz2
%endif
%endif
%endif
%if %{using_upstream_branch}
### BRANCH PATCH ###
%endif
Patch03: git-linus.diff
# we also need compile fixes for -vanilla
Patch04: linux-2.6-compile-fixes.patch
@ -675,8 +643,6 @@ Patch12016: disable-i8042-check-on-apple-mac.patch
Patch12018: neuter_intel_microcode_load.patch
Patch12019: linux-2.6-rt2x00-Add-device-ID-for-RT539F-device.patch
Patch12022: fix-cdc-ncm-dma-stack-vars.patch
Patch12023: ums-realtek-driver-uses-stack-memory-for-DMA.patch
@ -686,7 +652,6 @@ Patch12204: linux-2.6-enable-more-pci-autosuspend.patch
Patch12303: dmar-disable-when-ricoh-multifunction.patch
Patch13000: fix-scsi_dispatch_cmd.patch
Patch13001: epoll-fix-spurious-lockdep-warnings.patch
Patch13002: hfsplus-ensure-bio-requests-are-not-smaller-than-the.patch
@ -1034,24 +999,6 @@ if [ ! -d kernel-%{kversion}%{?dist}/vanilla-%{vanillaversion} ]; then
# Need to apply patches to the base vanilla version.
cp -rl vanilla-%{kversion} vanilla-%{vanillaversion}
cd vanilla-%{vanillaversion}
# Update vanilla to the latest upstream.
# (non-released_kernel case only)
%if 0%{?rcrev}
ApplyPatch patch-3.0-rc%{rcrev}.bz2
%if 0%{?gitrev}
ApplyPatch patch-3.0-rc%{rcrev}-git%{gitrev}.bz2
%endif
%else
# pre-{base_sublevel+1}-rc1 case
%if 0%{?gitrev}
ApplyPatch patch-3.0-git%{gitrev}.bz2
%endif
%endif
cd ..
fi
%endif
@ -1076,14 +1023,6 @@ cp -rl vanilla-%{vanillaversion} linux-%{kversion}.%{_target_cpu}
cd linux-%{kversion}.%{_target_cpu}
# released_kernel with possible stable updates
%if 0%{?stable_base}
ApplyPatch %{stable_patch_00}
%endif
%if 0%{?stable_rc}
ApplyPatch %{stable_patch_01}
%endif
%if %{using_upstream_branch}
### BRANCH APPLY ###
%endif
@ -1117,8 +1056,7 @@ done
# Update vanilla to the latest upstream. (2.6.39 -> 3.0)
ApplyPatch patch-3.0.bz2
ApplyOptionalPatch git-linus.diff
ApplyPatch patch-3.0.1-rc1.bz2
ApplyPatch linux-2.6-makefile-after_link.patch
@ -1259,15 +1197,12 @@ ApplyPatch add-appleir-usb-driver.patch
ApplyPatch neuter_intel_microcode_load.patch
ApplyPatch linux-2.6-rt2x00-Add-device-ID-for-RT539F-device.patch
ApplyPatch fix-cdc-ncm-dma-stack-vars.patch
ApplyPatch ums-realtek-driver-uses-stack-memory-for-DMA.patch
# rhbz#605888
ApplyPatch dmar-disable-when-ricoh-multifunction.patch
ApplyPatch fix-scsi_dispatch_cmd.patch
ApplyPatch epoll-fix-spurious-lockdep-warnings.patch
ApplyPatch hfsplus-ensure-bio-requests-are-not-smaller-than-the.patch
@ -1886,6 +1821,9 @@ fi
# and build.
%changelog
* Wed Aug 03 2011 Dave Jones <davej@redhat.com>
- Apply patches from patch-3.0.1-rc1
* Wed Aug 03 2011 John W. Linville <linville@redhat.com>
- Disable CONFIG_BCMA since no driver currently uses it (rhbz 727796)

View File

@ -1,23 +0,0 @@
commit 71e0b38c2914018b01f3f08b43ee9e3328197699
Author: Gertjan van Wingerde <gwingerde@gmail.com>
Date: Wed Jul 6 22:58:55 2011 +0200
rt2x00: Add device ID for RT539F device.
Reported-by: Wim Vander Schelden <wim@fixnum.org>
Signed-off-by: Gertjan van Wingerde <gwingerde@gmail.com>
Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
diff --git a/drivers/net/wireless/rt2x00/rt2800pci.c b/drivers/net/wireless/rt2x00/rt2800pci.c
index 5513edf..fd99449 100644
--- a/drivers/net/wireless/rt2x00/rt2800pci.c
+++ b/drivers/net/wireless/rt2x00/rt2800pci.c
@@ -1160,6 +1160,7 @@ static DEFINE_PCI_DEVICE_TABLE(rt2800pci_device_table) = {
#endif
#ifdef CONFIG_RT2800PCI_RT53XX
{ PCI_DEVICE(0x1814, 0x5390) },
+ { PCI_DEVICE(0x1814, 0x539f) },
#endif
{ 0, }
};