Merge branch 'f12/master' into f12/user/myoung/xendom0
Conflicts: kernel.spec
This commit is contained in:
commit
11574d71a5
|
@ -1,47 +0,0 @@
|
|||
From: Chuck Ebbert <cebbert@redhat.com>
|
||||
|
||||
CIFS: Fix DNS resolver build
|
||||
|
||||
In file included from fs/cifs/dns_resolve.c:29:
|
||||
fs/cifs/dns_resolve.h:27: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'cifs_init_dns_resolver'
|
||||
|
||||
Just remove the __init and __exit attributes from the init and exit
|
||||
functions. __exit was removed upstream in 51c20fcced5badee0e2021c6c89f44aa3cbd72aa
|
||||
anyway, and there's no point trying to save every byte by fixing
|
||||
this properly.
|
||||
|
||||
Signed-Off-By: Chuck Ebbert <cebbert@redhat.com>
|
||||
|
||||
--- a/fs/cifs/dns_resolve.c
|
||||
+++ b/fs/cifs/dns_resolve.c
|
||||
@@ -176,7 +176,7 @@ out:
|
||||
return rc;
|
||||
}
|
||||
|
||||
-int __init cifs_init_dns_resolver(void)
|
||||
+int cifs_init_dns_resolver(void)
|
||||
{
|
||||
struct cred *cred;
|
||||
struct key *keyring;
|
||||
@@ -226,7 +226,7 @@ failed_put_cred:
|
||||
return ret;
|
||||
}
|
||||
|
||||
-void __exit cifs_exit_dns_resolver(void)
|
||||
+void cifs_exit_dns_resolver(void)
|
||||
{
|
||||
key_revoke(dns_resolver_cache->thread_keyring);
|
||||
unregister_key_type(&key_type_dns_resolver);
|
||||
--- a/fs/cifs/dns_resolve.h
|
||||
+++ b/fs/cifs/dns_resolve.h
|
||||
@@ -24,8 +24,8 @@
|
||||
#define _DNS_RESOLVE_H
|
||||
|
||||
#ifdef __KERNEL__
|
||||
-extern int __init cifs_init_dns_resolver(void);
|
||||
-extern void __exit cifs_exit_dns_resolver(void);
|
||||
+extern int cifs_init_dns_resolver(void);
|
||||
+extern void cifs_exit_dns_resolver(void);
|
||||
extern int dns_resolve_server_name_to_ip(const char *unc, char **ip_addr);
|
||||
#endif /* KERNEL */
|
||||
|
|
@ -3781,8 +3781,8 @@ CONFIG_AUXDISPLAY=y
|
|||
CONFIG_UIO=m
|
||||
CONFIG_UIO_CIF=m
|
||||
CONFIG_UIO_SMX=m
|
||||
CONFIG_UIO_PDRV=m
|
||||
CONFIG_UIO_PDRV_GENIRQ=m
|
||||
# CONFIG_UIO_PDRV is not set
|
||||
# CONFIG_UIO_PDRV_GENIRQ is not set
|
||||
CONFIG_UIO_AEC=m
|
||||
CONFIG_UIO_SERCOS3=m
|
||||
CONFIG_UIO_PCI_GENERIC=m
|
||||
|
|
|
@ -1,138 +0,0 @@
|
|||
From: Youquan, Song <youquan.song@intel.com>
|
||||
Date: Wed, 23 Dec 2009 11:45:20 +0000 (+0800)
|
||||
Subject: crypto: testmgr - Fix complain about lack test for internal used algorithm
|
||||
X-Git-Tag: v2.6.34-rc1~286^2~28
|
||||
X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Ftorvalds%2Flinux-2.6.git;a=commitdiff_plain;h=863b557a88f8c033f7419fabafef4712a5055f85
|
||||
|
||||
crypto: testmgr - Fix complain about lack test for internal used algorithm
|
||||
|
||||
When load aesni-intel and ghash_clmulni-intel driver,kernel will complain no
|
||||
test for some internal used algorithm.
|
||||
The strange information as following:
|
||||
|
||||
alg: No test for __aes-aesni (__driver-aes-aesni)
|
||||
alg: No test for __ecb-aes-aesni (__driver-ecb-aes-aesni)
|
||||
alg: No test for __cbc-aes-aesni (__driver-cbc-aes-aesni)
|
||||
alg: No test for __ecb-aes-aesni (cryptd(__driver-ecb-aes-aesni)
|
||||
alg: No test for __ghash (__ghash-pclmulqdqni)
|
||||
alg: No test for __ghash (cryptd(__ghash-pclmulqdqni))
|
||||
|
||||
This patch add NULL test entries for these algorithm and driver.
|
||||
|
||||
Signed-off-by: Youquan, Song <youquan.song@intel.com>
|
||||
Signed-off-by: Ying, Huang <ying.huang@intel.com>
|
||||
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
---
|
||||
|
||||
diff --git a/crypto/testmgr.c b/crypto/testmgr.c
|
||||
index 7620bfc..c494d76 100644
|
||||
--- a/crypto/testmgr.c
|
||||
+++ b/crypto/testmgr.c
|
||||
@@ -1477,9 +1477,54 @@ static int alg_test_cprng(const struct alg_test_desc *desc, const char *driver,
|
||||
return err;
|
||||
}
|
||||
|
||||
+static int alg_test_null(const struct alg_test_desc *desc,
|
||||
+ const char *driver, u32 type, u32 mask)
|
||||
+{
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
/* Please keep this list sorted by algorithm name. */
|
||||
static const struct alg_test_desc alg_test_descs[] = {
|
||||
{
|
||||
+ .alg = "__driver-cbc-aes-aesni",
|
||||
+ .test = alg_test_null,
|
||||
+ .suite = {
|
||||
+ .cipher = {
|
||||
+ .enc = {
|
||||
+ .vecs = NULL,
|
||||
+ .count = 0
|
||||
+ },
|
||||
+ .dec = {
|
||||
+ .vecs = NULL,
|
||||
+ .count = 0
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+ }, {
|
||||
+ .alg = "__driver-ecb-aes-aesni",
|
||||
+ .test = alg_test_null,
|
||||
+ .suite = {
|
||||
+ .cipher = {
|
||||
+ .enc = {
|
||||
+ .vecs = NULL,
|
||||
+ .count = 0
|
||||
+ },
|
||||
+ .dec = {
|
||||
+ .vecs = NULL,
|
||||
+ .count = 0
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+ }, {
|
||||
+ .alg = "__ghash-pclmulqdqni",
|
||||
+ .test = alg_test_null,
|
||||
+ .suite = {
|
||||
+ .hash = {
|
||||
+ .vecs = NULL,
|
||||
+ .count = 0
|
||||
+ }
|
||||
+ }
|
||||
+ }, {
|
||||
.alg = "ansi_cprng",
|
||||
.test = alg_test_cprng,
|
||||
.fips_allowed = 1,
|
||||
@@ -1623,6 +1668,30 @@ static const struct alg_test_desc alg_test_descs[] = {
|
||||
}
|
||||
}
|
||||
}, {
|
||||
+ .alg = "cryptd(__driver-ecb-aes-aesni)",
|
||||
+ .test = alg_test_null,
|
||||
+ .suite = {
|
||||
+ .cipher = {
|
||||
+ .enc = {
|
||||
+ .vecs = NULL,
|
||||
+ .count = 0
|
||||
+ },
|
||||
+ .dec = {
|
||||
+ .vecs = NULL,
|
||||
+ .count = 0
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+ }, {
|
||||
+ .alg = "cryptd(__ghash-pclmulqdqni)",
|
||||
+ .test = alg_test_null,
|
||||
+ .suite = {
|
||||
+ .hash = {
|
||||
+ .vecs = NULL,
|
||||
+ .count = 0
|
||||
+ }
|
||||
+ }
|
||||
+ }, {
|
||||
.alg = "ctr(aes)",
|
||||
.test = alg_test_skcipher,
|
||||
.fips_allowed = 1,
|
||||
@@ -1669,6 +1738,21 @@ static const struct alg_test_desc alg_test_descs[] = {
|
||||
}
|
||||
}
|
||||
}, {
|
||||
+ .alg = "ecb(__aes-aesni)",
|
||||
+ .test = alg_test_null,
|
||||
+ .suite = {
|
||||
+ .cipher = {
|
||||
+ .enc = {
|
||||
+ .vecs = NULL,
|
||||
+ .count = 0
|
||||
+ },
|
||||
+ .dec = {
|
||||
+ .vecs = NULL,
|
||||
+ .count = 0
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+ }, {
|
||||
.alg = "ecb(aes)",
|
||||
.test = alg_test_skcipher,
|
||||
.fips_allowed = 1,
|
|
@ -1,48 +0,0 @@
|
|||
From: Linus Torvalds <torvalds@linux-foundation.org>
|
||||
Date: Sun, 18 Jul 2010 16:44:37 +0000 (-0700)
|
||||
Subject: drm/i915: add 'reclaimable' to i915 self-reclaimable page allocations
|
||||
X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Ftorvalds%2Flinux-2.6.git;a=commitdiff_plain;h=cd9f040df6ce46573760a507cb88192d05d27d86
|
||||
|
||||
drm/i915: add 'reclaimable' to i915 self-reclaimable page allocations
|
||||
|
||||
The hibernate issues that got fixed in commit 985b823b9192 ("drm/i915:
|
||||
fix hibernation since i915 self-reclaim fixes") turn out to have been
|
||||
incomplete. Vefa Bicakci tested lots of hibernate cycles, and without
|
||||
the __GFP_RECLAIMABLE flag the system eventually fails to resume.
|
||||
|
||||
With the flag added, Vefa can apparently hibernate forever (or until he
|
||||
gets bored running his automated scripts, whichever comes first).
|
||||
|
||||
The reclaimable flag was there originally, and was one of the flags that
|
||||
were dropped (unintentionally) by commit 4bdadb978569 ("drm/i915:
|
||||
Selectively enable self-reclaim") that introduced all these problems,
|
||||
but I didn't want to just blindly add back all the flags in commit
|
||||
985b823b9192, and it looked like __GFP_RECLAIM wasn't necessary. It
|
||||
clearly was.
|
||||
|
||||
I still suspect that there is some subtle reason we're missing that
|
||||
causes the problems, but __GFP_RECLAIMABLE is certainly not wrong to use
|
||||
in this context, and is what the code historically used. And we have no
|
||||
idea what the causes the corruption without it.
|
||||
|
||||
Reported-and-tested-by: M. Vefa Bicakci <bicave@superonline.com>
|
||||
Cc: Dave Airlie <airlied@gmail.com>
|
||||
Cc: Chris Wilson <chris@chris-wilson.co.uk>
|
||||
Cc: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
|
||||
Cc: Hugh Dickins <hugh.dickins@tiscali.co.uk>
|
||||
Cc: stable@kernel.org
|
||||
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
|
||||
---
|
||||
|
||||
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
|
||||
index 0743858..8757ecf 100644
|
||||
--- a/drivers/gpu/drm/i915/i915_gem.c
|
||||
+++ b/drivers/gpu/drm/i915/i915_gem.c
|
||||
@@ -2241,6 +2241,7 @@ i915_gem_object_get_pages(struct drm_gem_object *obj,
|
||||
page = read_cache_page_gfp(mapping, i,
|
||||
GFP_HIGHUSER |
|
||||
__GFP_COLD |
|
||||
+ __GFP_RECLAIMABLE |
|
||||
gfpmask);
|
||||
if (IS_ERR(page))
|
||||
goto err_pages;
|
|
@ -1,41 +0,0 @@
|
|||
From: Linus Torvalds <torvalds@linux-foundation.org>
|
||||
Date: Fri, 2 Jul 2010 00:04:42 +0000 (+1000)
|
||||
Subject: drm/i915: fix hibernation since i915 self-reclaim fixes
|
||||
X-Git-Tag: v2.6.35-rc4~13
|
||||
X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Ftorvalds%2Flinux-2.6.git;a=commitdiff_plain;h=985b823b919273fe1327d56d2196b4f92e5d0fae
|
||||
|
||||
drm/i915: fix hibernation since i915 self-reclaim fixes
|
||||
|
||||
Since commit 4bdadb9785696439c6e2b3efe34aa76df1149c83 ("drm/i915:
|
||||
Selectively enable self-reclaim"), we've been passing GFP_MOVABLE to the
|
||||
i915 page allocator where we weren't before due to some over-eager
|
||||
removal of the page mapping gfp_flags games the code used to play.
|
||||
|
||||
This caused hibernate on Intel hardware to result in a lot of memory
|
||||
corruptions on resume. See for example
|
||||
|
||||
http://bugzilla.kernel.org/show_bug.cgi?id=13811
|
||||
|
||||
Reported-by: Evengi Golov (in bugzilla)
|
||||
Signed-off-by: Dave Airlie <airlied@redhat.com>
|
||||
Tested-by: M. Vefa Bicakci <bicave@superonline.com>
|
||||
Cc: stable@kernel.org
|
||||
Cc: Chris Wilson <chris@chris-wilson.co.uk>
|
||||
Cc: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
|
||||
Cc: Hugh Dickins <hugh.dickins@tiscali.co.uk>
|
||||
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
|
||||
---
|
||||
|
||||
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
|
||||
index 9ded3da..0743858 100644
|
||||
--- a/drivers/gpu/drm/i915/i915_gem.c
|
||||
+++ b/drivers/gpu/drm/i915/i915_gem.c
|
||||
@@ -2239,7 +2239,7 @@ i915_gem_object_get_pages(struct drm_gem_object *obj,
|
||||
mapping = inode->i_mapping;
|
||||
for (i = 0; i < page_count; i++) {
|
||||
page = read_cache_page_gfp(mapping, i,
|
||||
- mapping_gfp_mask (mapping) |
|
||||
+ GFP_HIGHUSER |
|
||||
__GFP_COLD |
|
||||
gfpmask);
|
||||
if (IS_ERR(page))
|
|
@ -0,0 +1,105 @@
|
|||
From 030e105efc9a29c7d34fb59fb0e0a40e54178299 Mon Sep 17 00:00:00 2001
|
||||
From: Ben Skeggs <bskeggs@redhat.com>
|
||||
Date: Wed, 30 Jun 2010 13:34:05 +1000
|
||||
Subject: [PATCH] drm/nouveau: disable acceleration on NVA3/NVA5/NVA8 by default
|
||||
|
||||
There's an GPU lockup problem for which the cause is currently unknown
|
||||
on these chipsets.
|
||||
|
||||
Until it's resolved, it's better to leave the user with a working system
|
||||
without acceleration than to have random lockups.
|
||||
|
||||
With this patch, acceleration will be off by default if a known problem
|
||||
chipset is detected, but can be re-enabled with nouveau.noaccel=0 on
|
||||
the kernel commandline.
|
||||
|
||||
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
|
||||
|
||||
[ cebbert@redhat.com : Backport to F12 and fix some module parameter descriptions. ]
|
||||
---
|
||||
|
||||
--- a/drivers/gpu/drm/nouveau/nouveau_drv.c
|
||||
+++ b/drivers/gpu/drm/nouveau/nouveau_drv.c
|
||||
@@ -75,11 +75,11 @@ int nouveau_ignorelid = 0;
|
||||
int nouveau_ignorelid = 0;
|
||||
module_param_named(ignorelid, nouveau_ignorelid, int, 0400);
|
||||
|
||||
-MODULE_PARM_DESC(noagp, "Disable all acceleration");
|
||||
+MODULE_PARM_DESC(noaccel, "Disable all acceleration");
|
||||
-int nouveau_noaccel = 0;
|
||||
+int nouveau_noaccel = -1;
|
||||
module_param_named(noaccel, nouveau_noaccel, int, 0400);
|
||||
|
||||
-MODULE_PARM_DESC(noagp, "Disable fbcon acceleration");
|
||||
+MODULE_PARM_DESC(nofbaccel, "Disable fbcon acceleration");
|
||||
int nouveau_nofbaccel = 0;
|
||||
module_param_named(nofbaccel, nouveau_nofbaccel, int, 0400);
|
||||
|
||||
--- a/drivers/gpu/drm/nouveau/nouveau_drv.h
|
||||
+++ b/drivers/gpu/drm/nouveau/nouveau_drv.h
|
||||
@@ -493,6 +493,7 @@ enum nouveau_card_type {
|
||||
|
||||
struct drm_nouveau_private {
|
||||
struct drm_device *dev;
|
||||
+ bool noaccel;
|
||||
enum {
|
||||
NOUVEAU_CARD_INIT_DOWN,
|
||||
NOUVEAU_CARD_INIT_DONE,
|
||||
--- a/drivers/gpu/drm/nouveau/nouveau_state.c
|
||||
+++ b/drivers/gpu/drm/nouveau/nouveau_state.c
|
||||
@@ -435,7 +435,7 @@ nouveau_card_init(struct drm_device *dev)
|
||||
if (ret)
|
||||
goto out_timer;
|
||||
|
||||
- if (nouveau_noaccel)
|
||||
+ if (dev_priv->noaccel)
|
||||
engine->graph.accel_blocked = true;
|
||||
else {
|
||||
/* PGRAPH */
|
||||
@@ -491,10 +491,10 @@ out_display:
|
||||
out_irq:
|
||||
drm_irq_uninstall(dev);
|
||||
out_fifo:
|
||||
- if (!nouveau_noaccel)
|
||||
+ if (!dev_priv->noaccel)
|
||||
engine->fifo.takedown(dev);
|
||||
out_graph:
|
||||
- if (!nouveau_noaccel)
|
||||
+ if (!dev_priv->noaccel)
|
||||
engine->graph.takedown(dev);
|
||||
out_fb:
|
||||
engine->fb.takedown(dev);
|
||||
@@ -532,7 +532,7 @@ static void nouveau_card_takedown(struct drm_device *dev)
|
||||
dev_priv->channel = NULL;
|
||||
}
|
||||
|
||||
- if (!nouveau_noaccel) {
|
||||
+ if (!dev_priv->noaccel) {
|
||||
engine->fifo.takedown(dev);
|
||||
engine->graph.takedown(dev);
|
||||
}
|
||||
@@ -691,6 +691,21 @@ int nouveau_load(struct drm_device *dev, unsigned long flags)
|
||||
NV_INFO(dev, "Detected an NV%2x generation card (0x%08x)\n",
|
||||
dev_priv->card_type, reg0);
|
||||
|
||||
+ if (nouveau_noaccel == -1) {
|
||||
+ switch (dev_priv->chipset) {
|
||||
+ case 0xa3:
|
||||
+ case 0xa5:
|
||||
+ case 0xa8:
|
||||
+ dev_priv->noaccel = true;
|
||||
+ break;
|
||||
+ default:
|
||||
+ dev_priv->noaccel = false;
|
||||
+ break;
|
||||
+ }
|
||||
+ } else {
|
||||
+ dev_priv->noaccel = (nouveau_noaccel != 0);
|
||||
+ }
|
||||
+
|
||||
/* map larger RAMIN aperture on NV40 cards */
|
||||
dev_priv->ramin = NULL;
|
||||
if (dev_priv->card_type >= NV_40) {
|
||||
--
|
||||
1.7.2
|
||||
|
File diff suppressed because it is too large
Load Diff
|
@ -817,9 +817,9 @@ index a75ca63..766c468 100644
|
|||
atomic_inc(&dev->counts[_DRM_STAT_IOCTLS]);
|
||||
++file_priv->ioctl_count;
|
||||
@@ -471,7 +502,13 @@ int drm_ioctl(struct inode *inode, struct file *filp,
|
||||
goto err_i1;
|
||||
}
|
||||
}
|
||||
} else
|
||||
memset(kdata, 0, _IOC_SIZE(cmd));
|
||||
|
||||
- retcode = func(dev, kdata, file_priv);
|
||||
+ if (ioctl->flags & DRM_UNLOCKED)
|
||||
+ retcode = func(dev, kdata, file_priv);
|
||||
|
@ -11499,8 +11499,8 @@ index 0e0e4b4..b1d0acb 100644
|
|||
};
|
||||
|
||||
@@ -622,7 +650,7 @@ static enum drm_connector_status intel_lvds_detect(struct drm_connector *connect
|
||||
if (IS_I8XX(dev))
|
||||
return connector_status_connected;
|
||||
{
|
||||
enum drm_connector_status status = connector_status_connected;
|
||||
|
||||
- if (!acpi_lid_open() && !dmi_check_system(bad_lid_status))
|
||||
+ if (!dmi_check_system(bad_lid_status) && !acpi_lid_open())
|
||||
|
|
|
@ -1,34 +0,0 @@
|
|||
From 1f5a81e41f8b1a782c68d3843e9ec1bfaadf7d72 Mon Sep 17 00:00:00 2001
|
||||
From: Theodore Ts'o <tytso@mit.edu>
|
||||
Date: Wed, 2 Jun 2010 22:04:39 -0400
|
||||
Subject: ext4: Make sure the MOVE_EXT ioctl can't overwrite append-only files
|
||||
|
||||
From: Theodore Ts'o <tytso@mit.edu>
|
||||
|
||||
commit 1f5a81e41f8b1a782c68d3843e9ec1bfaadf7d72 upstream.
|
||||
|
||||
Dan Roseberg has reported a problem with the MOVE_EXT ioctl. If the
|
||||
donor file is an append-only file, we should not allow the operation
|
||||
to proceed, lest we end up overwriting the contents of an append-only
|
||||
file.
|
||||
|
||||
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
|
||||
Cc: Dan Rosenberg <dan.j.rosenberg@gmail.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
|
||||
|
||||
---
|
||||
fs/ext4/move_extent.c | 3 +++
|
||||
1 file changed, 3 insertions(+)
|
||||
|
||||
--- a/fs/ext4/move_extent.c
|
||||
+++ b/fs/ext4/move_extent.c
|
||||
@@ -959,6 +959,9 @@ mext_check_arguments(struct inode *orig_
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
+ if (IS_IMMUTABLE(donor_inode) || IS_APPEND(donor_inode))
|
||||
+ return -EPERM;
|
||||
+
|
||||
/* Ext4 move extent does not support swapfile */
|
||||
if (IS_SWAPFILE(orig_inode) || IS_SWAPFILE(donor_inode)) {
|
||||
ext4_debug("ext4 move extent: The argument files should "
|
|
@ -0,0 +1,35 @@
|
|||
From: David S. Miller <davem@davemloft.net>
|
||||
Date: Tue, 31 Aug 2010 01:35:24 +0000 (-0700)
|
||||
Subject: irda: Correctly clean up self->ias_obj on irda_bind() failure.
|
||||
X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Fdavem%2Fnet-2.6.git;a=commitdiff_plain;h=628e300cccaa628d8fb92aa28cb7530a3d5f2257
|
||||
|
||||
irda: Correctly clean up self->ias_obj on irda_bind() failure.
|
||||
|
||||
If irda_open_tsap() fails, the irda_bind() code tries to destroy
|
||||
the ->ias_obj object by hand, but does so wrongly.
|
||||
|
||||
In particular, it fails to a) release the hashbin attached to the
|
||||
object and b) reset the self->ias_obj pointer to NULL.
|
||||
|
||||
Fix both problems by using irias_delete_object() and explicitly
|
||||
setting self->ias_obj to NULL, just as irda_release() does.
|
||||
|
||||
Reported-by: Tavis Ormandy <taviso@cmpxchg8b.com>
|
||||
Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
---
|
||||
|
||||
diff --git a/net/irda/af_irda.c b/net/irda/af_irda.c
|
||||
index 79986a6..fd55b51 100644
|
||||
--- a/net/irda/af_irda.c
|
||||
+++ b/net/irda/af_irda.c
|
||||
@@ -824,8 +824,8 @@ static int irda_bind(struct socket *sock, struct sockaddr *uaddr, int addr_len)
|
||||
|
||||
err = irda_open_tsap(self, addr->sir_lsap_sel, addr->sir_name);
|
||||
if (err < 0) {
|
||||
- kfree(self->ias_obj->name);
|
||||
- kfree(self->ias_obj);
|
||||
+ irias_delete_object(self->ias_obj);
|
||||
+ self->ias_obj = NULL;
|
||||
return err;
|
||||
}
|
||||
|
103
kernel.spec
103
kernel.spec
|
@ -48,7 +48,7 @@ Summary: The Linux kernel
|
|||
# reset this by hand to 1 (or to 0 and then use rpmdev-bumpspec).
|
||||
# scripts/rebase.sh should be made to do that for you, actually.
|
||||
#
|
||||
%global baserelease 158
|
||||
%global baserelease 167
|
||||
%global fedora_build %{baserelease}
|
||||
|
||||
# base_sublevel is the kernel version we're starting with and patching
|
||||
|
@ -60,9 +60,9 @@ Summary: The Linux kernel
|
|||
%if 0%{?released_kernel}
|
||||
|
||||
# Do we have a -stable update to apply?
|
||||
%define stable_update 18
|
||||
%define stable_update 21
|
||||
# Is it a -stable RC?
|
||||
%define stable_rc 1
|
||||
%define stable_rc 0
|
||||
# Set rpm version accordingly
|
||||
%if 0%{?stable_update}
|
||||
%define stablerev .%{stable_update}
|
||||
|
@ -718,13 +718,12 @@ Patch1700: linux-2.6-x86-64-fbdev-primary.patch
|
|||
|
||||
# nouveau + drm fixes
|
||||
Patch1810: drm-upgrayedd.patch
|
||||
Patch1811: drm-upgrayed-fixes.patch
|
||||
Patch1813: drm-radeon-pm.patch
|
||||
#Patch1814: drm-nouveau.patch
|
||||
Patch1818: drm-i915-resume-force-mode.patch
|
||||
Patch1819: drm-intel-big-hammer.patch
|
||||
Patch1820: drm-intel-no-tv-hotplug.patch
|
||||
Patch1821: drm-i915-fix-hibernate-memory-corruption.patch
|
||||
Patch1822: drm-i915-add-reclaimable-to-page-allocations.patch
|
||||
Patch1823: drm-intel-945gm-stability-fixes.patch
|
||||
# intel drm is all merged upstream
|
||||
Patch1824: drm-intel-next.patch
|
||||
|
@ -738,6 +737,7 @@ Patch1844: drm-nouveau-kconfig.patch
|
|||
Patch1845: drm-nouveau-mutex.patch
|
||||
Patch1846: drm-nouveau-update.patch
|
||||
Patch1847: drm-nouveau-d620.patch
|
||||
Patch1848: drm-nouveau-nva3-noaccel.patch
|
||||
|
||||
# kludge to make ich9 e1000 work
|
||||
Patch2000: linux-2.6-e1000-ich9.patch
|
||||
|
@ -769,7 +769,6 @@ Patch3050: linux-2.6-nfsd4-proots.patch
|
|||
Patch3051: linux-2.6-nfs4-callback-hidden.patch
|
||||
|
||||
# btrfs
|
||||
Patch3100: linux-2.6-btrfs-fix-acl.patch
|
||||
Patch3101: btrfs-prohibit-a-operation-of-changing-acls-mask-when-noacl-mount-option-is-used.patch
|
||||
|
||||
# XFS
|
||||
|
@ -800,9 +799,6 @@ Patch12340: ice1712-fix-revo71-mixer-names.patch
|
|||
# rhbz#572653
|
||||
Patch12370: linux-2.6-b43_-Rewrite-DMA-Tx-status-handling-sanity-checks.patch
|
||||
|
||||
# rhbz#533746
|
||||
Patch12380: ssb_check_for_sprom.patch
|
||||
|
||||
# backport iwlwifi fixes (thanks, sgruszka!) -- drop when stable catches-up
|
||||
Patch12391: iwlwifi-reset-card-during-probe.patch
|
||||
|
||||
|
@ -836,19 +832,16 @@ Patch13030: l2tp-fix-oops-in-pppol2tp_xmit.patch
|
|||
Patch14020: inotify-fix-inotify-oneshot-support.patch
|
||||
Patch14030: inotify-send-IN_UNMOUNT-events.patch
|
||||
|
||||
Patch14040: crypto-testmgr-add-null-test-for-aesni.patch
|
||||
Patch14050: crypto-add-async-hash-testing.patch
|
||||
|
||||
Patch14110: ext4-make-sure-the-move_ext-ioctl-can-t-overwrite-append-only-files.patch
|
||||
Patch14115: xfs-prevent-swapext-from-operating-on-write-only-files.patch
|
||||
Patch14120: cifs-fix-dns-resolver.patch
|
||||
|
||||
# Red Hat Bugzilla #610911
|
||||
Patch14130: kvm-mmu-fix-conflict-access-permissions-in-direct-sp.patch
|
||||
|
||||
Patch14140: hid-01-usbhid-initialize-interface-pointers-early-enough.patch
|
||||
Patch14141: hid-02-fix-suspend-crash-by-moving-initializations-earlier.patch
|
||||
|
||||
Patch14150: irda-correctly-clean-up-self-ias_obj-on-irda_bind-failure.patch
|
||||
|
||||
Patch19997: xen.pvops.pre.patch
|
||||
Patch19998: xen.pvops.patch
|
||||
Patch19999: xen.pvops.post.patch
|
||||
|
@ -1332,7 +1325,6 @@ ApplyPatch linux-2.6-execshield.patch
|
|||
# xfs
|
||||
|
||||
# btrfs
|
||||
ApplyPatch linux-2.6-btrfs-fix-acl.patch
|
||||
ApplyPatch btrfs-prohibit-a-operation-of-changing-acls-mask-when-noacl-mount-option-is-used.patch
|
||||
|
||||
# eCryptfs
|
||||
|
@ -1467,6 +1459,7 @@ ApplyPatch linux-2.6-phylib-autoload.patch
|
|||
ApplyPatch linux-2.6-x86-64-fbdev-primary.patch
|
||||
# Nouveau DRM + drm fixes
|
||||
ApplyPatch drm-upgrayedd.patch
|
||||
ApplyPatch drm-upgrayed-fixes.patch
|
||||
#ApplyPatch drm-intel-big-hammer.patch
|
||||
#ApplyPatch drm-intel-no-tv-hotplug.patch
|
||||
ApplyOptionalPatch drm-intel-next.patch
|
||||
|
@ -1474,9 +1467,6 @@ ApplyPatch drm-intel-acpi-populate-didl.patch
|
|||
ApplyPatch drm-intel-make-lvds-work.patch
|
||||
# gm45 stability fixes
|
||||
ApplyPatch drm-intel-945gm-stability-fixes.patch
|
||||
# hibernation memory corruption fixes
|
||||
ApplyPatch drm-i915-fix-hibernate-memory-corruption.patch
|
||||
ApplyPatch drm-i915-add-reclaimable-to-page-allocations.patch
|
||||
|
||||
ApplyPatch drm-nouveau-g80-ctxprog.patch
|
||||
ApplyPatch drm-nouveau-tvout-disable.patch
|
||||
|
@ -1484,6 +1474,7 @@ ApplyPatch drm-nouveau-safetile-getparam.patch
|
|||
ApplyPatch drm-nouveau-kconfig.patch
|
||||
ApplyPatch drm-nouveau-update.patch
|
||||
ApplyPatch drm-nouveau-d620.patch
|
||||
ApplyPatch drm-nouveau-nva3-noaccel.patch
|
||||
|
||||
# linux1394 git patches
|
||||
#ApplyPatch linux-2.6-firewire-git-update.patch
|
||||
|
@ -1518,9 +1509,6 @@ ApplyPatch ice1712-fix-revo71-mixer-names.patch
|
|||
# rhbz#572653
|
||||
ApplyPatch linux-2.6-b43_-Rewrite-DMA-Tx-status-handling-sanity-checks.patch
|
||||
|
||||
# rhbz#533746
|
||||
#ApplyPatch ssb_check_for_sprom.patch
|
||||
|
||||
# backport iwlwifi fixes (thanks, sgruszka!) -- drop when stable catches-up
|
||||
ApplyPatch iwlwifi-reset-card-during-probe.patch
|
||||
|
||||
|
@ -1556,25 +1544,18 @@ ApplyPatch l2tp-fix-oops-in-pppol2tp_xmit.patch
|
|||
ApplyPatch inotify-fix-inotify-oneshot-support.patch
|
||||
ApplyPatch inotify-send-IN_UNMOUNT-events.patch
|
||||
|
||||
# add tests for aesni module (#571577)
|
||||
ApplyPatch crypto-testmgr-add-null-test-for-aesni.patch
|
||||
# add tests for crypto async hashing (#571577)
|
||||
ApplyPatch crypto-add-async-hash-testing.patch
|
||||
|
||||
# CVE-2010-2066
|
||||
ApplyPatch ext4-make-sure-the-move_ext-ioctl-can-t-overwrite-append-only-files.patch
|
||||
# CVE-2010-2266
|
||||
#ApplyPatch xfs-prevent-swapext-from-operating-on-write-only-files.patch
|
||||
|
||||
# fix DNS resolver build, broken in 2.6.32.17
|
||||
#ApplyPatch cifs-fix-dns-resolver.patch
|
||||
|
||||
ApplyPatch kvm-mmu-fix-conflict-access-permissions-in-direct-sp.patch
|
||||
|
||||
# RHBZ #592785
|
||||
ApplyPatch hid-01-usbhid-initialize-interface-pointers-early-enough.patch
|
||||
ApplyPatch hid-02-fix-suspend-crash-by-moving-initializations-earlier.patch
|
||||
|
||||
# CVE-2010-2954
|
||||
ApplyPatch irda-correctly-clean-up-self-ias_obj-on-irda_bind-failure.patch
|
||||
|
||||
ApplyPatch xen.pvops.pre.patch
|
||||
ApplyPatch xen.pvops.patch
|
||||
ApplyPatch xen.pvops.post.patch
|
||||
|
@ -1586,6 +1567,8 @@ ApplyPatch xen.pvops.post.patch
|
|||
|
||||
chmod +x scripts/checkpatch.pl
|
||||
|
||||
touch .scmversion
|
||||
|
||||
# only deal with configs if we are going to build for the arch
|
||||
%ifnarch %nobuildarches
|
||||
|
||||
|
@ -2229,6 +2212,64 @@ fi
|
|||
%kernel_variant_files -k vmlinux %{with_kdump} kdump
|
||||
|
||||
%changelog
|
||||
* Thu Sep 02 2010 Chuck Ebbert <cebbert@redhat.com> 2.6.32.21-167
|
||||
- irda-correctly-clean-up-self-ias_obj-on-irda_bind-failure.patch (CVE-2010-2954)
|
||||
|
||||
* Fri Aug 27 2010 Chuck Ebbert <cebbert@redhat.com> 2.6.32.21-166
|
||||
- Linux 2.6.32.21
|
||||
|
||||
* Wed Aug 25 2010 Chuck Ebbert <cebbert@redhat.com> 2.6.32.21-165.rc1
|
||||
- Linux 2.6.32.21-rc1
|
||||
- Drop merged patches:
|
||||
drm-i915-add-reclaimable-to-page-allocations.patch
|
||||
drm-i915-fix-hibernate-memory-corruption.patch
|
||||
- Fix up execshield and DRM upgrade patches to apply after 2.6.32.21
|
||||
|
||||
* Sat Aug 21 2010 Chuck Ebbert <cebbert@redhat.com> 2.6.32.20-164
|
||||
- Linux 2.6.32.20
|
||||
- Drop merged patches:
|
||||
mm-fix-page-table-unmap-for-stack-guard-page-properly.patch
|
||||
mm-fix-up-some-user-visible-effects-of-the-stack-guard-page.patch
|
||||
|
||||
* Wed Aug 18 2010 Chuck Ebbert <cebbert@redhat.com> 2.6.32.19-163
|
||||
- Bump version.
|
||||
|
||||
* Tue Aug 17 2010 Kyle McMartin <kyle@redhat.com>
|
||||
- Touch .scmversion in the kernel top level to prevent scripts/setlocalversion
|
||||
from recursing into our fedpkg git tree and trying to decide whether the
|
||||
kernel git is modified (obviously not, since it's a tarball.) Fixes make
|
||||
local.
|
||||
|
||||
* Tue Aug 17 2010 Chuck Ebbert <cebbert@redhat.com> 2.6.32.19-162
|
||||
- Fix fallout from the stack guard page fixes.
|
||||
(mm-fix-page-table-unmap-for-stack-guard-page-properly.patch,
|
||||
mm-fix-up-some-user-visible-effects-of-the-stack-guard-page.patch)
|
||||
|
||||
* Sat Aug 14 2010 Chuck Ebbert <cebbert@redhat.com> 2.6.32.19-161
|
||||
- Linux 2.6.32.19
|
||||
|
||||
* Fri Aug 13 2010 Chuck Ebbert <cebbert@redhat.com> 2.6.32.19-160.rc1
|
||||
- Linux 2.6.32.19-rc1
|
||||
- Comment out patches merged upstream:
|
||||
linux-2.6-btrfs-fix-acl.patch
|
||||
crypto-testmgr-add-null-test-for-aesni.patch
|
||||
ext4-make-sure-the-move_ext-ioctl-can-t-overwrite-append-only-files.patch
|
||||
ext4-fix-freeze-deadlock-under-io.patch
|
||||
- Fix linux-2.6-usb-wwan-update.patch to apply after 2.6.32.19
|
||||
|
||||
* Tue Aug 10 2010 Chuck Ebbert <cebbert@redhat.com> 2.6.32.18-159
|
||||
- Linux 2.6.32.18
|
||||
- Backport nouveau noaccel fix for nva3+ cards from f13.
|
||||
- ext4-fix-freeze-deadlock-under-io.patch:
|
||||
Fix deadlock caused by patch in 2.6.32.17
|
||||
(0036-ext4-don-t-return-to-userspace-after-freezing-the-fs.patch)
|
||||
|
||||
* Tue Aug 10 2010 Chuck Ebbert <cebbert@redhat.com> 2.6.32.18-158.rc1
|
||||
- Bring back drm-upgrayed-fixes.patch, dropped in the
|
||||
2.6.32.16 update. (#620955)
|
||||
- Revert upstream DRM stable fix we already have:
|
||||
drm-i915-give-up-on-8xx-lid-status.patch
|
||||
|
||||
* Sat Aug 07 2010 Chuck Ebbert <cebbert@redhat.com>
|
||||
- Linux 2.6.32.18-rc1
|
||||
- Revert DRM patches from -stable we already have:
|
||||
|
|
|
@ -1,25 +0,0 @@
|
|||
diff -up linux-2.6.32.noarch/fs/btrfs/acl.c.orig linux-2.6.32.noarch/fs/btrfs/acl.c
|
||||
--- linux-2.6.32.noarch/fs/btrfs/acl.c.orig 2009-12-02 22:51:21.000000000 -0500
|
||||
+++ linux-2.6.32.noarch/fs/btrfs/acl.c 2010-01-14 15:36:25.926371944 -0500
|
||||
@@ -110,13 +110,15 @@ static int btrfs_set_acl(struct inode *i
|
||||
|
||||
switch (type) {
|
||||
case ACL_TYPE_ACCESS:
|
||||
- mode = inode->i_mode;
|
||||
- ret = posix_acl_equiv_mode(acl, &mode);
|
||||
- if (ret < 0)
|
||||
- return ret;
|
||||
- ret = 0;
|
||||
- inode->i_mode = mode;
|
||||
name = POSIX_ACL_XATTR_ACCESS;
|
||||
+ if (acl) {
|
||||
+ mode = inode->i_mode;
|
||||
+ ret = posix_acl_equiv_mode(acl, &mode);
|
||||
+ if (ret < 0)
|
||||
+ return ret;
|
||||
+ ret = 0;
|
||||
+ inode->i_mode = mode;
|
||||
+ }
|
||||
break;
|
||||
case ACL_TYPE_DEFAULT:
|
||||
if (!S_ISDIR(inode->i_mode))
|
|
@ -737,15 +737,16 @@ index 73f5e4b..814b95f 100644
|
|||
static void unmap_region(struct mm_struct *mm,
|
||||
struct vm_area_struct *vma, struct vm_area_struct *prev,
|
||||
unsigned long start, unsigned long end);
|
||||
@@ -389,6 +402,8 @@ static inline void
|
||||
__vma_link_list(struct mm_struct *mm, struct vm_area_struct *vma,
|
||||
struct vm_area_struct *prev, struct rb_node *rb_parent)
|
||||
@@ -389,6 +402,9 @@ static inline void
|
||||
{
|
||||
struct vm_area_struct *next;
|
||||
|
||||
+ if (vma->vm_flags & VM_EXEC)
|
||||
+ arch_add_exec_range(mm, vma->vm_end);
|
||||
+
|
||||
vma->vm_prev = prev;
|
||||
if (prev) {
|
||||
vma->vm_next = prev->vm_next;
|
||||
prev->vm_next = vma;
|
||||
next = prev->vm_next;
|
||||
@@ -491,6 +506,8 @@ __vma_unlink(struct mm_struct *mm, struct vm_area_struct *vma,
|
||||
rb_erase(&vma->vm_rb, &mm->mm_rb);
|
||||
if (mm->mmap_cache == vma)
|
||||
|
|
|
@ -1,3 +1,42 @@
|
|||
From 7b9c5abee98c54f85bcc04bd4d7ec8d5094c73f4 Mon Sep 17 00:00:00 2001
|
||||
From: Jesse Barnes <jbarnes@virtuousgeek.org>
|
||||
Date: Fri, 12 Feb 2010 09:30:00 -0800
|
||||
Subject: drm/i915: give up on 8xx lid status
|
||||
|
||||
From: Jesse Barnes <jbarnes@virtuousgeek.org>
|
||||
|
||||
commit 7b9c5abee98c54f85bcc04bd4d7ec8d5094c73f4 upstream.
|
||||
|
||||
These old machines more often than not lie about their lid state. So
|
||||
don't use it to detect LVDS presence, but leave the event handler to
|
||||
deal with lid open/close, when we might need to reset the mode.
|
||||
|
||||
Fixes kernel bug #15248
|
||||
|
||||
Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
|
||||
Signed-off-by: Eric Anholt <eric@anholt.net>
|
||||
Cc: Ben Hutchings <ben@decadent.org.uk>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
|
||||
|
||||
---
|
||||
drivers/gpu/drm/i915/intel_lvds.c | 4 ++++
|
||||
1 file changed, 4 insertions(+)
|
||||
|
||||
--- a/drivers/gpu/drm/i915/intel_lvds.c
|
||||
+++ b/drivers/gpu/drm/i915/intel_lvds.c
|
||||
@@ -648,8 +648,12 @@ static const struct dmi_system_id bad_li
|
||||
*/
|
||||
static enum drm_connector_status intel_lvds_detect(struct drm_connector *connector)
|
||||
{
|
||||
+ struct drm_device *dev = connector->dev;
|
||||
enum drm_connector_status status = connector_status_connected;
|
||||
|
||||
+ if (IS_I8XX(dev))
|
||||
+ return connector_status_connected;
|
||||
+
|
||||
if (!acpi_lid_open() && !dmi_check_system(bad_lid_status))
|
||||
status = connector_status_disconnected;
|
||||
|
||||
From 6363ee6f496eb7e3b3f78dc105e522c7b496089b Mon Sep 17 00:00:00 2001
|
||||
From: Zhao Yakui <yakui.zhao@intel.com>
|
||||
Date: Tue, 24 Nov 2009 09:48:44 +0800
|
||||
|
|
|
@ -116,7 +116,7 @@ diff -up linux-2.6.32.noarch/drivers/usb/serial/option.c.orig linux-2.6.32.noarc
|
|||
struct option_port_private {
|
||||
/* Input endpoints and buffer for this port */
|
||||
struct urb *in_urbs[N_IN_URB];
|
||||
@@ -767,216 +740,28 @@ module_exit(option_exit);
|
||||
@@ -767,223 +740,35 @@ module_exit(option_exit);
|
||||
static int option_probe(struct usb_serial *serial,
|
||||
const struct usb_device_id *id)
|
||||
{
|
||||
|
@ -135,6 +135,13 @@ diff -up linux-2.6.32.noarch/drivers/usb/serial/option.c.orig linux-2.6.32.noarc
|
|||
serial->interface->cur_altsetting->desc.bInterfaceClass != 0xff)
|
||||
return -ENODEV;
|
||||
|
||||
/* Don't bind network interfaces on Huawei K3765 & K4505 */
|
||||
if (serial->dev->descriptor.idVendor == HUAWEI_VENDOR_ID &&
|
||||
(serial->dev->descriptor.idProduct == HUAWEI_PRODUCT_K3765 ||
|
||||
serial->dev->descriptor.idProduct == HUAWEI_PRODUCT_K4505) &&
|
||||
serial->interface->cur_altsetting->desc.bInterfaceNumber == 1)
|
||||
return -ENODEV;
|
||||
|
||||
- data = serial->private = kzalloc(sizeof(struct option_intf_private), GFP_KERNEL);
|
||||
+ data = serial->private = kzalloc(sizeof(struct usb_wwan_intf_private), GFP_KERNEL);
|
||||
if (!data)
|
||||
|
|
3
sources
3
sources
|
@ -1,3 +1,2 @@
|
|||
260551284ac224c3a43c4adac7df4879 linux-2.6.32.tar.bz2
|
||||
ca9a0f5c28803e9231dc9ee5b0faa863 patch-2.6.32.17.bz2
|
||||
b77ed133c11b20925bfb231383381840 patch-2.6.32.18-rc1.bz2
|
||||
29aa10a231882a6e52908642b572326f patch-2.6.32.21.bz2
|
||||
|
|
|
@ -1,185 +0,0 @@
|
|||
From 380bed7aa858cbe2d4eeb783e2bed7d01828518d Mon Sep 17 00:00:00 2001
|
||||
From: John W. Linville <linville@tuxdriver.com>
|
||||
Date: Fri, 19 Mar 2010 14:58:01 -0400
|
||||
Subject: [PATCH v4] ssb: do not read SPROM if it does not exist
|
||||
|
||||
Attempting to read registers that don't exist on the SSB bus can cause
|
||||
hangs on some boxes. At least some b43 devices are 'in the wild' that
|
||||
don't have SPROMs at all. When the SSB bus support loads, it attempts
|
||||
to read these (non-existant) SPROMs and causes hard hangs on the box --
|
||||
no console output, etc.
|
||||
|
||||
This patch adds some intelligence to determine whether or not the SPROM
|
||||
is present before attempting to read it. This avoids those hard hangs
|
||||
on those devices with no SPROM attached to their SSB bus. The
|
||||
SSB-attached devices (e.g. b43, et al.) won't work, but at least the box
|
||||
will survive to test further patches. :-)
|
||||
|
||||
Signed-off-by: John W. Linville <linville@tuxdriver.com>
|
||||
Cc: Larry Finger <Larry.Finger@lwfinger.net>
|
||||
Cc: Michael Buesch <mb@bu3sch.de>
|
||||
Cc: stable@kernel.org
|
||||
---
|
||||
Version 4, move read of ChipCommon status register to ssb_chipcommon_init
|
||||
Version 3, add missing semi-colon... :-(
|
||||
Version 2, check the correct place for ChipCommon core revision... :-)
|
||||
|
||||
drivers/ssb/driver_chipcommon.c | 3 +++
|
||||
drivers/ssb/pci.c | 3 +++
|
||||
drivers/ssb/sprom.c | 22 ++++++++++++++++++++++
|
||||
include/linux/ssb/ssb.h | 3 +++
|
||||
include/linux/ssb/ssb_driver_chipcommon.h | 15 +++++++++++++++
|
||||
5 files changed, 46 insertions(+), 0 deletions(-)
|
||||
|
||||
diff --git a/drivers/ssb/driver_chipcommon.c b/drivers/ssb/driver_chipcommon.c
|
||||
index 9681536..6cf288d 100644
|
||||
--- a/drivers/ssb/driver_chipcommon.c
|
||||
+++ b/drivers/ssb/driver_chipcommon.c
|
||||
@@ -233,6 +233,9 @@ void ssb_chipcommon_init(struct ssb_chipcommon *cc)
|
||||
{
|
||||
if (!cc->dev)
|
||||
return; /* We don't have a ChipCommon */
|
||||
+ if (cc->dev->id.revision >= 11) {
|
||||
+ cc->status = chipco_read32(cc, SSB_CHIPCO_CHIPSTAT);
|
||||
+ }
|
||||
ssb_pmu_init(cc);
|
||||
chipco_powercontrol_init(cc);
|
||||
ssb_chipco_set_clockmode(cc, SSB_CLKMODE_FAST);
|
||||
diff --git a/drivers/ssb/pci.c b/drivers/ssb/pci.c
|
||||
index 9e50896..2f7b16d 100644
|
||||
--- a/drivers/ssb/pci.c
|
||||
+++ b/drivers/ssb/pci.c
|
||||
@@ -620,6 +620,9 @@ static int ssb_pci_sprom_get(struct ssb_bus *bus,
|
||||
int err = -ENOMEM;
|
||||
u16 *buf;
|
||||
|
||||
+ if (!ssb_is_sprom_available(bus))
|
||||
+ return -ENODEV;
|
||||
+
|
||||
buf = kcalloc(SSB_SPROMSIZE_WORDS_R123, sizeof(u16), GFP_KERNEL);
|
||||
if (!buf)
|
||||
goto out;
|
||||
diff --git a/drivers/ssb/sprom.c b/drivers/ssb/sprom.c
|
||||
index d0e6762..55eb9b0 100644
|
||||
--- a/drivers/ssb/sprom.c
|
||||
+++ b/drivers/ssb/sprom.c
|
||||
@@ -175,3 +175,25 @@ const struct ssb_sprom *ssb_get_fallback_sprom(void)
|
||||
{
|
||||
return fallback_sprom;
|
||||
}
|
||||
+
|
||||
+bool ssb_is_sprom_available(struct ssb_bus *bus)
|
||||
+{
|
||||
+ /* status register only exists on chipcomon rev >= 11 */
|
||||
+ if (bus->chipco.dev->id.revision < 11)
|
||||
+ return true;
|
||||
+
|
||||
+ switch (bus->chip_id) {
|
||||
+ case 0x4312:
|
||||
+ return SSB_CHIPCO_CHST_4312_SPROM_PRESENT(bus->chipco.status);
|
||||
+ case 0x4322:
|
||||
+ return SSB_CHIPCO_CHST_4322_SPROM_PRESENT(bus->chipco.status);
|
||||
+ case 0x4325:
|
||||
+ return SSB_CHIPCO_CHST_4325_SPROM_PRESENT(bus->chipco.status);
|
||||
+ default:
|
||||
+ break;
|
||||
+ }
|
||||
+ if (bus->chipco.dev->id.revision >= 31)
|
||||
+ return bus->chipco.capabilities & SSB_CHIPCO_CAP_SPROM;
|
||||
+
|
||||
+ return true;
|
||||
+}
|
||||
diff --git a/include/linux/ssb/ssb.h b/include/linux/ssb/ssb.h
|
||||
index 24f9885..3b4da23 100644
|
||||
--- a/include/linux/ssb/ssb.h
|
||||
+++ b/include/linux/ssb/ssb.h
|
||||
@@ -394,6 +394,9 @@ extern int ssb_bus_sdiobus_register(struct ssb_bus *bus,
|
||||
|
||||
extern void ssb_bus_unregister(struct ssb_bus *bus);
|
||||
|
||||
+/* Does the device have an SPROM? */
|
||||
+extern bool ssb_is_sprom_available(struct ssb_bus *bus);
|
||||
+
|
||||
/* Set a fallback SPROM.
|
||||
* See kdoc at the function definition for complete documentation. */
|
||||
extern int ssb_arch_set_fallback_sprom(const struct ssb_sprom *sprom);
|
||||
diff --git a/include/linux/ssb/ssb_driver_chipcommon.h b/include/linux/ssb/ssb_driver_chipcommon.h
|
||||
index 4e27acf..2cdf249 100644
|
||||
--- a/include/linux/ssb/ssb_driver_chipcommon.h
|
||||
+++ b/include/linux/ssb/ssb_driver_chipcommon.h
|
||||
@@ -53,6 +53,7 @@
|
||||
#define SSB_CHIPCO_CAP_64BIT 0x08000000 /* 64-bit Backplane */
|
||||
#define SSB_CHIPCO_CAP_PMU 0x10000000 /* PMU available (rev >= 20) */
|
||||
#define SSB_CHIPCO_CAP_ECI 0x20000000 /* ECI available (rev >= 20) */
|
||||
+#define SSB_CHIPCO_CAP_SPROM 0x40000000 /* SPROM present */
|
||||
#define SSB_CHIPCO_CORECTL 0x0008
|
||||
#define SSB_CHIPCO_CORECTL_UARTCLK0 0x00000001 /* Drive UART with internal clock */
|
||||
#define SSB_CHIPCO_CORECTL_SE 0x00000002 /* sync clk out enable (corerev >= 3) */
|
||||
@@ -385,6 +386,7 @@
|
||||
|
||||
|
||||
/** Chip specific Chip-Status register contents. */
|
||||
+#define SSB_CHIPCO_CHST_4322_SPROM_EXISTS 0x00000040 /* SPROM present */
|
||||
#define SSB_CHIPCO_CHST_4325_SPROM_OTP_SEL 0x00000003
|
||||
#define SSB_CHIPCO_CHST_4325_DEFCIS_SEL 0 /* OTP is powered up, use def. CIS, no SPROM */
|
||||
#define SSB_CHIPCO_CHST_4325_SPROM_SEL 1 /* OTP is powered up, SPROM is present */
|
||||
@@ -398,6 +400,18 @@
|
||||
#define SSB_CHIPCO_CHST_4325_RCAL_VALUE_SHIFT 4
|
||||
#define SSB_CHIPCO_CHST_4325_PMUTOP_2B 0x00000200 /* 1 for 2b, 0 for to 2a */
|
||||
|
||||
+/** Macros to determine SPROM presence based on Chip-Status register. */
|
||||
+#define SSB_CHIPCO_CHST_4312_SPROM_PRESENT(status) \
|
||||
+ ((status & SSB_CHIPCO_CHST_4325_SPROM_OTP_SEL) != \
|
||||
+ SSB_CHIPCO_CHST_4325_OTP_SEL)
|
||||
+#define SSB_CHIPCO_CHST_4322_SPROM_PRESENT(status) \
|
||||
+ (status & SSB_CHIPCO_CHST_4322_SPROM_EXISTS)
|
||||
+#define SSB_CHIPCO_CHST_4325_SPROM_PRESENT(status) \
|
||||
+ (((status & SSB_CHIPCO_CHST_4325_SPROM_OTP_SEL) != \
|
||||
+ SSB_CHIPCO_CHST_4325_DEFCIS_SEL) && \
|
||||
+ ((status & SSB_CHIPCO_CHST_4325_SPROM_OTP_SEL) != \
|
||||
+ SSB_CHIPCO_CHST_4325_OTP_SEL))
|
||||
+
|
||||
|
||||
|
||||
/** Clockcontrol masks and values **/
|
||||
@@ -564,6 +578,7 @@ struct ssb_chipcommon_pmu {
|
||||
struct ssb_chipcommon {
|
||||
struct ssb_device *dev;
|
||||
u32 capabilities;
|
||||
+ u32 status;
|
||||
/* Fast Powerup Delay constant */
|
||||
u16 fast_pwrup_delay;
|
||||
struct ssb_chipcommon_pmu pmu;
|
||||
--
|
||||
1.6.2.5
|
||||
|
||||
From ec032742062ad1b01dfe75cfccdbc5b850837c23 Mon Sep 17 00:00:00 2001
|
||||
From: John W. Linville <linville@tuxdriver.com>
|
||||
Date: Tue, 30 Mar 2010 13:47:39 -0400
|
||||
Subject: [PATCH] ssb: avoid null ptr deref in ssb_is_sprom_available
|
||||
|
||||
Some older devices don't have chipcommon, but they do have SPROM.
|
||||
|
||||
Signed-off-by: John W. Linville <linville@tuxdriver.com>
|
||||
---
|
||||
drivers/ssb/sprom.c | 4 ++++
|
||||
1 files changed, 4 insertions(+), 0 deletions(-)
|
||||
|
||||
diff --git a/drivers/ssb/sprom.c b/drivers/ssb/sprom.c
|
||||
index 55eb9b0..874d8f1 100644
|
||||
--- a/drivers/ssb/sprom.c
|
||||
+++ b/drivers/ssb/sprom.c
|
||||
@@ -178,6 +178,10 @@ const struct ssb_sprom *ssb_get_fallback_sprom(void)
|
||||
|
||||
bool ssb_is_sprom_available(struct ssb_bus *bus)
|
||||
{
|
||||
+ /* some older devices don't have chipcommon, but they have sprom */
|
||||
+ if (!bus->chipco.dev)
|
||||
+ return true;
|
||||
+
|
||||
/* status register only exists on chipcomon rev >= 11 */
|
||||
if (bus->chipco.dev->id.revision < 11)
|
||||
return true;
|
||||
--
|
||||
1.6.2.5
|
||||
|
|
@ -1,42 +0,0 @@
|
|||
From: Dan Rosenberg <dan.j.rosenberg@gmail.com>
|
||||
Date: Thu, 24 Jun 2010 02:07:47 +0000 (+1000)
|
||||
Subject: xfs: prevent swapext from operating on write-only files
|
||||
X-Git-Tag: v2.6.35-rc4~4^2~4
|
||||
X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Ftorvalds%2Flinux-2.6.git;a=commitdiff_plain;h=1817176a86352f65210139d4c794ad2d19fc6b63
|
||||
|
||||
xfs: prevent swapext from operating on write-only files
|
||||
[ cve-2010-2266 ]
|
||||
[ cebbert@redhat.com : backport to 2.6.32 ]
|
||||
|
||||
This patch prevents user "foo" from using the SWAPEXT ioctl to swap
|
||||
a write-only file owned by user "bar" into a file owned by "foo" and
|
||||
subsequently reading it. It does so by checking that the file
|
||||
descriptors passed to the ioctl are also opened for reading.
|
||||
|
||||
Signed-off-by: Dan Rosenberg <dan.j.rosenberg@gmail.com>
|
||||
Reviewed-by: Christoph Hellwig <hch@lst.de>
|
||||
---
|
||||
|
||||
diff --git a/fs/xfs/xfs_dfrag.c b/fs/xfs/xfs_dfrag.c
|
||||
index 5bba29a..7f159d2 100644
|
||||
--- a/fs/xfs/xfs_dfrag.c
|
||||
+++ b/fs/xfs/xfs_dfrag.c
|
||||
@@ -69,7 +69,9 @@ xfs_swapext(
|
||||
goto out;
|
||||
}
|
||||
|
||||
- if (!(file->f_mode & FMODE_WRITE) || (file->f_flags & O_APPEND)) {
|
||||
+ if (!(file->f_mode & FMODE_WRITE) ||
|
||||
+ !(file->f_mode & FMODE_READ) ||
|
||||
+ (file->f_flags & O_APPEND)) {
|
||||
error = XFS_ERROR(EBADF);
|
||||
goto out_put_file;
|
||||
}
|
||||
@@ -81,6 +83,7 @@ xfs_swapext(
|
||||
}
|
||||
|
||||
if (!(target_file->f_mode & FMODE_WRITE) ||
|
||||
+ !(target_file->f_mode & FMODE_READ) ||
|
||||
(target_file->f_flags & O_APPEND)) {
|
||||
error = XFS_ERROR(EBADF);
|
||||
goto out_put_target_file;
|
Loading…
Reference in New Issue