Linux 2.6.35.10
Remove merged patches and fix up conflicts: drm-polling-fixes.patch linux-2.6-v4l-dvb-hdpvr-updates.patch kvm-fix-fs-gs-reload-oops-with-invalid-ldt.patch Drop merged patches: linux-2.6-rcu-sched-warning.patch pnpacpi-cope-with-invalid-device-ids.patch ipc-zero-struct-memory-for-compat-fns.patch ipc-shm-fix-information-leak-to-user.patch r8169-01-fix-rx-checksum-offload.patch r8169-02-_re_init-phy-on-resume.patch r8169-03-fix-broken-checksum-for-invalid-sctp_igmp-packets.patch hda_realtek-handle-unset-external-amp-bits.patch
This commit is contained in:
parent
f045c5648e
commit
8f007394cd
|
@ -137,40 +137,6 @@ Date: Tue Jul 20 03:24:11 2010 -0400
|
|||
Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
|
||||
Signed-off-by: Dave Airlie <airlied@redhat.com>
|
||||
|
||||
commit 93d2725f536c17a85c35051beb4c41b7c1707db0
|
||||
Author: Alex Deucher <alexdeucher@gmail.com>
|
||||
Date: Mon Oct 25 19:44:00 2010 -0400
|
||||
|
||||
drm/radeon/kms: MC vram map needs to be >= pci aperture size
|
||||
|
||||
The vram map in the radeon memory controller needs to be
|
||||
>= the pci aperture size. Fixes:
|
||||
https://bugs.freedesktop.org/show_bug.cgi?id=28402
|
||||
|
||||
The problematic cards in the above bug have 64 MB of vram,
|
||||
but the pci aperture is 128 MB and the MC vram map was only
|
||||
64 MB. This can lead to hangs.
|
||||
|
||||
Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
|
||||
Cc: stable@kernel.org
|
||||
Signed-off-by: Dave Airlie <airlied@redhat.com>
|
||||
|
||||
commit 3fd6d68cfa32d8a5c99ba24e3d2c669bffef45ec
|
||||
Author: Alex Deucher <alexdeucher@gmail.com>
|
||||
Date: Wed Oct 27 01:02:35 2010 -0400
|
||||
|
||||
drm/radeon/kms: fix handling of tex lookup disable in cs checker on r2xx
|
||||
|
||||
There are cases when multiple texture units have to be enabled,
|
||||
but not actually used to sample. This patch checks to see if
|
||||
the lookup_disable bit is set and if so, skips the texture check.
|
||||
|
||||
Fixes:
|
||||
https://bugs.freedesktop.org/show_bug.cgi?id=25544
|
||||
|
||||
Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
|
||||
Cc: stable@kernel.org
|
||||
Signed-off-by: Dave Airlie <airlied@redhat.com>
|
||||
diff --git a/drivers/gpu/drm/drm_crtc_helper.c b/drivers/gpu/drm/drm_crtc_helper.c
|
||||
index 25d70d6..d537039 100644
|
||||
--- a/drivers/gpu/drm/drm_crtc_helper.c
|
||||
|
@ -430,62 +396,6 @@ index 149ed22..1085376 100644
|
|||
{
|
||||
struct drm_device *dev = connector->dev;
|
||||
struct nouveau_connector *nv_connector = nouveau_connector(connector);
|
||||
diff --git a/drivers/gpu/drm/radeon/r100.c b/drivers/gpu/drm/radeon/r100.c
|
||||
index a89a15a..a3378ba 100644
|
||||
--- a/drivers/gpu/drm/radeon/r100.c
|
||||
+++ b/drivers/gpu/drm/radeon/r100.c
|
||||
@@ -2321,6 +2321,9 @@ void r100_vram_init_sizes(struct radeon_device *rdev)
|
||||
/* Fix for RN50, M6, M7 with 8/16/32(??) MBs of VRAM -
|
||||
* Novell bug 204882 + along with lots of ubuntu ones
|
||||
*/
|
||||
+ if (rdev->mc.aper_size > config_aper_size)
|
||||
+ config_aper_size = rdev->mc.aper_size;
|
||||
+
|
||||
if (config_aper_size > rdev->mc.real_vram_size)
|
||||
rdev->mc.mc_vram_size = config_aper_size;
|
||||
else
|
||||
@@ -3229,6 +3232,8 @@ static int r100_cs_track_texture_check(struct radeon_device *rdev,
|
||||
for (u = 0; u < track->num_texture; u++) {
|
||||
if (!track->textures[u].enabled)
|
||||
continue;
|
||||
+ if (track->textures[u].lookup_disable)
|
||||
+ continue;
|
||||
robj = track->textures[u].robj;
|
||||
if (robj == NULL) {
|
||||
DRM_ERROR("No texture bound to unit %u\n", u);
|
||||
@@ -3462,6 +3467,7 @@ void r100_cs_track_clear(struct radeon_device *rdev, struct r100_cs_track *track
|
||||
track->textures[i].robj = NULL;
|
||||
/* CS IB emission code makes sure texture unit are disabled */
|
||||
track->textures[i].enabled = false;
|
||||
+ track->textures[i].lookup_disable = false;
|
||||
track->textures[i].roundup_w = true;
|
||||
track->textures[i].roundup_h = true;
|
||||
if (track->separate_cube)
|
||||
diff --git a/drivers/gpu/drm/radeon/r100_track.h b/drivers/gpu/drm/radeon/r100_track.h
|
||||
index f47cdca..af65600 100644
|
||||
--- a/drivers/gpu/drm/radeon/r100_track.h
|
||||
+++ b/drivers/gpu/drm/radeon/r100_track.h
|
||||
@@ -46,6 +46,7 @@ struct r100_cs_track_texture {
|
||||
unsigned height_11;
|
||||
bool use_pitch;
|
||||
bool enabled;
|
||||
+ bool lookup_disable;
|
||||
bool roundup_w;
|
||||
bool roundup_h;
|
||||
unsigned compress_format;
|
||||
diff --git a/drivers/gpu/drm/radeon/r200.c b/drivers/gpu/drm/radeon/r200.c
|
||||
index 0266d72..d2408c3 100644
|
||||
--- a/drivers/gpu/drm/radeon/r200.c
|
||||
+++ b/drivers/gpu/drm/radeon/r200.c
|
||||
@@ -447,6 +447,8 @@ int r200_packet0_check(struct radeon_cs_parser *p,
|
||||
track->textures[i].width = 1 << ((idx_value >> RADEON_TXFORMAT_WIDTH_SHIFT) & RADEON_TXFORMAT_WIDTH_MASK);
|
||||
track->textures[i].height = 1 << ((idx_value >> RADEON_TXFORMAT_HEIGHT_SHIFT) & RADEON_TXFORMAT_HEIGHT_MASK);
|
||||
}
|
||||
+ if (idx_value & R200_TXFORMAT_LOOKUP_DISABLE)
|
||||
+ track->textures[i].lookup_disable = true;
|
||||
switch ((idx_value & RADEON_TXFORMAT_FORMAT_MASK)) {
|
||||
case R200_TXFORMAT_I8:
|
||||
case R200_TXFORMAT_RGB332:
|
||||
diff --git a/drivers/gpu/drm/radeon/radeon_connectors.c b/drivers/gpu/drm/radeon/radeon_connectors.c
|
||||
index adccbc2..1680600 100644
|
||||
--- a/drivers/gpu/drm/radeon/radeon_connectors.c
|
||||
|
@ -571,17 +481,17 @@ index adccbc2..1680600 100644
|
|||
+ /* no HPD on analog connectors */
|
||||
+ radeon_connector->hpd.hpd = RADEON_HPD_NONE;
|
||||
connector->polled = DRM_CONNECTOR_POLL_CONNECT;
|
||||
break;
|
||||
case DRM_MODE_CONNECTOR_DVIA:
|
||||
connector->interlace_allowed = true;
|
||||
connector->doublescan_allowed = true;
|
||||
@@ -1096,6 +1113,8 @@ radeon_add_atom_connector(struct drm_device *dev,
|
||||
drm_connector_attach_property(&radeon_connector->base,
|
||||
rdev->mode_info.load_detect_property,
|
||||
1);
|
||||
+ /* no HPD on analog connectors */
|
||||
+ radeon_connector->hpd.hpd = RADEON_HPD_NONE;
|
||||
connector->interlace_allowed = true;
|
||||
connector->doublescan_allowed = true;
|
||||
break;
|
||||
case DRM_MODE_CONNECTOR_DVII:
|
||||
case DRM_MODE_CONNECTOR_DVID:
|
||||
@@ -1186,6 +1205,8 @@ radeon_add_atom_connector(struct drm_device *dev,
|
||||
drm_connector_attach_property(&radeon_connector->base,
|
||||
rdev->mode_info.tv_std_property,
|
||||
|
@ -589,8 +499,8 @@ index adccbc2..1680600 100644
|
|||
+ /* no HPD on analog connectors */
|
||||
+ radeon_connector->hpd.hpd = RADEON_HPD_NONE;
|
||||
}
|
||||
break;
|
||||
case DRM_MODE_CONNECTOR_LVDS:
|
||||
connector->interlace_allowed = false;
|
||||
connector->doublescan_allowed = false;
|
||||
@@ -1209,7 +1230,7 @@ radeon_add_atom_connector(struct drm_device *dev,
|
||||
break;
|
||||
}
|
||||
|
@ -607,17 +517,17 @@ index adccbc2..1680600 100644
|
|||
+ /* no HPD on analog connectors */
|
||||
+ radeon_connector->hpd.hpd = RADEON_HPD_NONE;
|
||||
connector->polled = DRM_CONNECTOR_POLL_CONNECT;
|
||||
break;
|
||||
case DRM_MODE_CONNECTOR_DVIA:
|
||||
connector->interlace_allowed = true;
|
||||
connector->doublescan_allowed = true;
|
||||
@@ -1290,6 +1313,8 @@ radeon_add_legacy_connector(struct drm_device *dev,
|
||||
drm_connector_attach_property(&radeon_connector->base,
|
||||
rdev->mode_info.load_detect_property,
|
||||
1);
|
||||
+ /* no HPD on analog connectors */
|
||||
+ radeon_connector->hpd.hpd = RADEON_HPD_NONE;
|
||||
connector->interlace_allowed = true;
|
||||
connector->doublescan_allowed = true;
|
||||
break;
|
||||
case DRM_MODE_CONNECTOR_DVII:
|
||||
case DRM_MODE_CONNECTOR_DVID:
|
||||
@@ -1328,6 +1353,8 @@ radeon_add_legacy_connector(struct drm_device *dev,
|
||||
drm_connector_attach_property(&radeon_connector->base,
|
||||
rdev->mode_info.tv_std_property,
|
||||
|
@ -625,8 +535,8 @@ index adccbc2..1680600 100644
|
|||
+ /* no HPD on analog connectors */
|
||||
+ radeon_connector->hpd.hpd = RADEON_HPD_NONE;
|
||||
}
|
||||
break;
|
||||
case DRM_MODE_CONNECTOR_LVDS:
|
||||
connector->interlace_allowed = false;
|
||||
connector->doublescan_allowed = false;
|
||||
@@ -1345,7 +1372,7 @@ radeon_add_legacy_connector(struct drm_device *dev,
|
||||
break;
|
||||
}
|
||||
|
@ -636,18 +546,6 @@ index adccbc2..1680600 100644
|
|||
if (i2c_bus->valid)
|
||||
connector->polled = DRM_CONNECTOR_POLL_CONNECT;
|
||||
} else
|
||||
diff --git a/drivers/gpu/drm/radeon/radeon_reg.h b/drivers/gpu/drm/radeon/radeon_reg.h
|
||||
index c332f46..6492881 100644
|
||||
--- a/drivers/gpu/drm/radeon/radeon_reg.h
|
||||
+++ b/drivers/gpu/drm/radeon/radeon_reg.h
|
||||
@@ -2836,6 +2836,7 @@
|
||||
# define R200_TXFORMAT_ST_ROUTE_STQ5 (5 << 24)
|
||||
# define R200_TXFORMAT_ST_ROUTE_MASK (7 << 24)
|
||||
# define R200_TXFORMAT_ST_ROUTE_SHIFT 24
|
||||
+# define R200_TXFORMAT_LOOKUP_DISABLE (1 << 27)
|
||||
# define R200_TXFORMAT_ALPHA_MASK_ENABLE (1 << 28)
|
||||
# define R200_TXFORMAT_CHROMA_KEY_ENABLE (1 << 29)
|
||||
# define R200_TXFORMAT_CUBIC_MAP_ENABLE (1 << 30)
|
||||
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_ldu.c b/drivers/gpu/drm/vmwgfx/vmwgfx_ldu.c
|
||||
index cfaf690..5b638cb 100644
|
||||
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_ldu.c
|
||||
|
|
|
@ -1,12 +0,0 @@
|
|||
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
|
||||
index 0ac6aed..53f503d 100644
|
||||
--- a/sound/pci/hda/patch_realtek.c
|
||||
+++ b/sound/pci/hda/patch_realtek.c
|
||||
@@ -1614,6 +1614,7 @@ do_sku:
|
||||
spec->init_amp = ALC_INIT_GPIO3;
|
||||
break;
|
||||
case 5:
|
||||
+ default:
|
||||
spec->init_amp = ALC_INIT_DEFAULT;
|
||||
break;
|
||||
}
|
|
@ -1,30 +0,0 @@
|
|||
From: Vasiliy Kulikov <segooon@gmail.com>
|
||||
Date: Sat, 30 Oct 2010 14:22:49 +0000 (+0400)
|
||||
Subject: ipc: shm: fix information leak to userland
|
||||
X-Git-Tag: v2.6.37-rc1~24
|
||||
X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Ftorvalds%2Flinux-2.6.git;a=commitdiff_plain;h=3af54c9bd9e6f14f896aac1bb0e8405ae0bc7a44
|
||||
|
||||
ipc: shm: fix information leak to userland
|
||||
|
||||
The shmid_ds structure is copied to userland with shm_unused{,2,3}
|
||||
fields unitialized. It leads to leaking of contents of kernel stack
|
||||
memory.
|
||||
|
||||
Signed-off-by: Vasiliy Kulikov <segooon@gmail.com>
|
||||
Acked-by: Al Viro <viro@ZenIV.linux.org.uk>
|
||||
Cc: stable@kernel.org
|
||||
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
|
||||
---
|
||||
|
||||
diff --git a/ipc/shm.c b/ipc/shm.c
|
||||
index fd658a1..7d3bb22 100644
|
||||
--- a/ipc/shm.c
|
||||
+++ b/ipc/shm.c
|
||||
@@ -479,6 +479,7 @@ static inline unsigned long copy_shmid_to_user(void __user *buf, struct shmid64_
|
||||
{
|
||||
struct shmid_ds out;
|
||||
|
||||
+ memset(&out, 0, sizeof(out));
|
||||
ipc64_perm_to_ipc_perm(&in->shm_perm, &out.shm_perm);
|
||||
out.shm_segsz = in->shm_segsz;
|
||||
out.shm_atime = in->shm_atime;
|
|
@ -1,73 +0,0 @@
|
|||
From: Dan Rosenberg <drosenberg@vsecurity.com>
|
||||
Date: Wed, 27 Oct 2010 22:34:17 +0000 (-0700)
|
||||
Subject: ipc: initialize structure memory to zero for compat functions
|
||||
X-Git-Tag: v2.6.37-rc1~85^2~50
|
||||
X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Ftorvalds%2Flinux-2.6.git;a=commitdiff_plain;h=03145beb455cf5c20a761e8451e30b8a74ba58d9
|
||||
|
||||
ipc: initialize structure memory to zero for compat functions
|
||||
|
||||
This takes care of leaking uninitialized kernel stack memory to
|
||||
userspace from non-zeroed fields in structs in compat ipc functions.
|
||||
|
||||
Signed-off-by: Dan Rosenberg <drosenberg@vsecurity.com>
|
||||
Cc: Manfred Spraul <manfred@colorfullife.com>
|
||||
Cc: Arnd Bergmann <arnd@arndb.de>
|
||||
Cc: <stable@kernel.org>
|
||||
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
|
||||
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
|
||||
---
|
||||
|
||||
diff --git a/ipc/compat.c b/ipc/compat.c
|
||||
index 9dc2c7d..845a287 100644
|
||||
--- a/ipc/compat.c
|
||||
+++ b/ipc/compat.c
|
||||
@@ -241,6 +241,8 @@ long compat_sys_semctl(int first, int second, int third, void __user *uptr)
|
||||
struct semid64_ds __user *up64;
|
||||
int version = compat_ipc_parse_version(&third);
|
||||
|
||||
+ memset(&s64, 0, sizeof(s64));
|
||||
+
|
||||
if (!uptr)
|
||||
return -EINVAL;
|
||||
if (get_user(pad, (u32 __user *) uptr))
|
||||
@@ -421,6 +423,8 @@ long compat_sys_msgctl(int first, int second, void __user *uptr)
|
||||
int version = compat_ipc_parse_version(&second);
|
||||
void __user *p;
|
||||
|
||||
+ memset(&m64, 0, sizeof(m64));
|
||||
+
|
||||
switch (second & (~IPC_64)) {
|
||||
case IPC_INFO:
|
||||
case IPC_RMID:
|
||||
@@ -594,6 +598,8 @@ long compat_sys_shmctl(int first, int second, void __user *uptr)
|
||||
int err, err2;
|
||||
int version = compat_ipc_parse_version(&second);
|
||||
|
||||
+ memset(&s64, 0, sizeof(s64));
|
||||
+
|
||||
switch (second & (~IPC_64)) {
|
||||
case IPC_RMID:
|
||||
case SHM_LOCK:
|
||||
diff --git a/ipc/compat_mq.c b/ipc/compat_mq.c
|
||||
index d8d1e9f..380ea4f 100644
|
||||
--- a/ipc/compat_mq.c
|
||||
+++ b/ipc/compat_mq.c
|
||||
@@ -53,6 +53,9 @@ asmlinkage long compat_sys_mq_open(const char __user *u_name,
|
||||
void __user *p = NULL;
|
||||
if (u_attr && oflag & O_CREAT) {
|
||||
struct mq_attr attr;
|
||||
+
|
||||
+ memset(&attr, 0, sizeof(attr));
|
||||
+
|
||||
p = compat_alloc_user_space(sizeof(attr));
|
||||
if (get_compat_mq_attr(&attr, u_attr) ||
|
||||
copy_to_user(p, &attr, sizeof(attr)))
|
||||
@@ -127,6 +130,8 @@ asmlinkage long compat_sys_mq_getsetattr(mqd_t mqdes,
|
||||
struct mq_attr __user *p = compat_alloc_user_space(2 * sizeof(*p));
|
||||
long ret;
|
||||
|
||||
+ memset(&mqstat, 0, sizeof(mqstat));
|
||||
+
|
||||
if (u_mqstat) {
|
||||
if (get_compat_mq_attr(&mqstat, u_mqstat) ||
|
||||
copy_to_user(p, &mqstat, sizeof(mqstat)))
|
52
kernel.spec
52
kernel.spec
|
@ -60,7 +60,7 @@ Summary: The Linux kernel
|
|||
%if 0%{?released_kernel}
|
||||
|
||||
# Do we have a -stable update to apply?
|
||||
%define stable_update 9
|
||||
%define stable_update 10
|
||||
# Is it a -stable RC?
|
||||
%define stable_rc 0
|
||||
# Set rpm version accordingly
|
||||
|
@ -724,7 +724,6 @@ Patch2924: linux-2.6-v4l-dvb-ir-core-fix-imon.patch
|
|||
|
||||
Patch2950: linux-2.6-via-velocity-dma-fix.patch
|
||||
|
||||
Patch3000: linux-2.6-rcu-sched-warning.patch
|
||||
Patch3010: linux-2.6-rcu-netpoll.patch
|
||||
|
||||
# NFSv4
|
||||
|
@ -765,8 +764,6 @@ Patch13600: btusb-macbookpro-6-2.patch
|
|||
Patch13601: btusb-macbookpro-7-1.patch
|
||||
Patch13602: add-macbookair3-ids.patch
|
||||
|
||||
Patch13603: pnpacpi-cope-with-invalid-device-ids.patch
|
||||
|
||||
Patch13610: libata-it821x-dump-stack-on-cache-flush.patch
|
||||
|
||||
Patch13630: dm-allow-setting-of-uuid-via-rename-if-not-already-set.patch
|
||||
|
@ -786,9 +783,6 @@ Patch13651: kvm-fix-fs-gs-reload-oops-with-invalid-ldt.patch
|
|||
|
||||
Patch13652: fix-i8k-inline-asm.patch
|
||||
|
||||
Patch13700: ipc-zero-struct-memory-for-compat-fns.patch
|
||||
Patch13701: ipc-shm-fix-information-leak-to-user.patch
|
||||
|
||||
Patch13702: inet_diag-make-sure-we-run-the-same-bytecode-we-audited.patch
|
||||
Patch13704: netlink-make-nlmsg_find_attr-take-a-const-ptr.patch
|
||||
|
||||
|
@ -797,14 +791,6 @@ Patch13703: posix-cpu-timers-workaround-to-suppress-problems-with-mt-exec.patch
|
|||
Patch13660: rtl8180-improve-signal-reporting-for-rtl8185-hardware.patch
|
||||
Patch13661: rtl8180-improve-signal-reporting-for-actual-rtl8180-hardware.patch
|
||||
|
||||
#rhbz #502974
|
||||
Patch13670: r8169-01-fix-rx-checksum-offload.patch
|
||||
Patch13671: r8169-02-_re_init-phy-on-resume.patch
|
||||
Patch13672: r8169-03-fix-broken-checksum-for-invalid-sctp_igmp-packets.patch
|
||||
|
||||
#rhbz #657388
|
||||
Patch13680: hda_realtek-handle-unset-external-amp-bits.patch
|
||||
|
||||
Patch13684: tty-make-tiocgicount-a-handler.patch
|
||||
Patch13685: tty-icount-changeover-for-other-main-devices.patch
|
||||
|
||||
|
@ -1440,7 +1426,6 @@ ApplyPatch linux-2.6-v4l-dvb-ir-core-fix-imon.patch
|
|||
ApplyPatch linux-2.6-via-velocity-dma-fix.patch
|
||||
|
||||
# silence another rcu_reference warning
|
||||
ApplyPatch linux-2.6-rcu-sched-warning.patch
|
||||
ApplyPatch linux-2.6-rcu-netpoll.patch
|
||||
|
||||
# Patches headed upstream
|
||||
|
@ -1485,9 +1470,6 @@ ApplyPatch add-macbookair3-ids.patch
|
|||
# temporary patch, dump stack on failed it821x commands
|
||||
ApplyPatch libata-it821x-dump-stack-on-cache-flush.patch
|
||||
|
||||
# rhbz#641468
|
||||
ApplyPatch pnpacpi-cope-with-invalid-device-ids.patch
|
||||
|
||||
# rhbz#641476
|
||||
ApplyPatch dm-allow-setting-of-uuid-via-rename-if-not-already-set.patch
|
||||
|
||||
|
@ -1510,12 +1492,6 @@ ApplyPatch kvm-fix-fs-gs-reload-oops-with-invalid-ldt.patch
|
|||
|
||||
ApplyPatch fix-i8k-inline-asm.patch
|
||||
|
||||
# rhbz#648658 (CVE-2010-4073)
|
||||
ApplyPatch ipc-zero-struct-memory-for-compat-fns.patch
|
||||
|
||||
# rhbz#648656 (CVE-2010-4072)
|
||||
ApplyPatch ipc-shm-fix-information-leak-to-user.patch
|
||||
|
||||
# rhbz#651264 (CVE-2010-3880)
|
||||
ApplyPatch inet_diag-make-sure-we-run-the-same-bytecode-we-audited.patch
|
||||
ApplyPatch netlink-make-nlmsg_find_attr-take-a-const-ptr.patch
|
||||
|
@ -1526,14 +1502,6 @@ ApplyPatch posix-cpu-timers-workaround-to-suppress-problems-with-mt-exec.patch
|
|||
ApplyPatch rtl8180-improve-signal-reporting-for-rtl8185-hardware.patch
|
||||
ApplyPatch rtl8180-improve-signal-reporting-for-actual-rtl8180-hardware.patch
|
||||
|
||||
#rhbz #502974
|
||||
ApplyPatch r8169-01-fix-rx-checksum-offload.patch
|
||||
ApplyPatch r8169-02-_re_init-phy-on-resume.patch
|
||||
ApplyPatch r8169-03-fix-broken-checksum-for-invalid-sctp_igmp-packets.patch
|
||||
|
||||
#rhbz #657388
|
||||
ApplyPatch hda_realtek-handle-unset-external-amp-bits.patch
|
||||
|
||||
# CVE-2010-4077, CVE-2010-4075 (rhbz#648660, #648663)
|
||||
ApplyPatch tty-make-tiocgicount-a-handler.patch
|
||||
ApplyPatch tty-icount-changeover-for-other-main-devices.patch
|
||||
|
@ -2131,6 +2099,24 @@ fi
|
|||
# and build.
|
||||
|
||||
%changelog
|
||||
* Wed Dec 15 2010 Chuck Ebbert <cebbert@redhat.com>
|
||||
- Linux 2.6.35.10
|
||||
- Remove merged patches and fix up conflicts:
|
||||
drm-polling-fixes.patch
|
||||
linux-2.6-v4l-dvb-hdpvr-updates.patch
|
||||
kvm-fix-fs-gs-reload-oops-with-invalid-ldt.patch
|
||||
- Drop merged patches:
|
||||
linux-2.6-rcu-sched-warning.patch
|
||||
pnpacpi-cope-with-invalid-device-ids.patch
|
||||
ipc-zero-struct-memory-for-compat-fns.patch
|
||||
ipc-shm-fix-information-leak-to-user.patch
|
||||
r8169-01-fix-rx-checksum-offload.patch
|
||||
r8169-02-_re_init-phy-on-resume.patch
|
||||
r8169-03-fix-broken-checksum-for-invalid-sctp_igmp-packets.patch
|
||||
hda_realtek-handle-unset-external-amp-bits.patch
|
||||
|
||||
MARKME
|
||||
|
||||
* Fri Dec 10 2010 Kyle McMartin <kyle@redhat.com>
|
||||
- pci-disable-aspm-if-bios-asks-us-to.patch: Patch from mjg59 to disable
|
||||
ASPM if the BIOS has disabled it, but enabled it already on some devices.
|
||||
|
|
|
@ -81,10 +81,11 @@ index 81ed28c..8a3f9f6 100644
|
|||
vcpu->arch.regs[VCPU_REGS_RSP] = svm->vmcb->save.rsp;
|
||||
vcpu->arch.regs[VCPU_REGS_RIP] = svm->vmcb->save.rip;
|
||||
|
||||
- kvm_load_ldt(ldt_selector);
|
||||
- kvm_load_fs(fs_selector);
|
||||
- kvm_load_gs(gs_selector);
|
||||
- kvm_load_ldt(ldt_selector);
|
||||
load_host_msrs(vcpu);
|
||||
+ kvm_load_ldt(ldt_selector);
|
||||
+ loadsegment(fs, fs_selector);
|
||||
+#ifdef CONFIG_X86_64
|
||||
+ load_gs_index(gs_selector);
|
||||
|
@ -92,7 +93,6 @@ index 81ed28c..8a3f9f6 100644
|
|||
+#else
|
||||
+ loadsegment(gs, gs_selector);
|
||||
+#endif
|
||||
+ kvm_load_ldt(ldt_selector);
|
||||
|
||||
reload_tss(vcpu);
|
||||
|
||||
|
@ -118,7 +118,7 @@ index 49b25ee..7bddfab 100644
|
|||
if (!(vmx->host_state.gs_sel & 7))
|
||||
vmcs_write16(HOST_GS_SELECTOR, vmx->host_state.gs_sel);
|
||||
else {
|
||||
@@ -841,27 +841,21 @@ static void vmx_save_host_state(struct kvm_vcpu *vcpu)
|
||||
@@ -841,25 +841,19 @@ static void vmx_save_host_state(struct kvm_vcpu *vcpu)
|
||||
|
||||
static void __vmx_load_host_state(struct vcpu_vmx *vmx)
|
||||
{
|
||||
|
@ -129,9 +129,6 @@ index 49b25ee..7bddfab 100644
|
|||
|
||||
++vmx->vcpu.stat.host_state_reload;
|
||||
vmx->host_state.loaded = 0;
|
||||
if (vmx->host_state.fs_reload_needed)
|
||||
- kvm_load_fs(vmx->host_state.fs_sel);
|
||||
+ loadsegment(fs, vmx->host_state.fs_sel);
|
||||
if (vmx->host_state.gs_ldt_reload_needed) {
|
||||
kvm_load_ldt(vmx->host_state.ldt_sel);
|
||||
- /*
|
||||
|
@ -149,8 +146,8 @@ index 49b25ee..7bddfab 100644
|
|||
#endif
|
||||
- local_irq_restore(flags);
|
||||
}
|
||||
reload_tss();
|
||||
#ifdef CONFIG_X86_64
|
||||
if (vmx->host_state.fs_reload_needed)
|
||||
loadsegment(fs, vmx->host_state.fs_sel);
|
||||
@@ -2589,8 +2583,8 @@ static int vmx_vcpu_setup(struct vcpu_vmx *vmx)
|
||||
vmcs_write16(HOST_CS_SELECTOR, __KERNEL_CS); /* 22.2.4 */
|
||||
vmcs_write16(HOST_DS_SELECTOR, __KERNEL_DS); /* 22.2.4 */
|
||||
|
|
|
@ -1,215 +0,0 @@
|
|||
From davej Thu Sep 16 11:55:58 2010
|
||||
Return-Path: linux-kernel-owner@vger.kernel.org
|
||||
X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on gelk
|
||||
X-Spam-Level:
|
||||
X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_MED,
|
||||
T_RP_MATCHES_RCVD,UNPARSEABLE_RELAY autolearn=ham version=3.3.1
|
||||
Received: from mail.corp.redhat.com [10.5.5.52]
|
||||
by gelk with IMAP (fetchmail-6.3.17)
|
||||
for <davej@localhost> (single-drop); Thu, 16 Sep 2010 11:55:58 -0400 (EDT)
|
||||
Received: from zmta02.collab.prod.int.phx2.redhat.com (LHLO
|
||||
zmta02.collab.prod.int.phx2.redhat.com) (10.5.5.32) by
|
||||
mail04.corp.redhat.com with LMTP; Thu, 16 Sep 2010 11:51:27 -0400 (EDT)
|
||||
Received: from localhost (localhost.localdomain [127.0.0.1])
|
||||
by zmta02.collab.prod.int.phx2.redhat.com (Postfix) with ESMTP id 4889C9FC56;
|
||||
Thu, 16 Sep 2010 11:51:27 -0400 (EDT)
|
||||
Received: from zmta02.collab.prod.int.phx2.redhat.com ([127.0.0.1])
|
||||
by localhost (zmta02.collab.prod.int.phx2.redhat.com [127.0.0.1]) (amavisd-new, port 10024)
|
||||
with ESMTP id 94mQrmwfCpY4; Thu, 16 Sep 2010 11:51:27 -0400 (EDT)
|
||||
Received: from int-mx03.intmail.prod.int.phx2.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.16])
|
||||
by zmta02.collab.prod.int.phx2.redhat.com (Postfix) with ESMTP id 0DBDB9FC4B;
|
||||
Thu, 16 Sep 2010 11:51:27 -0400 (EDT)
|
||||
Received: from mx1.redhat.com (ext-mx05.extmail.prod.ext.phx2.redhat.com [10.5.110.9])
|
||||
by int-mx03.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id o8GFpQnO003857;
|
||||
Thu, 16 Sep 2010 11:51:26 -0400
|
||||
Received: from vger.kernel.org (vger.kernel.org [209.132.180.67])
|
||||
by mx1.redhat.com (8.13.8/8.13.8) with ESMTP id o8GFFCFE031066;
|
||||
Thu, 16 Sep 2010 11:51:17 -0400
|
||||
Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand
|
||||
id S1755493Ab0IPPvH (ORCPT <rfc822;jasowang@redhat.com> + 41 others);
|
||||
Thu, 16 Sep 2010 11:51:07 -0400
|
||||
Received: from casper.infradead.org ([85.118.1.10]:41834 "EHLO
|
||||
casper.infradead.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org
|
||||
with ESMTP id S1754921Ab0IPPvC convert rfc822-to-8bit (ORCPT
|
||||
<rfc822;linux-kernel@vger.kernel.org>);
|
||||
Thu, 16 Sep 2010 11:51:02 -0400
|
||||
Received: from f199130.upc-f.chello.nl ([80.56.199.130] helo=laptop)
|
||||
by casper.infradead.org with esmtpsa (Exim 4.72 #1 (Red Hat Linux))
|
||||
id 1OwGjI-0003VE-Ux; Thu, 16 Sep 2010 15:50:33 +0000
|
||||
Received: by laptop (Postfix, from userid 1000)
|
||||
id 6DCDB100AEB1D; Thu, 16 Sep 2010 17:50:32 +0200 (CEST)
|
||||
Subject: Re: 2.6.35-stable/ppc64/p7: suspicious rcu_dereference_check()
|
||||
usage detected during 2.6.35-stable boot
|
||||
From: Peter Zijlstra <peterz@infradead.org>
|
||||
To: paulmck@linux.vnet.ibm.com
|
||||
Cc: Subrata Modak <subrata@linux.vnet.ibm.com>,
|
||||
linux-kernel <linux-kernel@vger.kernel.org>,
|
||||
Li Zefan <lizf@cn.fujitsu.com>, Linuxppc-dev <Linuxppc-dev@ozlabs.org>,
|
||||
sachinp <sachinp@linux.vnet.ibm.com>,
|
||||
DIVYA PRAKASH <dipraksh@linux.vnet.ibm.com>,
|
||||
"Valdis.Kletnieks" <Valdis.Kletnieks@vt.edu>
|
||||
In-Reply-To: <20100809161200.GC3026@linux.vnet.ibm.com>
|
||||
References: <1280739132.15317.9.camel@subratamodak.linux.ibm.com>
|
||||
<20100809161200.GC3026@linux.vnet.ibm.com>
|
||||
Content-Type: text/plain; charset="UTF-8"
|
||||
Content-Transfer-Encoding: 8BIT
|
||||
Date: Thu, 16 Sep 2010 17:50:31 +0200
|
||||
Message-ID: <1284652231.2275.569.camel@laptop>
|
||||
Mime-Version: 1.0
|
||||
Sender: linux-kernel-owner@vger.kernel.org
|
||||
Precedence: bulk
|
||||
List-ID: <linux-kernel.vger.kernel.org>
|
||||
X-Mailing-List: linux-kernel@vger.kernel.org
|
||||
X-RedHat-Spam-Score: -2.31 (RCVD_IN_DNSWL_MED,T_RP_MATCHES_RCVD)
|
||||
X-Scanned-By: MIMEDefang 2.67 on 10.5.11.16
|
||||
X-Scanned-By: MIMEDefang 2.67 on 10.5.110.9
|
||||
Status: RO
|
||||
Content-Length: 6752
|
||||
Lines: 145
|
||||
|
||||
On Mon, 2010-08-09 at 09:12 -0700, Paul E. McKenney wrote:
|
||||
|
||||
> > [ 0.051203] CPU0: AMD QEMU Virtual CPU version 0.12.4 stepping 03
|
||||
> > [ 0.052999] lockdep: fixing up alternatives.
|
||||
> > [ 0.054105]
|
||||
> > [ 0.054106] ===================================================
|
||||
> > [ 0.054999] [ INFO: suspicious rcu_dereference_check() usage. ]
|
||||
> > [ 0.054999] ---------------------------------------------------
|
||||
> > [ 0.054999] kernel/sched.c:616 invoked rcu_dereference_check() without protection!
|
||||
> > [ 0.054999]
|
||||
> > [ 0.054999] other info that might help us debug this:
|
||||
> > [ 0.054999]
|
||||
> > [ 0.054999]
|
||||
> > [ 0.054999] rcu_scheduler_active = 1, debug_locks = 1
|
||||
> > [ 0.054999] 3 locks held by swapper/1:
|
||||
> > [ 0.054999] #0: (cpu_add_remove_lock){+.+.+.}, at: [<ffffffff814be933>] cpu_up+0x42/0x6a
|
||||
> > [ 0.054999] #1: (cpu_hotplug.lock){+.+.+.}, at: [<ffffffff810400d8>] cpu_hotplug_begin+0x2a/0x51
|
||||
> > [ 0.054999] #2: (&rq->lock){-.-...}, at: [<ffffffff814be2f7>] init_idle+0x2f/0x113
|
||||
> > [ 0.054999]
|
||||
> > [ 0.054999] stack backtrace:
|
||||
> > [ 0.054999] Pid: 1, comm: swapper Not tainted 2.6.35 #1
|
||||
> > [ 0.054999] Call Trace:
|
||||
> > [ 0.054999] [<ffffffff81068054>] lockdep_rcu_dereference+0x9b/0xa3
|
||||
> > [ 0.054999] [<ffffffff810325c3>] task_group+0x7b/0x8a
|
||||
> > [ 0.054999] [<ffffffff810325e5>] set_task_rq+0x13/0x40
|
||||
> > [ 0.054999] [<ffffffff814be39a>] init_idle+0xd2/0x113
|
||||
> > [ 0.054999] [<ffffffff814be78a>] fork_idle+0xb8/0xc7
|
||||
> > [ 0.054999] [<ffffffff81068717>] ? mark_held_locks+0x4d/0x6b
|
||||
> > [ 0.054999] [<ffffffff814bcebd>] do_fork_idle+0x17/0x2b
|
||||
> > [ 0.054999] [<ffffffff814bc89b>] native_cpu_up+0x1c1/0x724
|
||||
> > [ 0.054999] [<ffffffff814bcea6>] ? do_fork_idle+0x0/0x2b
|
||||
> > [ 0.054999] [<ffffffff814be876>] _cpu_up+0xac/0x127
|
||||
> > [ 0.054999] [<ffffffff814be946>] cpu_up+0x55/0x6a
|
||||
> > [ 0.054999] [<ffffffff81ab562a>] kernel_init+0xe1/0x1ff
|
||||
> > [ 0.054999] [<ffffffff81003854>] kernel_thread_helper+0x4/0x10
|
||||
> > [ 0.054999] [<ffffffff814c353c>] ? restore_args+0x0/0x30
|
||||
> > [ 0.054999] [<ffffffff81ab5549>] ? kernel_init+0x0/0x1ff
|
||||
> > [ 0.054999] [<ffffffff81003850>] ? kernel_thread_helper+0x0/0x10
|
||||
> > [ 0.056074] Booting Node 0, Processors #1lockdep: fixing up alternatives.
|
||||
> > [ 0.130045] #2lockdep: fixing up alternatives.
|
||||
> > [ 0.203089] #3 Ok.
|
||||
> > [ 0.275286] Brought up 4 CPUs
|
||||
> > [ 0.276005] Total of 4 processors activated (16017.17 BogoMIPS).
|
||||
>
|
||||
> This does look like a new one, thank you for reporting it!
|
||||
>
|
||||
> Here is my analysis, which should at least provide some humor value to
|
||||
> those who understand the code better than I do. ;-)
|
||||
>
|
||||
> So the corresponding rcu_dereference_check() is in
|
||||
> task_subsys_state_check(), and is fetching the cpu_cgroup_subsys_id
|
||||
> element of the newly created task's task->cgroups->subsys[] array.
|
||||
> The "git grep" command finds only three uses of cpu_cgroup_subsys_id,
|
||||
> but no definition.
|
||||
>
|
||||
> Now, fork_idle() invokes copy_process(), which invokes cgroup_fork(),
|
||||
> which sets the child process's ->cgroups pointer to that of the parent,
|
||||
> also invoking get_css_set(), which increments the corresponding reference
|
||||
> count, doing both operations under task_lock() protection (->alloc_lock).
|
||||
> Because fork_idle() does not specify any of CLONE_NEWNS, CLONE_NEWUTS,
|
||||
> CLONE_NEWIPC, CLONE_NEWPID, or CLONE_NEWNET, copy_namespaces() should
|
||||
> not create a new namespace, and so there should be no ns_cgroup_clone().
|
||||
> We should thus retain the parent's ->cgroups pointer. And copy_process()
|
||||
> installs the new task in the various lists, so that the task is externally
|
||||
> accessible upon return.
|
||||
>
|
||||
> After a non-error return from copy_process(), fork_init() invokes
|
||||
> init_idle_pid(), which does not appear to affect the task's cgroup
|
||||
> state. Next fork_init() invokes init_idle(), which in turn invokes
|
||||
> __set_task_cpu(), which invokes set_task_rq(), which calls task_group()
|
||||
> several times, which calls task_subsys_state_check(), which calls the
|
||||
> rcu_dereference_check() that complained above.
|
||||
>
|
||||
> However, the result returns by rcu_dereference_check() is stored into
|
||||
> the task structure:
|
||||
>
|
||||
> p->se.cfs_rq = task_group(p)->cfs_rq[cpu];
|
||||
> p->se.parent = task_group(p)->se[cpu];
|
||||
>
|
||||
> This means that the corresponding structure must have been tied down with
|
||||
> a reference count or some such. If such a reference has been taken, then
|
||||
> this complaint is a false positive, and could be suppressed by putting
|
||||
> rcu_read_lock() and rcu_read_unlock() around the call to init_idle()
|
||||
> from fork_idle(). However, although, reference to the enclosing ->cgroups
|
||||
> struct css_set is held, it is not clear to me that this reference applies
|
||||
> to the structures pointed to by the ->subsys[] array, especially given
|
||||
> that the cgroup_subsys_state structures referenced by this array have
|
||||
> their own reference count, which does not appear to me to be acquired
|
||||
> by this code path.
|
||||
>
|
||||
> Or are the cgroup_subsys_state structures referenced by idle tasks
|
||||
> never freed or some such?
|
||||
|
||||
I would hope so!, the idle tasks should be part of the root cgroup,
|
||||
which is not removable.
|
||||
|
||||
The problem is that while we do in-fact hold rq->lock, the newly spawned
|
||||
idle thread's cpu is not yet set to the correct cpu so the lockdep check
|
||||
in task_group():
|
||||
|
||||
lockdep_is_held(&task_rq(p)->lock)
|
||||
|
||||
will fail.
|
||||
|
||||
But of a chicken and egg problem. Setting the cpu needs to have the cpu
|
||||
set ;-)
|
||||
|
||||
Ingo, why do we have rq->lock there at all? The CPU isn't up and running
|
||||
yet, nothing should be touching it.
|
||||
|
||||
Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
|
||||
---
|
||||
kernel/sched.c | 12 ++++++++++++
|
||||
1 files changed, 12 insertions(+), 0 deletions(-)
|
||||
|
||||
diff --git a/kernel/sched.c b/kernel/sched.c
|
||||
index bd8b487..6241049 100644
|
||||
--- a/kernel/sched.c
|
||||
+++ b/kernel/sched.c
|
||||
@@ -5332,7 +5332,19 @@ void __cpuinit init_idle(struct task_struct *idle, int cpu)
|
||||
idle->se.exec_start = sched_clock();
|
||||
|
||||
cpumask_copy(&idle->cpus_allowed, cpumask_of(cpu));
|
||||
+ /*
|
||||
+ * We're having a chicken and egg problem, even though we are
|
||||
+ * holding rq->lock, the cpu isn't yet set to this cpu so the
|
||||
+ * lockdep check in task_group() will fail.
|
||||
+ *
|
||||
+ * Similar case to sched_fork(). / Alternatively we could
|
||||
+ * use task_rq_lock() here and obtain the other rq->lock.
|
||||
+ *
|
||||
+ * Silence PROVE_RCU
|
||||
+ */
|
||||
+ rcu_read_lock();
|
||||
__set_task_cpu(idle, cpu);
|
||||
+ rcu_read_unlock();
|
||||
|
||||
rq->curr = rq->idle = idle;
|
||||
#if defined(CONFIG_SMP) && defined(__ARCH_WANT_UNLOCKED_CTXSW)
|
||||
|
||||
--
|
||||
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
|
||||
the body of a message to majordomo@vger.kernel.org
|
||||
More majordomo info at http://vger.kernel.org/majordomo-info.html
|
||||
Please read the FAQ at http://www.tux.org/lkml/
|
||||
|
|
@ -2,18 +2,6 @@ These are from the media_tree staging/v2.6.37 branch:
|
|||
|
||||
http://git.linuxtv.org/media_tree.git?a=shortlog;h=refs/heads/staging/v2.6.37
|
||||
|
||||
commit 203096251dce7079ef6689836e08a97c2365a258
|
||||
Author: James M McLaren <mclaren@tulane.edu>
|
||||
Date: Sun Oct 3 19:09:18 2010 -0300
|
||||
|
||||
[media] hdpvr: Add missing URB_NO_TRANSFER_DMA_MAP flag
|
||||
|
||||
Necessary on arm.
|
||||
|
||||
Signed-off-by: Janne Grunau <j@jannau.net>
|
||||
Cc: stable@kernel.org
|
||||
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
|
||||
|
||||
commit 0987d5b39def07e081376ec48e0825a8d9d0c1e0
|
||||
Author: Alan Young <ayoung@teleport.com>
|
||||
Date: Mon Jul 26 08:17:53 2010 -0300
|
||||
|
@ -109,15 +97,7 @@ Index: linux-2.6.35.x86_64.ir/drivers/media/video/hdpvr/hdpvr-video.c
|
|||
|
||||
#define print_buffer_status() { \
|
||||
v4l2_dbg(MSG_BUFFER, hdpvr_debug, &dev->v4l2_dev, \
|
||||
@@ -157,6 +157,7 @@ int hdpvr_alloc_buffers(struct hdpvr_dev
|
||||
mem, dev->bulk_in_size,
|
||||
hdpvr_read_bulk_callback, buf);
|
||||
|
||||
+ buf->urb->transfer_flags |= URB_NO_TRANSFER_DMA_MAP;
|
||||
buf->status = BUFSTAT_AVAILABLE;
|
||||
list_add_tail(&buf->buff_list, &dev->free_buff_list);
|
||||
}
|
||||
@@ -337,8 +338,6 @@ static int hdpvr_stop_streaming(struct h
|
||||
@@ -337,8 +337,6 @@ static int hdpvr_stop_streaming(struct h
|
||||
dev->bulk_in_endpointAddr),
|
||||
buf, dev->bulk_in_size, &actual_length,
|
||||
BULK_URB_TIMEOUT)) {
|
||||
|
|
|
@ -1,85 +0,0 @@
|
|||
commit 420a0f66378c84b00b0e603e4d38210102dbe367
|
||||
Author: Dmitry Torokhov <dmitry.torokhov@gmail.com>
|
||||
Date: Sat Sep 18 10:11:09 2010 -0700
|
||||
|
||||
PNPACPI: cope with invalid device IDs
|
||||
|
||||
If primary ID (HID) is invalid try locating first valid ID on compatible
|
||||
ID list before giving up.
|
||||
|
||||
This helps, for example, to recognize i8042 AUX port on Sony Vaio VPCZ1
|
||||
which uses SNYSYN0003 as HID. Without the patch users are forced to
|
||||
boot with i8042.nopnp to make use of their touchpads.
|
||||
|
||||
Tested-by: Jan-Hendrik Zab <jan@jhz.name>
|
||||
Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
|
||||
Signed-off-by: Len Brown <len.brown@intel.com>
|
||||
|
||||
diff --git a/drivers/pnp/pnpacpi/core.c b/drivers/pnp/pnpacpi/core.c
|
||||
index dc4e32e..0d943ee 100644
|
||||
--- a/drivers/pnp/pnpacpi/core.c
|
||||
+++ b/drivers/pnp/pnpacpi/core.c
|
||||
@@ -28,7 +28,7 @@
|
||||
#include "../base.h"
|
||||
#include "pnpacpi.h"
|
||||
|
||||
-static int num = 0;
|
||||
+static int num;
|
||||
|
||||
/* We need only to blacklist devices that have already an acpi driver that
|
||||
* can't use pnp layer. We don't need to blacklist device that are directly
|
||||
@@ -180,11 +180,24 @@ struct pnp_protocol pnpacpi_protocol = {
|
||||
};
|
||||
EXPORT_SYMBOL(pnpacpi_protocol);
|
||||
|
||||
+static char *pnpacpi_get_id(struct acpi_device *device)
|
||||
+{
|
||||
+ struct acpi_hardware_id *id;
|
||||
+
|
||||
+ list_for_each_entry(id, &device->pnp.ids, list) {
|
||||
+ if (ispnpidacpi(id->id))
|
||||
+ return id->id;
|
||||
+ }
|
||||
+
|
||||
+ return NULL;
|
||||
+}
|
||||
+
|
||||
static int __init pnpacpi_add_device(struct acpi_device *device)
|
||||
{
|
||||
acpi_handle temp = NULL;
|
||||
acpi_status status;
|
||||
struct pnp_dev *dev;
|
||||
+ char *pnpid;
|
||||
struct acpi_hardware_id *id;
|
||||
|
||||
/*
|
||||
@@ -192,11 +205,17 @@ static int __init pnpacpi_add_device(struct acpi_device *device)
|
||||
* driver should not be loaded.
|
||||
*/
|
||||
status = acpi_get_handle(device->handle, "_CRS", &temp);
|
||||
- if (ACPI_FAILURE(status) || !ispnpidacpi(acpi_device_hid(device)) ||
|
||||
- is_exclusive_device(device) || (!device->status.present))
|
||||
+ if (ACPI_FAILURE(status))
|
||||
+ return 0;
|
||||
+
|
||||
+ pnpid = pnpacpi_get_id(device);
|
||||
+ if (!pnpid)
|
||||
+ return 0;
|
||||
+
|
||||
+ if (is_exclusive_device(device) || !device->status.present)
|
||||
return 0;
|
||||
|
||||
- dev = pnp_alloc_dev(&pnpacpi_protocol, num, acpi_device_hid(device));
|
||||
+ dev = pnp_alloc_dev(&pnpacpi_protocol, num, pnpid);
|
||||
if (!dev)
|
||||
return -ENOMEM;
|
||||
|
||||
@@ -227,7 +246,7 @@ static int __init pnpacpi_add_device(struct acpi_device *device)
|
||||
pnpacpi_parse_resource_option_data(dev);
|
||||
|
||||
list_for_each_entry(id, &device->pnp.ids, list) {
|
||||
- if (!strcmp(id->id, acpi_device_hid(device)))
|
||||
+ if (!strcmp(id->id, pnpid))
|
||||
continue;
|
||||
if (!ispnpidacpi(id->id))
|
||||
continue;
|
|
@ -1,63 +0,0 @@
|
|||
From sgruszka@redhat.com Fri Nov 26 08:04:40 2010
|
||||
From: Stanislaw Gruszka <sgruszka@redhat.com>
|
||||
To: kernel@lists.fedoraproject.org, Kyle McMartin <kmcmartin@redhat.com>
|
||||
Subject: [PATCH 2.6.35 1/3] r8169: fix rx checksum offload
|
||||
Date: Fri, 26 Nov 2010 14:04:31 +0100
|
||||
|
||||
From: Eric Dumazet <eric.dumazet@gmail.com>
|
||||
|
||||
Commit adea1ac7effbddbe60a9de6d63462bfe79289e59 upstream.
|
||||
|
||||
All skbs given to network stack had their ip_summed set to
|
||||
CHECKSUM_NONE, while hardware said they had correct TCP/UDP checksums.
|
||||
The reason is driver sets skb->ip_summed on the original skb before the
|
||||
copy eventually done by copybreak. The fresh skb gets the ip_summed =
|
||||
CHECKSUM_NONE value, forcing network stack to recompute checksum, and
|
||||
preventing my GRO patch to work.
|
||||
|
||||
Fix is to make the ip_summed setting after skb copy.
|
||||
|
||||
Note : rx_copybreak current value is 16383, so all frames are copied...
|
||||
|
||||
Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
|
||||
Acked-by: Francois Romieu <romieu@fr.zoreil.com>
|
||||
Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
---
|
||||
drivers/net/r8169.c | 6 ++----
|
||||
1 files changed, 2 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/drivers/net/r8169.c b/drivers/net/r8169.c
|
||||
index ad9833b..60b5911 100644
|
||||
--- a/drivers/net/r8169.c
|
||||
+++ b/drivers/net/r8169.c
|
||||
@@ -4458,9 +4458,8 @@ static inline int rtl8169_fragmented_frame(u32 status)
|
||||
return (status & (FirstFrag | LastFrag)) != (FirstFrag | LastFrag);
|
||||
}
|
||||
|
||||
-static inline void rtl8169_rx_csum(struct sk_buff *skb, struct RxDesc *desc)
|
||||
+static inline void rtl8169_rx_csum(struct sk_buff *skb, u32 opts1)
|
||||
{
|
||||
- u32 opts1 = le32_to_cpu(desc->opts1);
|
||||
u32 status = opts1 & RxProtoMask;
|
||||
|
||||
if (((status == RxProtoTCP) && !(opts1 & TCPFail)) ||
|
||||
@@ -4554,8 +4553,6 @@ static int rtl8169_rx_interrupt(struct net_device *dev,
|
||||
continue;
|
||||
}
|
||||
|
||||
- rtl8169_rx_csum(skb, desc);
|
||||
-
|
||||
if (rtl8169_try_rx_copy(&skb, tp, pkt_size, addr)) {
|
||||
pci_dma_sync_single_for_device(pdev, addr,
|
||||
pkt_size, PCI_DMA_FROMDEVICE);
|
||||
@@ -4566,6 +4563,7 @@ static int rtl8169_rx_interrupt(struct net_device *dev,
|
||||
tp->Rx_skbuff[entry] = NULL;
|
||||
}
|
||||
|
||||
+ rtl8169_rx_csum(skb, status);
|
||||
skb_put(skb, pkt_size);
|
||||
skb->protocol = eth_type_trans(skb, dev);
|
||||
|
||||
--
|
||||
1.7.1
|
||||
|
|
@ -1,44 +0,0 @@
|
|||
From sgruszka@redhat.com Fri Nov 26 08:04:42 2010
|
||||
From: Stanislaw Gruszka <sgruszka@redhat.com>
|
||||
To: kernel@lists.fedoraproject.org, Kyle McMartin <kmcmartin@redhat.com>
|
||||
Subject: [PATCH 2.6.35 2/3] r8169: (re)init phy on resume
|
||||
Date: Fri, 26 Nov 2010 14:04:32 +0100
|
||||
|
||||
Commit fccec10b33503a2b1197c8e7a3abd30443bedb08 upstream.
|
||||
|
||||
Fix switching device to low-speed mode after resume reported in:
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=502974
|
||||
|
||||
Reported-and-tested-by: Laurentiu Badea <bugzilla-redhat@wotevah.com>
|
||||
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
|
||||
Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
---
|
||||
drivers/net/r8169.c | 5 +++++
|
||||
1 files changed, 5 insertions(+), 0 deletions(-)
|
||||
|
||||
diff --git a/drivers/net/r8169.c b/drivers/net/r8169.c
|
||||
index 60b5911..661109f 100644
|
||||
--- a/drivers/net/r8169.c
|
||||
+++ b/drivers/net/r8169.c
|
||||
@@ -4893,6 +4893,9 @@ static int rtl8169_resume(struct device *device)
|
||||
{
|
||||
struct pci_dev *pdev = to_pci_dev(device);
|
||||
struct net_device *dev = pci_get_drvdata(pdev);
|
||||
+ struct rtl8169_private *tp = netdev_priv(dev);
|
||||
+
|
||||
+ rtl8169_init_phy(dev, tp);
|
||||
|
||||
if (netif_running(dev))
|
||||
__rtl8169_resume(dev);
|
||||
@@ -4933,6 +4936,8 @@ static int rtl8169_runtime_resume(struct device *device)
|
||||
tp->saved_wolopts = 0;
|
||||
spin_unlock_irq(&tp->lock);
|
||||
|
||||
+ rtl8169_init_phy(dev, tp);
|
||||
+
|
||||
__rtl8169_resume(dev);
|
||||
|
||||
return 0;
|
||||
--
|
||||
1.7.1
|
||||
|
|
@ -1,34 +0,0 @@
|
|||
From sgruszka@redhat.com Fri Nov 26 08:04:43 2010
|
||||
From: Stanislaw Gruszka <sgruszka@redhat.com>
|
||||
To: kernel@lists.fedoraproject.org, Kyle McMartin <kmcmartin@redhat.com>
|
||||
Subject: [PATCH 2.6.35 3/3] r8169: fix broken checksum for invalid sctp/igmp packets
|
||||
Date: Fri, 26 Nov 2010 14:04:33 +0100
|
||||
|
||||
From: Shan Wei <shanwei@cn.fujitsu.com>
|
||||
|
||||
Commit d5d3ebe3be5c5123f2d444e186717f45284151e2 upstream.
|
||||
|
||||
Signed-off-by: Shan Wei <shanwei@cn.fujitsu.com>
|
||||
Acked-by: Francois Romieu <romieu@fr.zoreil.com>
|
||||
Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
---
|
||||
drivers/net/r8169.c | 3 +--
|
||||
1 files changed, 1 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/drivers/net/r8169.c b/drivers/net/r8169.c
|
||||
index 661109f..b99dd04 100644
|
||||
--- a/drivers/net/r8169.c
|
||||
+++ b/drivers/net/r8169.c
|
||||
@@ -4463,8 +4463,7 @@ static inline void rtl8169_rx_csum(struct sk_buff *skb, u32 opts1)
|
||||
u32 status = opts1 & RxProtoMask;
|
||||
|
||||
if (((status == RxProtoTCP) && !(opts1 & TCPFail)) ||
|
||||
- ((status == RxProtoUDP) && !(opts1 & UDPFail)) ||
|
||||
- ((status == RxProtoIP) && !(opts1 & IPFail)))
|
||||
+ ((status == RxProtoUDP) && !(opts1 & UDPFail)))
|
||||
skb->ip_summed = CHECKSUM_UNNECESSARY;
|
||||
else
|
||||
skb->ip_summed = CHECKSUM_NONE;
|
||||
--
|
||||
1.7.1
|
||||
|
Loading…
Reference in New Issue