aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNatanael Copa <ncopa@alpinelinux.org>2009-08-05 11:49:34 +0000
committerNatanael Copa <ncopa@alpinelinux.org>2009-08-05 11:49:34 +0000
commit9597f197aaa95bd29c4bb994f829cb6dbd77b3dc (patch)
treee4595cf7d5ffd53344bdf60da89e2f89ede416d5
parentd2655ad2a6ef6bbdf542330036f57cd3ffb7bf13 (diff)
downloadalpine_aports-9597f197aaa95bd29c4bb994f829cb6dbd77b3dc.tar.bz2
alpine_aports-9597f197aaa95bd29c4bb994f829cb6dbd77b3dc.tar.xz
alpine_aports-9597f197aaa95bd29c4bb994f829cb6dbd77b3dc.zip
main/linux-grsec: upgrade to 2.6.30.4
-rw-r--r--main/linux-grsec/0001-linux-2.6.28.5-ipgre-strict-binding.patch207
-rw-r--r--main/linux-grsec/0002-linux-2.6.28.5-ipgre-optimize-hash-lookup.patch140
-rw-r--r--main/linux-grsec/APKBUILD24
-rw-r--r--main/linux-grsec/grsecurity-2.1.14-2.6.30.4-200908041752.patch (renamed from main/linux-grsec/grsecurity-2.1.14-2.6.29.6-200907231934.patch)12147
-rw-r--r--main/linux-grsec/kernelconfig333
-rw-r--r--main/linux-grsec/linux-nbma-mroute-v4-2.6.30.diff258
6 files changed, 6093 insertions, 7016 deletions
diff --git a/main/linux-grsec/0001-linux-2.6.28.5-ipgre-strict-binding.patch b/main/linux-grsec/0001-linux-2.6.28.5-ipgre-strict-binding.patch
deleted file mode 100644
index fd0cfeb2a2..0000000000
--- a/main/linux-grsec/0001-linux-2.6.28.5-ipgre-strict-binding.patch
+++ /dev/null
@@ -1,207 +0,0 @@
1From: Timo Teras <timo.teras@iki.fi>
2Date: Tue, 20 Jan 2009 01:22:12 +0000 (-0800)
3Subject: gre: strict physical device binding
4X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Fdavem%2Fnet-next-2.6.git;a=commitdiff_plain;h=749c10f931923451a4c59b4435d182aa9ae27a4f;hp=57a574993d94671b495cdbe8aeb78b745abfe14f
5
6gre: strict physical device binding
7
8Check the device on receive path and allow otherwise identical devices
9as long as the physical device differs.
10
11This is useful for NBMA tunnels, where you want to use different gre IP
12for each public IP available via different physical devices.
13
14Signed-off-by: Timo Teras <timo.teras@iki.fi>
15Signed-off-by: David S. Miller <davem@davemloft.net>
16---
17
18diff --git a/net/ipv4/ip_gre.c b/net/ipv4/ip_gre.c
19index 0101521..4a43739 100644
20--- a/net/ipv4/ip_gre.c
21+++ b/net/ipv4/ip_gre.c
22@@ -164,67 +164,113 @@ static DEFINE_RWLOCK(ipgre_lock);
23
24 /* Given src, dst and key, find appropriate for input tunnel. */
25
26-static struct ip_tunnel * ipgre_tunnel_lookup(struct net *net,
27+static struct ip_tunnel * ipgre_tunnel_lookup(struct net_device *dev,
28 __be32 remote, __be32 local,
29 __be32 key, __be16 gre_proto)
30 {
31+ struct net *net = dev_net(dev);
32+ int link = dev->ifindex;
33 unsigned h0 = HASH(remote);
34 unsigned h1 = HASH(key);
35- struct ip_tunnel *t;
36- struct ip_tunnel *t2 = NULL;
37+ struct ip_tunnel *t, *sel[4] = { NULL, NULL, NULL, NULL };
38 struct ipgre_net *ign = net_generic(net, ipgre_net_id);
39 int dev_type = (gre_proto == htons(ETH_P_TEB)) ?
40 ARPHRD_ETHER : ARPHRD_IPGRE;
41+ int idx;
42
43 for (t = ign->tunnels_r_l[h0^h1]; t; t = t->next) {
44- if (local == t->parms.iph.saddr && remote == t->parms.iph.daddr) {
45- if (t->parms.i_key == key && t->dev->flags & IFF_UP) {
46- if (t->dev->type == dev_type)
47- return t;
48- if (t->dev->type == ARPHRD_IPGRE && !t2)
49- t2 = t;
50- }
51- }
52+ if (local != t->parms.iph.saddr ||
53+ remote != t->parms.iph.daddr ||
54+ key != t->parms.i_key ||
55+ !(t->dev->flags & IFF_UP))
56+ continue;
57+
58+ if (t->dev->type != ARPHRD_IPGRE &&
59+ t->dev->type != dev_type)
60+ continue;
61+
62+ idx = 0;
63+ if (t->parms.link != link)
64+ idx |= 1;
65+ if (t->dev->type != dev_type)
66+ idx |= 2;
67+ if (idx == 0)
68+ return t;
69+ if (sel[idx] == NULL)
70+ sel[idx] = t;
71 }
72
73 for (t = ign->tunnels_r[h0^h1]; t; t = t->next) {
74- if (remote == t->parms.iph.daddr) {
75- if (t->parms.i_key == key && t->dev->flags & IFF_UP) {
76- if (t->dev->type == dev_type)
77- return t;
78- if (t->dev->type == ARPHRD_IPGRE && !t2)
79- t2 = t;
80- }
81- }
82+ if (remote != t->parms.iph.daddr ||
83+ key != t->parms.i_key ||
84+ !(t->dev->flags & IFF_UP))
85+ continue;
86+
87+ if (t->dev->type != ARPHRD_IPGRE &&
88+ t->dev->type != dev_type)
89+ continue;
90+
91+ idx = 0;
92+ if (t->parms.link != link)
93+ idx |= 1;
94+ if (t->dev->type != dev_type)
95+ idx |= 2;
96+ if (idx == 0)
97+ return t;
98+ if (sel[idx] == NULL)
99+ sel[idx] = t;
100 }
101
102 for (t = ign->tunnels_l[h1]; t; t = t->next) {
103- if (local == t->parms.iph.saddr ||
104- (local == t->parms.iph.daddr &&
105- ipv4_is_multicast(local))) {
106- if (t->parms.i_key == key && t->dev->flags & IFF_UP) {
107- if (t->dev->type == dev_type)
108- return t;
109- if (t->dev->type == ARPHRD_IPGRE && !t2)
110- t2 = t;
111- }
112- }
113+ if ((local != t->parms.iph.saddr &&
114+ (local != t->parms.iph.daddr ||
115+ !ipv4_is_multicast(local))) ||
116+ key != t->parms.i_key ||
117+ !(t->dev->flags & IFF_UP))
118+ continue;
119+
120+ if (t->dev->type != ARPHRD_IPGRE &&
121+ t->dev->type != dev_type)
122+ continue;
123+
124+ idx = 0;
125+ if (t->parms.link != link)
126+ idx |= 1;
127+ if (t->dev->type != dev_type)
128+ idx |= 2;
129+ if (idx == 0)
130+ return t;
131+ if (sel[idx] == NULL)
132+ sel[idx] = t;
133 }
134
135 for (t = ign->tunnels_wc[h1]; t; t = t->next) {
136- if (t->parms.i_key == key && t->dev->flags & IFF_UP) {
137- if (t->dev->type == dev_type)
138- return t;
139- if (t->dev->type == ARPHRD_IPGRE && !t2)
140- t2 = t;
141- }
142+ if (t->parms.i_key != key ||
143+ !(t->dev->flags & IFF_UP))
144+ continue;
145+
146+ if (t->dev->type != ARPHRD_IPGRE &&
147+ t->dev->type != dev_type)
148+ continue;
149+
150+ idx = 0;
151+ if (t->parms.link != link)
152+ idx |= 1;
153+ if (t->dev->type != dev_type)
154+ idx |= 2;
155+ if (idx == 0)
156+ return t;
157+ if (sel[idx] == NULL)
158+ sel[idx] = t;
159 }
160
161- if (t2)
162- return t2;
163+ for (idx = 1; idx < ARRAY_SIZE(sel); idx++)
164+ if (sel[idx] != NULL)
165+ return sel[idx];
166
167- if (ign->fb_tunnel_dev->flags&IFF_UP)
168+ if (ign->fb_tunnel_dev->flags & IFF_UP)
169 return netdev_priv(ign->fb_tunnel_dev);
170+
171 return NULL;
172 }
173
174@@ -284,6 +330,7 @@ static struct ip_tunnel *ipgre_tunnel_find(struct net *net,
175 __be32 remote = parms->iph.daddr;
176 __be32 local = parms->iph.saddr;
177 __be32 key = parms->i_key;
178+ int link = parms->link;
179 struct ip_tunnel *t, **tp;
180 struct ipgre_net *ign = net_generic(net, ipgre_net_id);
181
182@@ -291,6 +338,7 @@ static struct ip_tunnel *ipgre_tunnel_find(struct net *net,
183 if (local == t->parms.iph.saddr &&
184 remote == t->parms.iph.daddr &&
185 key == t->parms.i_key &&
186+ link == t->parms.link &&
187 type == t->dev->type)
188 break;
189
190@@ -421,7 +469,7 @@ static void ipgre_err(struct sk_buff *skb, u32 info)
191 }
192
193 read_lock(&ipgre_lock);
194- t = ipgre_tunnel_lookup(dev_net(skb->dev), iph->daddr, iph->saddr,
195+ t = ipgre_tunnel_lookup(skb->dev, iph->daddr, iph->saddr,
196 flags & GRE_KEY ?
197 *(((__be32 *)p) + (grehlen / 4) - 1) : 0,
198 p[1]);
199@@ -518,7 +566,7 @@ static int ipgre_rcv(struct sk_buff *skb)
200 gre_proto = *(__be16 *)(h + 2);
201
202 read_lock(&ipgre_lock);
203- if ((tunnel = ipgre_tunnel_lookup(dev_net(skb->dev),
204+ if ((tunnel = ipgre_tunnel_lookup(skb->dev,
205 iph->saddr, iph->daddr, key,
206 gre_proto))) {
207 struct net_device_stats *stats = &tunnel->dev->stats;
diff --git a/main/linux-grsec/0002-linux-2.6.28.5-ipgre-optimize-hash-lookup.patch b/main/linux-grsec/0002-linux-2.6.28.5-ipgre-optimize-hash-lookup.patch
deleted file mode 100644
index fbfef33b9b..0000000000
--- a/main/linux-grsec/0002-linux-2.6.28.5-ipgre-optimize-hash-lookup.patch
+++ /dev/null
@@ -1,140 +0,0 @@
1From: Timo Teras <timo.teras@iki.fi>
2Date: Tue, 27 Jan 2009 04:56:10 +0000 (-0800)
3Subject: gre: optimize hash lookup
4X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Fdavem%2Fnet-next-2.6.git;a=commitdiff_plain;h=afcf12422ec8236dc8b9238fef7a475876eea8da;hp=3eacdf58c2c0b9507afedfc19108e98b992c31e4
5
6gre: optimize hash lookup
7
8Instead of keeping candidate tunnel device from all categories,
9keep only one candidate with best score. This optimizes stack
10usage and speeds up exit code.
11
12Signed-off-by: Timo Teras <timo.teras@iki.fi>
13Signed-off-by: David S. Miller <davem@davemloft.net>
14---
15
16diff --git a/net/ipv4/ip_gre.c b/net/ipv4/ip_gre.c
17index 4a43739..07a188a 100644
18--- a/net/ipv4/ip_gre.c
19+++ b/net/ipv4/ip_gre.c
20@@ -172,11 +172,11 @@ static struct ip_tunnel * ipgre_tunnel_lookup(struct net_device *dev,
21 int link = dev->ifindex;
22 unsigned h0 = HASH(remote);
23 unsigned h1 = HASH(key);
24- struct ip_tunnel *t, *sel[4] = { NULL, NULL, NULL, NULL };
25+ struct ip_tunnel *t, *cand = NULL;
26 struct ipgre_net *ign = net_generic(net, ipgre_net_id);
27 int dev_type = (gre_proto == htons(ETH_P_TEB)) ?
28 ARPHRD_ETHER : ARPHRD_IPGRE;
29- int idx;
30+ int score, cand_score = 4;
31
32 for (t = ign->tunnels_r_l[h0^h1]; t; t = t->next) {
33 if (local != t->parms.iph.saddr ||
34@@ -189,15 +189,18 @@ static struct ip_tunnel * ipgre_tunnel_lookup(struct net_device *dev,
35 t->dev->type != dev_type)
36 continue;
37
38- idx = 0;
39+ score = 0;
40 if (t->parms.link != link)
41- idx |= 1;
42+ score |= 1;
43 if (t->dev->type != dev_type)
44- idx |= 2;
45- if (idx == 0)
46+ score |= 2;
47+ if (score == 0)
48 return t;
49- if (sel[idx] == NULL)
50- sel[idx] = t;
51+
52+ if (score < cand_score) {
53+ cand = t;
54+ cand_score = score;
55+ }
56 }
57
58 for (t = ign->tunnels_r[h0^h1]; t; t = t->next) {
59@@ -210,15 +213,18 @@ static struct ip_tunnel * ipgre_tunnel_lookup(struct net_device *dev,
60 t->dev->type != dev_type)
61 continue;
62
63- idx = 0;
64+ score = 0;
65 if (t->parms.link != link)
66- idx |= 1;
67+ score |= 1;
68 if (t->dev->type != dev_type)
69- idx |= 2;
70- if (idx == 0)
71+ score |= 2;
72+ if (score == 0)
73 return t;
74- if (sel[idx] == NULL)
75- sel[idx] = t;
76+
77+ if (score < cand_score) {
78+ cand = t;
79+ cand_score = score;
80+ }
81 }
82
83 for (t = ign->tunnels_l[h1]; t; t = t->next) {
84@@ -233,15 +239,18 @@ static struct ip_tunnel * ipgre_tunnel_lookup(struct net_device *dev,
85 t->dev->type != dev_type)
86 continue;
87
88- idx = 0;
89+ score = 0;
90 if (t->parms.link != link)
91- idx |= 1;
92+ score |= 1;
93 if (t->dev->type != dev_type)
94- idx |= 2;
95- if (idx == 0)
96+ score |= 2;
97+ if (score == 0)
98 return t;
99- if (sel[idx] == NULL)
100- sel[idx] = t;
101+
102+ if (score < cand_score) {
103+ cand = t;
104+ cand_score = score;
105+ }
106 }
107
108 for (t = ign->tunnels_wc[h1]; t; t = t->next) {
109@@ -253,20 +262,22 @@ static struct ip_tunnel * ipgre_tunnel_lookup(struct net_device *dev,
110 t->dev->type != dev_type)
111 continue;
112
113- idx = 0;
114+ score = 0;
115 if (t->parms.link != link)
116- idx |= 1;
117+ score |= 1;
118 if (t->dev->type != dev_type)
119- idx |= 2;
120- if (idx == 0)
121+ score |= 2;
122+ if (score == 0)
123 return t;
124- if (sel[idx] == NULL)
125- sel[idx] = t;
126+
127+ if (score < cand_score) {
128+ cand = t;
129+ cand_score = score;
130+ }
131 }
132
133- for (idx = 1; idx < ARRAY_SIZE(sel); idx++)
134- if (sel[idx] != NULL)
135- return sel[idx];
136+ if (cand != NULL)
137+ return cand;
138
139 if (ign->fb_tunnel_dev->flags & IFF_UP)
140 return netdev_priv(ign->fb_tunnel_dev);
diff --git a/main/linux-grsec/APKBUILD b/main/linux-grsec/APKBUILD
index 20fa9284bd..c5a1d3f9e3 100644
--- a/main/linux-grsec/APKBUILD
+++ b/main/linux-grsec/APKBUILD
@@ -2,9 +2,9 @@
2 2
3_flavor=grsec 3_flavor=grsec
4pkgname=linux-${_flavor} 4pkgname=linux-${_flavor}
5pkgver=2.6.29.6 5pkgver=2.6.30.4
6_kernver=2.6.29 6_kernver=2.6.30
7pkgrel=2 7pkgrel=1
8pkgdesc="Linux kernel with grsecurity" 8pkgdesc="Linux kernel with grsecurity"
9url=http://grsecurity.net 9url=http://grsecurity.net
10depends="mkinitfs" 10depends="mkinitfs"
@@ -13,9 +13,8 @@ _config=${config:-kernelconfig}
13install="$pkgname.post-install $pkgname.post-upgrade" 13install="$pkgname.post-install $pkgname.post-upgrade"
14source="ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-$_kernver.tar.bz2 14source="ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-$_kernver.tar.bz2
15 ftp://ftp.kernel.org/pub/linux/kernel/v2.6/patch-$pkgver.bz2 15 ftp://ftp.kernel.org/pub/linux/kernel/v2.6/patch-$pkgver.bz2
16 grsecurity-2.1.14-2.6.29.6-200907231934.patch 16 grsecurity-2.1.14-2.6.30.4-200908041752.patch
17 0001-linux-2.6.28.5-ipgre-strict-binding.patch 17 linux-nbma-mroute-v4-2.6.30.diff
18 0002-linux-2.6.28.5-ipgre-optimize-hash-lookup.patch
19 net-next-2.6.git-5ef12d98a19254ee5dc851bd83e214b43ec1f725.patch 18 net-next-2.6.git-5ef12d98a19254ee5dc851bd83e214b43ec1f725.patch
20 $_config 19 $_config
21 $install 20 $install
@@ -31,7 +30,7 @@ _prepare() {
31 bunzip2 -c < ../patch-$pkgver.bz2 | patch -p1 || return 1 30 bunzip2 -c < ../patch-$pkgver.bz2 | patch -p1 || return 1
32 fi 31 fi
33 32
34 for i in ../*.patch; do 33 for i in ../*.diff ../*.patch; do
35 msg "Applying $i..." 34 msg "Applying $i..."
36 patch -p1 -N < $i || return 1 35 patch -p1 -N < $i || return 1
37 done 36 done
@@ -112,12 +111,11 @@ dev() {
112 "$subpkgdir"/lib/modules/${_abi_release}/build 111 "$subpkgdir"/lib/modules/${_abi_release}/build
113} 112}
114 113
115md5sums="64921b5ff5cdadbccfcd3820f03be7d8 linux-2.6.29.tar.bz2 114md5sums="7a80058a6382e5108cdb5554d1609615 linux-2.6.30.tar.bz2
1160317760b52c9ac7a11de997da19a366e patch-2.6.29.6.bz2 115d0fc44b54ba5953140b3f2aa9a1f2580 patch-2.6.30.4.bz2
117bc067ccfe86517c4e4568b76b4a50e06 grsecurity-2.1.14-2.6.29.6-200907231934.patch 1167d9fd867108074ec9dcc9d2385ff1e7b grsecurity-2.1.14-2.6.30.4-200908041752.patch
1187673b4521283ad41434a18ca18b16ad8 0001-linux-2.6.28.5-ipgre-strict-binding.patch 1177420c0b1095335990313656b114e1379 linux-nbma-mroute-v4-2.6.30.diff
1198f405c738b150c532c46eaad5390cca2 0002-linux-2.6.28.5-ipgre-optimize-hash-lookup.patch
120ca05fd252783b82e01610e775cf56498 net-next-2.6.git-5ef12d98a19254ee5dc851bd83e214b43ec1f725.patch 118ca05fd252783b82e01610e775cf56498 net-next-2.6.git-5ef12d98a19254ee5dc851bd83e214b43ec1f725.patch
121c9443dcc46eb70267b4cfe6a6694f637 kernelconfig 11913bdad159b0d99281c931a7dcb7d31ae kernelconfig
1222834240b15805b248ef2a973b1ad4416 linux-grsec.post-install 1202834240b15805b248ef2a973b1ad4416 linux-grsec.post-install
1232834240b15805b248ef2a973b1ad4416 linux-grsec.post-upgrade" 1212834240b15805b248ef2a973b1ad4416 linux-grsec.post-upgrade"
diff --git a/main/linux-grsec/grsecurity-2.1.14-2.6.29.6-200907231934.patch b/main/linux-grsec/grsecurity-2.1.14-2.6.30.4-200908041752.patch
index eb8c335b73..799132a383 100644
--- a/main/linux-grsec/grsecurity-2.1.14-2.6.29.6-200907231934.patch
+++ b/main/linux-grsec/grsecurity-2.1.14-2.6.30.4-200908041752.patch
@@ -1,6 +1,6 @@
1diff -urNp linux-2.6.29.6/arch/alpha/include/asm/atomic.h linux-2.6.29.6/arch/alpha/include/asm/atomic.h 1diff -urNp linux-2.6.30.4/arch/alpha/include/asm/atomic.h linux-2.6.30.4/arch/alpha/include/asm/atomic.h
2--- linux-2.6.29.6/arch/alpha/include/asm/atomic.h 2009-07-02 19:41:20.000000000 -0400 2--- linux-2.6.30.4/arch/alpha/include/asm/atomic.h 2009-07-24 17:47:51.000000000 -0400
3+++ linux-2.6.29.6/arch/alpha/include/asm/atomic.h 2009-07-23 17:34:32.032153687 -0400 3+++ linux-2.6.30.4/arch/alpha/include/asm/atomic.h 2009-07-30 09:48:09.872868955 -0400
4@@ -246,6 +246,9 @@ static __inline__ int atomic64_add_unles 4@@ -246,6 +246,9 @@ static __inline__ int atomic64_add_unles
5 #define atomic64_dec_and_test(v) (atomic64_sub_return(1, (v)) == 0) 5 #define atomic64_dec_and_test(v) (atomic64_sub_return(1, (v)) == 0)
6 6
@@ -11,9 +11,9 @@ diff -urNp linux-2.6.29.6/arch/alpha/include/asm/atomic.h linux-2.6.29.6/arch/al
11 #define atomic64_inc(v) atomic64_add(1,(v)) 11 #define atomic64_inc(v) atomic64_add(1,(v))
12 12
13 #define atomic_dec(v) atomic_sub(1,(v)) 13 #define atomic_dec(v) atomic_sub(1,(v))
14diff -urNp linux-2.6.29.6/arch/alpha/include/asm/elf.h linux-2.6.29.6/arch/alpha/include/asm/elf.h 14diff -urNp linux-2.6.30.4/arch/alpha/include/asm/elf.h linux-2.6.30.4/arch/alpha/include/asm/elf.h
15--- linux-2.6.29.6/arch/alpha/include/asm/elf.h 2009-07-02 19:41:20.000000000 -0400 15--- linux-2.6.30.4/arch/alpha/include/asm/elf.h 2009-07-24 17:47:51.000000000 -0400
16+++ linux-2.6.29.6/arch/alpha/include/asm/elf.h 2009-07-23 17:34:32.032809072 -0400 16+++ linux-2.6.30.4/arch/alpha/include/asm/elf.h 2009-07-30 09:48:09.873636524 -0400
17@@ -91,6 +91,13 @@ typedef elf_fpreg_t elf_fpregset_t[ELF_N 17@@ -91,6 +91,13 @@ typedef elf_fpreg_t elf_fpregset_t[ELF_N
18 18
19 #define ELF_ET_DYN_BASE (TASK_UNMAPPED_BASE + 0x1000000) 19 #define ELF_ET_DYN_BASE (TASK_UNMAPPED_BASE + 0x1000000)
@@ -28,9 +28,9 @@ diff -urNp linux-2.6.29.6/arch/alpha/include/asm/elf.h linux-2.6.29.6/arch/alpha
28 /* $0 is set by ld.so to a pointer to a function which might be 28 /* $0 is set by ld.so to a pointer to a function which might be
29 registered using atexit. This provides a mean for the dynamic 29 registered using atexit. This provides a mean for the dynamic
30 linker to call DT_FINI functions for shared libraries that have 30 linker to call DT_FINI functions for shared libraries that have
31diff -urNp linux-2.6.29.6/arch/alpha/include/asm/kmap_types.h linux-2.6.29.6/arch/alpha/include/asm/kmap_types.h 31diff -urNp linux-2.6.30.4/arch/alpha/include/asm/kmap_types.h linux-2.6.30.4/arch/alpha/include/asm/kmap_types.h
32--- linux-2.6.29.6/arch/alpha/include/asm/kmap_types.h 2009-07-02 19:41:20.000000000 -0400 32--- linux-2.6.30.4/arch/alpha/include/asm/kmap_types.h 2009-07-24 17:47:51.000000000 -0400
33+++ linux-2.6.29.6/arch/alpha/include/asm/kmap_types.h 2009-07-23 17:34:32.032809072 -0400 33+++ linux-2.6.30.4/arch/alpha/include/asm/kmap_types.h 2009-07-30 09:48:09.873636524 -0400
34@@ -24,7 +24,8 @@ D(9) KM_IRQ0, 34@@ -24,7 +24,8 @@ D(9) KM_IRQ0,
35 D(10) KM_IRQ1, 35 D(10) KM_IRQ1,
36 D(11) KM_SOFTIRQ0, 36 D(11) KM_SOFTIRQ0,
@@ -41,9 +41,9 @@ diff -urNp linux-2.6.29.6/arch/alpha/include/asm/kmap_types.h linux-2.6.29.6/arc
41 }; 41 };
42 42
43 #undef D 43 #undef D
44diff -urNp linux-2.6.29.6/arch/alpha/include/asm/pgtable.h linux-2.6.29.6/arch/alpha/include/asm/pgtable.h 44diff -urNp linux-2.6.30.4/arch/alpha/include/asm/pgtable.h linux-2.6.30.4/arch/alpha/include/asm/pgtable.h
45--- linux-2.6.29.6/arch/alpha/include/asm/pgtable.h 2009-07-02 19:41:20.000000000 -0400 45--- linux-2.6.30.4/arch/alpha/include/asm/pgtable.h 2009-07-24 17:47:51.000000000 -0400
46+++ linux-2.6.29.6/arch/alpha/include/asm/pgtable.h 2009-07-23 17:34:32.032809072 -0400 46+++ linux-2.6.30.4/arch/alpha/include/asm/pgtable.h 2009-07-30 09:48:09.874706218 -0400
47@@ -101,6 +101,17 @@ struct vm_area_struct; 47@@ -101,6 +101,17 @@ struct vm_area_struct;
48 #define PAGE_SHARED __pgprot(_PAGE_VALID | __ACCESS_BITS) 48 #define PAGE_SHARED __pgprot(_PAGE_VALID | __ACCESS_BITS)
49 #define PAGE_COPY __pgprot(_PAGE_VALID | __ACCESS_BITS | _PAGE_FOW) 49 #define PAGE_COPY __pgprot(_PAGE_VALID | __ACCESS_BITS | _PAGE_FOW)
@@ -62,9 +62,9 @@ diff -urNp linux-2.6.29.6/arch/alpha/include/asm/pgtable.h linux-2.6.29.6/arch/a
62 #define PAGE_KERNEL __pgprot(_PAGE_VALID | _PAGE_ASM | _PAGE_KRE | _PAGE_KWE) 62 #define PAGE_KERNEL __pgprot(_PAGE_VALID | _PAGE_ASM | _PAGE_KRE | _PAGE_KWE)
63 63
64 #define _PAGE_NORMAL(x) __pgprot(_PAGE_VALID | __ACCESS_BITS | (x)) 64 #define _PAGE_NORMAL(x) __pgprot(_PAGE_VALID | __ACCESS_BITS | (x))
65diff -urNp linux-2.6.29.6/arch/alpha/kernel/module.c linux-2.6.29.6/arch/alpha/kernel/module.c 65diff -urNp linux-2.6.30.4/arch/alpha/kernel/module.c linux-2.6.30.4/arch/alpha/kernel/module.c
66--- linux-2.6.29.6/arch/alpha/kernel/module.c 2009-07-02 19:41:20.000000000 -0400 66--- linux-2.6.30.4/arch/alpha/kernel/module.c 2009-07-24 17:47:51.000000000 -0400
67+++ linux-2.6.29.6/arch/alpha/kernel/module.c 2009-07-23 17:34:32.032809072 -0400 67+++ linux-2.6.30.4/arch/alpha/kernel/module.c 2009-07-30 09:48:09.875723461 -0400
68@@ -182,7 +182,7 @@ apply_relocate_add(Elf64_Shdr *sechdrs, 68@@ -182,7 +182,7 @@ apply_relocate_add(Elf64_Shdr *sechdrs,
69 69
70 /* The small sections were sorted to the end of the segment. 70 /* The small sections were sorted to the end of the segment.
@@ -74,10 +74,10 @@ diff -urNp linux-2.6.29.6/arch/alpha/kernel/module.c linux-2.6.29.6/arch/alpha/k
74 got = sechdrs[me->arch.gotsecindex].sh_addr; 74 got = sechdrs[me->arch.gotsecindex].sh_addr;
75 75
76 for (i = 0; i < n; i++) { 76 for (i = 0; i < n; i++) {
77diff -urNp linux-2.6.29.6/arch/alpha/kernel/osf_sys.c linux-2.6.29.6/arch/alpha/kernel/osf_sys.c 77diff -urNp linux-2.6.30.4/arch/alpha/kernel/osf_sys.c linux-2.6.30.4/arch/alpha/kernel/osf_sys.c
78--- linux-2.6.29.6/arch/alpha/kernel/osf_sys.c 2009-07-02 19:41:20.000000000 -0400 78--- linux-2.6.30.4/arch/alpha/kernel/osf_sys.c 2009-07-24 17:47:51.000000000 -0400
79+++ linux-2.6.29.6/arch/alpha/kernel/osf_sys.c 2009-07-23 17:34:32.032809072 -0400 79+++ linux-2.6.30.4/arch/alpha/kernel/osf_sys.c 2009-07-30 09:48:09.875723461 -0400
80@@ -1217,6 +1217,10 @@ arch_get_unmapped_area(struct file *filp 80@@ -1215,6 +1215,10 @@ arch_get_unmapped_area(struct file *filp
81 merely specific addresses, but regions of memory -- perhaps 81 merely specific addresses, but regions of memory -- perhaps
82 this feature should be incorporated into all ports? */ 82 this feature should be incorporated into all ports? */
83 83
@@ -88,7 +88,7 @@ diff -urNp linux-2.6.29.6/arch/alpha/kernel/osf_sys.c linux-2.6.29.6/arch/alpha/
88 if (addr) { 88 if (addr) {
89 addr = arch_get_unmapped_area_1 (PAGE_ALIGN(addr), len, limit); 89 addr = arch_get_unmapped_area_1 (PAGE_ALIGN(addr), len, limit);
90 if (addr != (unsigned long) -ENOMEM) 90 if (addr != (unsigned long) -ENOMEM)
91@@ -1224,8 +1228,8 @@ arch_get_unmapped_area(struct file *filp 91@@ -1222,8 +1226,8 @@ arch_get_unmapped_area(struct file *filp
92 } 92 }
93 93
94 /* Next, try allocating at TASK_UNMAPPED_BASE. */ 94 /* Next, try allocating at TASK_UNMAPPED_BASE. */
@@ -99,9 +99,9 @@ diff -urNp linux-2.6.29.6/arch/alpha/kernel/osf_sys.c linux-2.6.29.6/arch/alpha/
99 if (addr != (unsigned long) -ENOMEM) 99 if (addr != (unsigned long) -ENOMEM)
100 return addr; 100 return addr;
101 101
102diff -urNp linux-2.6.29.6/arch/alpha/mm/fault.c linux-2.6.29.6/arch/alpha/mm/fault.c 102diff -urNp linux-2.6.30.4/arch/alpha/mm/fault.c linux-2.6.30.4/arch/alpha/mm/fault.c
103--- linux-2.6.29.6/arch/alpha/mm/fault.c 2009-07-02 19:41:20.000000000 -0400 103--- linux-2.6.30.4/arch/alpha/mm/fault.c 2009-07-24 17:47:51.000000000 -0400
104+++ linux-2.6.29.6/arch/alpha/mm/fault.c 2009-07-23 17:34:32.033902767 -0400 104+++ linux-2.6.30.4/arch/alpha/mm/fault.c 2009-07-30 09:48:09.876636955 -0400
105@@ -54,6 +54,124 @@ __load_new_mm_context(struct mm_struct * 105@@ -54,6 +54,124 @@ __load_new_mm_context(struct mm_struct *
106 __reload_thread(pcb); 106 __reload_thread(pcb);
107 } 107 }
@@ -258,23 +258,23 @@ diff -urNp linux-2.6.29.6/arch/alpha/mm/fault.c linux-2.6.29.6/arch/alpha/mm/fau
258 } else if (!cause) { 258 } else if (!cause) {
259 /* Allow reads even for write-only mappings */ 259 /* Allow reads even for write-only mappings */
260 if (!(vma->vm_flags & (VM_READ | VM_WRITE))) 260 if (!(vma->vm_flags & (VM_READ | VM_WRITE)))
261diff -urNp linux-2.6.29.6/arch/arm/include/asm/atomic.h linux-2.6.29.6/arch/arm/include/asm/atomic.h 261diff -urNp linux-2.6.30.4/arch/arm/include/asm/atomic.h linux-2.6.30.4/arch/arm/include/asm/atomic.h
262--- linux-2.6.29.6/arch/arm/include/asm/atomic.h 2009-07-02 19:41:20.000000000 -0400 262--- linux-2.6.30.4/arch/arm/include/asm/atomic.h 2009-07-24 17:47:51.000000000 -0400
263+++ linux-2.6.29.6/arch/arm/include/asm/atomic.h 2009-07-23 17:34:32.033902767 -0400 263+++ linux-2.6.30.4/arch/arm/include/asm/atomic.h 2009-07-30 09:48:09.876636955 -0400
264@@ -191,6 +191,9 @@ static inline int atomic_add_unless(atom 264@@ -235,6 +235,9 @@ static inline int atomic_add_unless(atom
265 #define atomic_inc(v) (void) atomic_add_return(1, v) 265
266 #define atomic_sub(i, v) (void) atomic_sub_return(i, v) 266 #define atomic_inc(v) atomic_add(1, v)
267 #define atomic_dec(v) (void) atomic_sub_return(1, v) 267 #define atomic_dec(v) atomic_sub(1, v)
268+#define atomic_inc_unchecked(v) (void) atomic_inc(v) 268+#define atomic_inc_unchecked(v) atomic_inc(v)
269+#define atomic_add_unchecked(i, v) (void) atomic_add(i, v) 269+#define atomic_add_unchecked(i, v) atomic_add(i, v)
270+#define atomic_sub_unchecked(i, v) (void) atomic_sub(i, v) 270+#define atomic_sub_unchecked(i, v) atomic_sub(i, v)
271 271
272 #define atomic_inc_and_test(v) (atomic_add_return(1, v) == 0) 272 #define atomic_inc_and_test(v) (atomic_add_return(1, v) == 0)
273 #define atomic_dec_and_test(v) (atomic_sub_return(1, v) == 0) 273 #define atomic_dec_and_test(v) (atomic_sub_return(1, v) == 0)
274diff -urNp linux-2.6.29.6/arch/arm/include/asm/elf.h linux-2.6.29.6/arch/arm/include/asm/elf.h 274diff -urNp linux-2.6.30.4/arch/arm/include/asm/elf.h linux-2.6.30.4/arch/arm/include/asm/elf.h
275--- linux-2.6.29.6/arch/arm/include/asm/elf.h 2009-07-02 19:41:20.000000000 -0400 275--- linux-2.6.30.4/arch/arm/include/asm/elf.h 2009-07-24 17:47:51.000000000 -0400
276+++ linux-2.6.29.6/arch/arm/include/asm/elf.h 2009-07-23 17:34:32.033902767 -0400 276+++ linux-2.6.30.4/arch/arm/include/asm/elf.h 2009-07-30 09:48:09.877630671 -0400
277@@ -100,7 +100,14 @@ extern int arm_elf_read_implies_exec(con 277@@ -103,7 +103,14 @@ extern int arm_elf_read_implies_exec(con
278 the loader. We need to make sure that it is out of the way of the program 278 the loader. We need to make sure that it is out of the way of the program
279 that it will "exec", and that there is sufficient room for the brk. */ 279 that it will "exec", and that there is sufficient room for the brk. */
280 280
@@ -290,32 +290,43 @@ diff -urNp linux-2.6.29.6/arch/arm/include/asm/elf.h linux-2.6.29.6/arch/arm/inc
290 290
291 /* When the program starts, a1 contains a pointer to a function to be 291 /* When the program starts, a1 contains a pointer to a function to be
292 registered with atexit, as per the SVR4 ABI. A value of 0 means we 292 registered with atexit, as per the SVR4 ABI. A value of 0 means we
293diff -urNp linux-2.6.29.6/arch/arm/include/asm/kmap_types.h linux-2.6.29.6/arch/arm/include/asm/kmap_types.h 293diff -urNp linux-2.6.30.4/arch/arm/include/asm/kmap_types.h linux-2.6.30.4/arch/arm/include/asm/kmap_types.h
294--- linux-2.6.29.6/arch/arm/include/asm/kmap_types.h 2009-07-02 19:41:20.000000000 -0400 294--- linux-2.6.30.4/arch/arm/include/asm/kmap_types.h 2009-07-24 17:47:51.000000000 -0400
295+++ linux-2.6.29.6/arch/arm/include/asm/kmap_types.h 2009-07-23 17:34:32.033902767 -0400 295+++ linux-2.6.30.4/arch/arm/include/asm/kmap_types.h 2009-07-30 09:48:09.878525050 -0400
296@@ -18,6 +18,7 @@ enum km_type { 296@@ -19,6 +19,7 @@ enum km_type {
297 KM_IRQ1,
298 KM_SOFTIRQ0, 297 KM_SOFTIRQ0,
299 KM_SOFTIRQ1, 298 KM_SOFTIRQ1,
299 KM_L2_CACHE,
300+ KM_CLEARPAGE, 300+ KM_CLEARPAGE,
301 KM_TYPE_NR 301 KM_TYPE_NR
302 }; 302 };
303 303
304diff -urNp linux-2.6.29.6/arch/arm/include/asm/uaccess.h linux-2.6.29.6/arch/arm/include/asm/uaccess.h 304diff -urNp linux-2.6.30.4/arch/arm/include/asm/uaccess.h linux-2.6.30.4/arch/arm/include/asm/uaccess.h
305--- linux-2.6.29.6/arch/arm/include/asm/uaccess.h 2009-07-02 19:41:20.000000000 -0400 305--- linux-2.6.30.4/arch/arm/include/asm/uaccess.h 2009-07-24 17:47:51.000000000 -0400
306+++ linux-2.6.29.6/arch/arm/include/asm/uaccess.h 2009-07-23 17:34:32.033902767 -0400 306+++ linux-2.6.30.4/arch/arm/include/asm/uaccess.h 2009-07-30 09:48:09.878525050 -0400
307@@ -400,7 +400,7 @@ static inline unsigned long __must_check 307@@ -398,6 +398,9 @@ extern unsigned long __must_check __strn
308
309 static inline unsigned long __must_check copy_from_user(void *to, const void __user *from, unsigned long n)
308 { 310 {
311+ if ((long)n < 0)
312+ return n;
313+
309 if (access_ok(VERIFY_READ, from, n)) 314 if (access_ok(VERIFY_READ, from, n))
310 n = __copy_from_user(to, from, n); 315 n = __copy_from_user(to, from, n);
311- else /* security hole - plug it */ 316 else /* security hole - plug it */
312+ else if ((long)n > 0) /* security hole - plug it -- good idea! */ 317@@ -407,6 +410,9 @@ static inline unsigned long __must_check
313 memset(to, 0, n); 318
319 static inline unsigned long __must_check copy_to_user(void __user *to, const void *from, unsigned long n)
320 {
321+ if ((long)n < 0)
322+ return n;
323+
324 if (access_ok(VERIFY_WRITE, to, n))
325 n = __copy_to_user(to, from, n);
314 return n; 326 return n;
315 } 327diff -urNp linux-2.6.30.4/arch/arm/mach-ns9xxx/clock.c linux-2.6.30.4/arch/arm/mach-ns9xxx/clock.c
316diff -urNp linux-2.6.29.6/arch/arm/mach-ns9xxx/clock.c linux-2.6.29.6/arch/arm/mach-ns9xxx/clock.c 328--- linux-2.6.30.4/arch/arm/mach-ns9xxx/clock.c 2009-07-24 17:47:51.000000000 -0400
317--- linux-2.6.29.6/arch/arm/mach-ns9xxx/clock.c 2009-07-02 19:41:20.000000000 -0400 329+++ linux-2.6.30.4/arch/arm/mach-ns9xxx/clock.c 2009-07-30 09:48:09.879705308 -0400
318+++ linux-2.6.29.6/arch/arm/mach-ns9xxx/clock.c 2009-07-23 18:40:27.482433806 -0400
319@@ -195,7 +195,7 @@ static int clk_debugfs_open(struct inode 330@@ -195,7 +195,7 @@ static int clk_debugfs_open(struct inode
320 return single_open(file, clk_debugfs_show, NULL); 331 return single_open(file, clk_debugfs_show, NULL);
321 } 332 }
@@ -325,9 +336,9 @@ diff -urNp linux-2.6.29.6/arch/arm/mach-ns9xxx/clock.c linux-2.6.29.6/arch/arm/m
325 .open = clk_debugfs_open, 336 .open = clk_debugfs_open,
326 .read = seq_read, 337 .read = seq_read,
327 .llseek = seq_lseek, 338 .llseek = seq_lseek,
328diff -urNp linux-2.6.29.6/arch/arm/mm/mmap.c linux-2.6.29.6/arch/arm/mm/mmap.c 339diff -urNp linux-2.6.30.4/arch/arm/mm/mmap.c linux-2.6.30.4/arch/arm/mm/mmap.c
329--- linux-2.6.29.6/arch/arm/mm/mmap.c 2009-07-02 19:41:20.000000000 -0400 340--- linux-2.6.30.4/arch/arm/mm/mmap.c 2009-07-24 17:47:51.000000000 -0400
330+++ linux-2.6.29.6/arch/arm/mm/mmap.c 2009-07-23 17:34:32.033902767 -0400 341+++ linux-2.6.30.4/arch/arm/mm/mmap.c 2009-07-30 09:48:09.881684524 -0400
331@@ -62,6 +62,10 @@ arch_get_unmapped_area(struct file *filp 342@@ -62,6 +62,10 @@ arch_get_unmapped_area(struct file *filp
332 if (len > TASK_SIZE) 343 if (len > TASK_SIZE)
333 return -ENOMEM; 344 return -ENOMEM;
@@ -364,9 +375,9 @@ diff -urNp linux-2.6.29.6/arch/arm/mm/mmap.c linux-2.6.29.6/arch/arm/mm/mmap.c
364 mm->cached_hole_size = 0; 375 mm->cached_hole_size = 0;
365 goto full_search; 376 goto full_search;
366 } 377 }
367diff -urNp linux-2.6.29.6/arch/avr32/include/asm/atomic.h linux-2.6.29.6/arch/avr32/include/asm/atomic.h 378diff -urNp linux-2.6.30.4/arch/avr32/include/asm/atomic.h linux-2.6.30.4/arch/avr32/include/asm/atomic.h
368--- linux-2.6.29.6/arch/avr32/include/asm/atomic.h 2009-07-02 19:41:20.000000000 -0400 379--- linux-2.6.30.4/arch/avr32/include/asm/atomic.h 2009-07-24 17:47:51.000000000 -0400
369+++ linux-2.6.29.6/arch/avr32/include/asm/atomic.h 2009-07-23 17:34:32.034839933 -0400 380+++ linux-2.6.30.4/arch/avr32/include/asm/atomic.h 2009-07-30 09:48:09.881684524 -0400
370@@ -176,9 +176,12 @@ static inline int atomic_sub_if_positive 381@@ -176,9 +176,12 @@ static inline int atomic_sub_if_positive
371 #define atomic_cmpxchg(v, o, n) (cmpxchg(&((v)->counter), (o), (n))) 382 #define atomic_cmpxchg(v, o, n) (cmpxchg(&((v)->counter), (o), (n)))
372 383
@@ -380,9 +391,9 @@ diff -urNp linux-2.6.29.6/arch/avr32/include/asm/atomic.h linux-2.6.29.6/arch/av
380 391
381 #define atomic_dec_return(v) atomic_sub_return(1, v) 392 #define atomic_dec_return(v) atomic_sub_return(1, v)
382 #define atomic_inc_return(v) atomic_add_return(1, v) 393 #define atomic_inc_return(v) atomic_add_return(1, v)
383diff -urNp linux-2.6.29.6/arch/avr32/include/asm/elf.h linux-2.6.29.6/arch/avr32/include/asm/elf.h 394diff -urNp linux-2.6.30.4/arch/avr32/include/asm/elf.h linux-2.6.30.4/arch/avr32/include/asm/elf.h
384--- linux-2.6.29.6/arch/avr32/include/asm/elf.h 2009-07-02 19:41:20.000000000 -0400 395--- linux-2.6.30.4/arch/avr32/include/asm/elf.h 2009-07-24 17:47:51.000000000 -0400
385+++ linux-2.6.29.6/arch/avr32/include/asm/elf.h 2009-07-23 17:34:32.034839933 -0400 396+++ linux-2.6.30.4/arch/avr32/include/asm/elf.h 2009-07-30 09:48:09.881684524 -0400
386@@ -85,8 +85,14 @@ typedef struct user_fpu_struct elf_fpreg 397@@ -85,8 +85,14 @@ typedef struct user_fpu_struct elf_fpreg
387 the loader. We need to make sure that it is out of the way of the program 398 the loader. We need to make sure that it is out of the way of the program
388 that it will "exec", and that there is sufficient room for the brk. */ 399 that it will "exec", and that there is sufficient room for the brk. */
@@ -399,9 +410,9 @@ diff -urNp linux-2.6.29.6/arch/avr32/include/asm/elf.h linux-2.6.29.6/arch/avr32
399 410
400 /* This yields a mask that user programs can use to figure out what 411 /* This yields a mask that user programs can use to figure out what
401 instruction set this CPU supports. This could be done in user space, 412 instruction set this CPU supports. This could be done in user space,
402diff -urNp linux-2.6.29.6/arch/avr32/include/asm/kmap_types.h linux-2.6.29.6/arch/avr32/include/asm/kmap_types.h 413diff -urNp linux-2.6.30.4/arch/avr32/include/asm/kmap_types.h linux-2.6.30.4/arch/avr32/include/asm/kmap_types.h
403--- linux-2.6.29.6/arch/avr32/include/asm/kmap_types.h 2009-07-02 19:41:20.000000000 -0400 414--- linux-2.6.30.4/arch/avr32/include/asm/kmap_types.h 2009-07-24 17:47:51.000000000 -0400
404+++ linux-2.6.29.6/arch/avr32/include/asm/kmap_types.h 2009-07-23 17:34:32.034839933 -0400 415+++ linux-2.6.30.4/arch/avr32/include/asm/kmap_types.h 2009-07-30 09:48:09.882650296 -0400
405@@ -22,7 +22,8 @@ D(10) KM_IRQ0, 416@@ -22,7 +22,8 @@ D(10) KM_IRQ0,
406 D(11) KM_IRQ1, 417 D(11) KM_IRQ1,
407 D(12) KM_SOFTIRQ0, 418 D(12) KM_SOFTIRQ0,
@@ -412,9 +423,9 @@ diff -urNp linux-2.6.29.6/arch/avr32/include/asm/kmap_types.h linux-2.6.29.6/arc
412 }; 423 };
413 424
414 #undef D 425 #undef D
415diff -urNp linux-2.6.29.6/arch/avr32/mm/fault.c linux-2.6.29.6/arch/avr32/mm/fault.c 426diff -urNp linux-2.6.30.4/arch/avr32/mm/fault.c linux-2.6.30.4/arch/avr32/mm/fault.c
416--- linux-2.6.29.6/arch/avr32/mm/fault.c 2009-07-02 19:41:20.000000000 -0400 427--- linux-2.6.30.4/arch/avr32/mm/fault.c 2009-07-24 17:47:51.000000000 -0400
417+++ linux-2.6.29.6/arch/avr32/mm/fault.c 2009-07-23 17:34:32.035832174 -0400 428+++ linux-2.6.30.4/arch/avr32/mm/fault.c 2009-07-30 09:48:09.882650296 -0400
418@@ -41,6 +41,23 @@ static inline int notify_page_fault(stru 429@@ -41,6 +41,23 @@ static inline int notify_page_fault(stru
419 430
420 int exception_trace = 1; 431 int exception_trace = 1;
@@ -456,9 +467,9 @@ diff -urNp linux-2.6.29.6/arch/avr32/mm/fault.c linux-2.6.29.6/arch/avr32/mm/fau
456 if (exception_trace && printk_ratelimit()) 467 if (exception_trace && printk_ratelimit())
457 printk("%s%s[%d]: segfault at %08lx pc %08lx " 468 printk("%s%s[%d]: segfault at %08lx pc %08lx "
458 "sp %08lx ecr %lu\n", 469 "sp %08lx ecr %lu\n",
459diff -urNp linux-2.6.29.6/arch/blackfin/include/asm/atomic.h linux-2.6.29.6/arch/blackfin/include/asm/atomic.h 470diff -urNp linux-2.6.30.4/arch/blackfin/include/asm/atomic.h linux-2.6.30.4/arch/blackfin/include/asm/atomic.h
460--- linux-2.6.29.6/arch/blackfin/include/asm/atomic.h 2009-07-02 19:41:20.000000000 -0400 471--- linux-2.6.30.4/arch/blackfin/include/asm/atomic.h 2009-07-24 17:47:51.000000000 -0400
461+++ linux-2.6.29.6/arch/blackfin/include/asm/atomic.h 2009-07-23 17:34:32.036919850 -0400 472+++ linux-2.6.30.4/arch/blackfin/include/asm/atomic.h 2009-07-30 09:48:09.882650296 -0400
462@@ -178,6 +178,9 @@ static inline void atomic_set_mask(unsig 473@@ -178,6 +178,9 @@ static inline void atomic_set_mask(unsig
463 474
464 #endif /* !CONFIG_SMP */ 475 #endif /* !CONFIG_SMP */
@@ -469,9 +480,9 @@ diff -urNp linux-2.6.29.6/arch/blackfin/include/asm/atomic.h linux-2.6.29.6/arch
469 #define atomic_add_negative(a, v) (atomic_add_return((a), (v)) < 0) 480 #define atomic_add_negative(a, v) (atomic_add_return((a), (v)) < 0)
470 #define atomic_dec_return(v) atomic_sub_return(1,(v)) 481 #define atomic_dec_return(v) atomic_sub_return(1,(v))
471 #define atomic_inc_return(v) atomic_add_return(1,(v)) 482 #define atomic_inc_return(v) atomic_add_return(1,(v))
472diff -urNp linux-2.6.29.6/arch/blackfin/include/asm/kmap_types.h linux-2.6.29.6/arch/blackfin/include/asm/kmap_types.h 483diff -urNp linux-2.6.30.4/arch/blackfin/include/asm/kmap_types.h linux-2.6.30.4/arch/blackfin/include/asm/kmap_types.h
473--- linux-2.6.29.6/arch/blackfin/include/asm/kmap_types.h 2009-07-02 19:41:20.000000000 -0400 484--- linux-2.6.30.4/arch/blackfin/include/asm/kmap_types.h 2009-07-24 17:47:51.000000000 -0400
474+++ linux-2.6.29.6/arch/blackfin/include/asm/kmap_types.h 2009-07-23 17:34:32.036919850 -0400 485+++ linux-2.6.30.4/arch/blackfin/include/asm/kmap_types.h 2009-07-30 09:48:09.883618875 -0400
475@@ -15,6 +15,7 @@ enum km_type { 486@@ -15,6 +15,7 @@ enum km_type {
476 KM_IRQ1, 487 KM_IRQ1,
477 KM_SOFTIRQ0, 488 KM_SOFTIRQ0,
@@ -480,9 +491,9 @@ diff -urNp linux-2.6.29.6/arch/blackfin/include/asm/kmap_types.h linux-2.6.29.6/
480 KM_TYPE_NR 491 KM_TYPE_NR
481 }; 492 };
482 493
483diff -urNp linux-2.6.29.6/arch/blackfin/mach-bf561/coreb.c linux-2.6.29.6/arch/blackfin/mach-bf561/coreb.c 494diff -urNp linux-2.6.30.4/arch/blackfin/mach-bf561/coreb.c linux-2.6.30.4/arch/blackfin/mach-bf561/coreb.c
484--- linux-2.6.29.6/arch/blackfin/mach-bf561/coreb.c 2009-07-02 19:41:20.000000000 -0400 495--- linux-2.6.30.4/arch/blackfin/mach-bf561/coreb.c 2009-07-24 17:47:51.000000000 -0400
485+++ linux-2.6.29.6/arch/blackfin/mach-bf561/coreb.c 2009-07-23 18:40:27.483411300 -0400 496+++ linux-2.6.30.4/arch/blackfin/mach-bf561/coreb.c 2009-07-30 09:48:09.883618875 -0400
486@@ -292,7 +292,7 @@ static int coreb_ioctl(struct inode *ino 497@@ -292,7 +292,7 @@ static int coreb_ioctl(struct inode *ino
487 return retval; 498 return retval;
488 } 499 }
@@ -492,9 +503,9 @@ diff -urNp linux-2.6.29.6/arch/blackfin/mach-bf561/coreb.c linux-2.6.29.6/arch/b
492 .owner = THIS_MODULE, 503 .owner = THIS_MODULE,
493 .llseek = coreb_lseek, 504 .llseek = coreb_lseek,
494 .read = coreb_read, 505 .read = coreb_read,
495diff -urNp linux-2.6.29.6/arch/cris/arch-v10/drivers/sync_serial.c linux-2.6.29.6/arch/cris/arch-v10/drivers/sync_serial.c 506diff -urNp linux-2.6.30.4/arch/cris/arch-v10/drivers/sync_serial.c linux-2.6.30.4/arch/cris/arch-v10/drivers/sync_serial.c
496--- linux-2.6.29.6/arch/cris/arch-v10/drivers/sync_serial.c 2009-07-02 19:41:20.000000000 -0400 507--- linux-2.6.30.4/arch/cris/arch-v10/drivers/sync_serial.c 2009-07-24 17:47:51.000000000 -0400
497+++ linux-2.6.29.6/arch/cris/arch-v10/drivers/sync_serial.c 2009-07-23 18:40:27.483411300 -0400 508+++ linux-2.6.30.4/arch/cris/arch-v10/drivers/sync_serial.c 2009-07-30 09:48:09.883618875 -0400
498@@ -244,7 +244,7 @@ static unsigned sync_serial_prescale_sha 509@@ -244,7 +244,7 @@ static unsigned sync_serial_prescale_sha
499 510
500 #define NUMBER_OF_PORTS 2 511 #define NUMBER_OF_PORTS 2
@@ -504,9 +515,9 @@ diff -urNp linux-2.6.29.6/arch/cris/arch-v10/drivers/sync_serial.c linux-2.6.29.
504 .owner = THIS_MODULE, 515 .owner = THIS_MODULE,
505 .write = sync_serial_write, 516 .write = sync_serial_write,
506 .read = sync_serial_read, 517 .read = sync_serial_read,
507diff -urNp linux-2.6.29.6/arch/cris/arch-v32/drivers/mach-fs/gpio.c linux-2.6.29.6/arch/cris/arch-v32/drivers/mach-fs/gpio.c 518diff -urNp linux-2.6.30.4/arch/cris/arch-v32/drivers/mach-fs/gpio.c linux-2.6.30.4/arch/cris/arch-v32/drivers/mach-fs/gpio.c
508--- linux-2.6.29.6/arch/cris/arch-v32/drivers/mach-fs/gpio.c 2009-07-02 19:41:20.000000000 -0400 519--- linux-2.6.30.4/arch/cris/arch-v32/drivers/mach-fs/gpio.c 2009-07-24 17:47:51.000000000 -0400
509+++ linux-2.6.29.6/arch/cris/arch-v32/drivers/mach-fs/gpio.c 2009-07-23 18:40:27.484276735 -0400 520+++ linux-2.6.30.4/arch/cris/arch-v32/drivers/mach-fs/gpio.c 2009-07-30 12:06:52.081911892 -0400
510@@ -855,7 +855,7 @@ gpio_leds_ioctl(unsigned int cmd, unsign 521@@ -855,7 +855,7 @@ gpio_leds_ioctl(unsigned int cmd, unsign
511 return 0; 522 return 0;
512 } 523 }
@@ -516,9 +527,9 @@ diff -urNp linux-2.6.29.6/arch/cris/arch-v32/drivers/mach-fs/gpio.c linux-2.6.29
516 .owner = THIS_MODULE, 527 .owner = THIS_MODULE,
517 .poll = gpio_poll, 528 .poll = gpio_poll,
518 .ioctl = gpio_ioctl, 529 .ioctl = gpio_ioctl,
519diff -urNp linux-2.6.29.6/arch/cris/include/asm/atomic.h linux-2.6.29.6/arch/cris/include/asm/atomic.h 530diff -urNp linux-2.6.30.4/arch/cris/include/asm/atomic.h linux-2.6.30.4/arch/cris/include/asm/atomic.h
520--- linux-2.6.29.6/arch/cris/include/asm/atomic.h 2009-07-02 19:41:20.000000000 -0400 531--- linux-2.6.30.4/arch/cris/include/asm/atomic.h 2009-07-24 17:47:51.000000000 -0400
521+++ linux-2.6.29.6/arch/cris/include/asm/atomic.h 2009-07-23 17:34:32.036919850 -0400 532+++ linux-2.6.30.4/arch/cris/include/asm/atomic.h 2009-07-30 09:48:09.884412595 -0400
522@@ -152,6 +152,10 @@ static inline int atomic_add_unless(atom 533@@ -152,6 +152,10 @@ static inline int atomic_add_unless(atom
523 } 534 }
524 #define atomic_inc_not_zero(v) atomic_add_unless((v), 1, 0) 535 #define atomic_inc_not_zero(v) atomic_add_unless((v), 1, 0)
@@ -530,9 +541,9 @@ diff -urNp linux-2.6.29.6/arch/cris/include/asm/atomic.h linux-2.6.29.6/arch/cri
530 /* Atomic operations are already serializing */ 541 /* Atomic operations are already serializing */
531 #define smp_mb__before_atomic_dec() barrier() 542 #define smp_mb__before_atomic_dec() barrier()
532 #define smp_mb__after_atomic_dec() barrier() 543 #define smp_mb__after_atomic_dec() barrier()
533diff -urNp linux-2.6.29.6/arch/cris/include/asm/kmap_types.h linux-2.6.29.6/arch/cris/include/asm/kmap_types.h 544diff -urNp linux-2.6.30.4/arch/cris/include/asm/kmap_types.h linux-2.6.30.4/arch/cris/include/asm/kmap_types.h
534--- linux-2.6.29.6/arch/cris/include/asm/kmap_types.h 2009-07-02 19:41:20.000000000 -0400 545--- linux-2.6.30.4/arch/cris/include/asm/kmap_types.h 2009-07-24 17:47:51.000000000 -0400
535+++ linux-2.6.29.6/arch/cris/include/asm/kmap_types.h 2009-07-23 17:34:32.036919850 -0400 546+++ linux-2.6.30.4/arch/cris/include/asm/kmap_types.h 2009-07-30 09:48:09.884412595 -0400
536@@ -19,6 +19,7 @@ enum km_type { 547@@ -19,6 +19,7 @@ enum km_type {
537 KM_IRQ1, 548 KM_IRQ1,
538 KM_SOFTIRQ0, 549 KM_SOFTIRQ0,
@@ -541,9 +552,34 @@ diff -urNp linux-2.6.29.6/arch/cris/include/asm/kmap_types.h linux-2.6.29.6/arch
541 KM_TYPE_NR 552 KM_TYPE_NR
542 }; 553 };
543 554
544diff -urNp linux-2.6.29.6/arch/h8300/include/asm/atomic.h linux-2.6.29.6/arch/h8300/include/asm/atomic.h 555diff -urNp linux-2.6.30.4/arch/frv/include/asm/atomic.h linux-2.6.30.4/arch/frv/include/asm/atomic.h
545--- linux-2.6.29.6/arch/h8300/include/asm/atomic.h 2009-07-02 19:41:20.000000000 -0400 556--- linux-2.6.30.4/arch/frv/include/asm/atomic.h 2009-07-24 17:47:51.000000000 -0400
546+++ linux-2.6.29.6/arch/h8300/include/asm/atomic.h 2009-07-23 17:34:32.036919850 -0400 557+++ linux-2.6.30.4/arch/frv/include/asm/atomic.h 2009-07-30 09:48:09.885412202 -0400
558@@ -114,6 +114,10 @@ static inline void atomic_dec(atomic_t *
559 atomic_sub_return(1, v);
560 }
561
562+#define atomic_inc_unchecked(v) atomic_inc(v)
563+#define atomic_add_unchecked(i,v) atomic_add((i),(v))
564+#define atomic_sub_unchecked(i,v) atomic_sub((i),(v))
565+
566 #define atomic_dec_return(v) atomic_sub_return(1, (v))
567 #define atomic_inc_return(v) atomic_add_return(1, (v))
568
569diff -urNp linux-2.6.30.4/arch/frv/include/asm/kmap_types.h linux-2.6.30.4/arch/frv/include/asm/kmap_types.h
570--- linux-2.6.30.4/arch/frv/include/asm/kmap_types.h 2009-07-24 17:47:51.000000000 -0400
571+++ linux-2.6.30.4/arch/frv/include/asm/kmap_types.h 2009-07-30 09:48:09.885412202 -0400
572@@ -23,6 +23,7 @@ enum km_type {
573 KM_IRQ1,
574 KM_SOFTIRQ0,
575 KM_SOFTIRQ1,
576+ KM_CLEARPAGE,
577 KM_TYPE_NR
578 };
579
580diff -urNp linux-2.6.30.4/arch/h8300/include/asm/atomic.h linux-2.6.30.4/arch/h8300/include/asm/atomic.h
581--- linux-2.6.30.4/arch/h8300/include/asm/atomic.h 2009-07-24 17:47:51.000000000 -0400
582+++ linux-2.6.30.4/arch/h8300/include/asm/atomic.h 2009-07-30 09:48:09.885412202 -0400
547@@ -26,6 +26,7 @@ static __inline__ int atomic_add_return( 583@@ -26,6 +26,7 @@ static __inline__ int atomic_add_return(
548 } 584 }
549 585
@@ -568,9 +604,9 @@ diff -urNp linux-2.6.29.6/arch/h8300/include/asm/atomic.h linux-2.6.29.6/arch/h8
568 604
569 /* 605 /*
570 * atomic_inc_and_test - increment and test 606 * atomic_inc_and_test - increment and test
571diff -urNp linux-2.6.29.6/arch/h8300/include/asm/kmap_types.h linux-2.6.29.6/arch/h8300/include/asm/kmap_types.h 607diff -urNp linux-2.6.30.4/arch/h8300/include/asm/kmap_types.h linux-2.6.30.4/arch/h8300/include/asm/kmap_types.h
572--- linux-2.6.29.6/arch/h8300/include/asm/kmap_types.h 2009-07-02 19:41:20.000000000 -0400 608--- linux-2.6.30.4/arch/h8300/include/asm/kmap_types.h 2009-07-24 17:47:51.000000000 -0400
573+++ linux-2.6.29.6/arch/h8300/include/asm/kmap_types.h 2009-07-23 17:34:32.036919850 -0400 609+++ linux-2.6.30.4/arch/h8300/include/asm/kmap_types.h 2009-07-30 09:48:09.885412202 -0400
574@@ -15,6 +15,7 @@ enum km_type { 610@@ -15,6 +15,7 @@ enum km_type {
575 KM_IRQ1, 611 KM_IRQ1,
576 KM_SOFTIRQ0, 612 KM_SOFTIRQ0,
@@ -579,9 +615,9 @@ diff -urNp linux-2.6.29.6/arch/h8300/include/asm/kmap_types.h linux-2.6.29.6/arc
579 KM_TYPE_NR 615 KM_TYPE_NR
580 }; 616 };
581 617
582diff -urNp linux-2.6.29.6/arch/ia64/ia32/binfmt_elf32.c linux-2.6.29.6/arch/ia64/ia32/binfmt_elf32.c 618diff -urNp linux-2.6.30.4/arch/ia64/ia32/binfmt_elf32.c linux-2.6.30.4/arch/ia64/ia32/binfmt_elf32.c
583--- linux-2.6.29.6/arch/ia64/ia32/binfmt_elf32.c 2009-07-02 19:41:20.000000000 -0400 619--- linux-2.6.30.4/arch/ia64/ia32/binfmt_elf32.c 2009-07-24 17:47:51.000000000 -0400
584+++ linux-2.6.29.6/arch/ia64/ia32/binfmt_elf32.c 2009-07-23 18:40:27.465457938 -0400 620+++ linux-2.6.30.4/arch/ia64/ia32/binfmt_elf32.c 2009-07-30 09:48:09.886522893 -0400
585@@ -45,6 +45,13 @@ randomize_stack_top(unsigned long stack_ 621@@ -45,6 +45,13 @@ randomize_stack_top(unsigned long stack_
586 622
587 #define elf_read_implies_exec(ex, have_pt_gnu_stack) (!(have_pt_gnu_stack)) 623 #define elf_read_implies_exec(ex, have_pt_gnu_stack) (!(have_pt_gnu_stack))
@@ -610,9 +646,9 @@ diff -urNp linux-2.6.29.6/arch/ia64/ia32/binfmt_elf32.c linux-2.6.29.6/arch/ia64
610 .fault = ia32_install_gate_page 646 .fault = ia32_install_gate_page
611 }; 647 };
612 648
613diff -urNp linux-2.6.29.6/arch/ia64/ia32/ia32priv.h linux-2.6.29.6/arch/ia64/ia32/ia32priv.h 649diff -urNp linux-2.6.30.4/arch/ia64/ia32/ia32priv.h linux-2.6.30.4/arch/ia64/ia32/ia32priv.h
614--- linux-2.6.29.6/arch/ia64/ia32/ia32priv.h 2009-07-02 19:41:20.000000000 -0400 650--- linux-2.6.30.4/arch/ia64/ia32/ia32priv.h 2009-07-24 17:47:51.000000000 -0400
615+++ linux-2.6.29.6/arch/ia64/ia32/ia32priv.h 2009-07-23 17:34:32.037851190 -0400 651+++ linux-2.6.30.4/arch/ia64/ia32/ia32priv.h 2009-07-30 09:48:09.886522893 -0400
616@@ -296,7 +296,14 @@ typedef struct compat_siginfo { 652@@ -296,7 +296,14 @@ typedef struct compat_siginfo {
617 #define ELF_DATA ELFDATA2LSB 653 #define ELF_DATA ELFDATA2LSB
618 #define ELF_ARCH EM_386 654 #define ELF_ARCH EM_386
@@ -629,9 +665,9 @@ diff -urNp linux-2.6.29.6/arch/ia64/ia32/ia32priv.h linux-2.6.29.6/arch/ia64/ia3
629 #define IA32_GATE_OFFSET IA32_PAGE_OFFSET 665 #define IA32_GATE_OFFSET IA32_PAGE_OFFSET
630 #define IA32_GATE_END IA32_PAGE_OFFSET + PAGE_SIZE 666 #define IA32_GATE_END IA32_PAGE_OFFSET + PAGE_SIZE
631 667
632diff -urNp linux-2.6.29.6/arch/ia64/include/asm/atomic.h linux-2.6.29.6/arch/ia64/include/asm/atomic.h 668diff -urNp linux-2.6.30.4/arch/ia64/include/asm/atomic.h linux-2.6.30.4/arch/ia64/include/asm/atomic.h
633--- linux-2.6.29.6/arch/ia64/include/asm/atomic.h 2009-07-02 19:41:20.000000000 -0400 669--- linux-2.6.30.4/arch/ia64/include/asm/atomic.h 2009-07-24 17:47:51.000000000 -0400
634+++ linux-2.6.29.6/arch/ia64/include/asm/atomic.h 2009-07-23 17:34:32.037851190 -0400 670+++ linux-2.6.30.4/arch/ia64/include/asm/atomic.h 2009-07-30 09:48:09.886522893 -0400
635@@ -201,8 +201,11 @@ atomic64_add_negative (__s64 i, atomic64 671@@ -201,8 +201,11 @@ atomic64_add_negative (__s64 i, atomic64
636 #define atomic64_inc_and_test(v) (atomic64_add_return(1, (v)) == 0) 672 #define atomic64_inc_and_test(v) (atomic64_add_return(1, (v)) == 0)
637 673
@@ -644,9 +680,9 @@ diff -urNp linux-2.6.29.6/arch/ia64/include/asm/atomic.h linux-2.6.29.6/arch/ia6
644 #define atomic_dec(v) atomic_sub(1, (v)) 680 #define atomic_dec(v) atomic_sub(1, (v))
645 681
646 #define atomic64_add(i,v) atomic64_add_return((i), (v)) 682 #define atomic64_add(i,v) atomic64_add_return((i), (v))
647diff -urNp linux-2.6.29.6/arch/ia64/include/asm/elf.h linux-2.6.29.6/arch/ia64/include/asm/elf.h 683diff -urNp linux-2.6.30.4/arch/ia64/include/asm/elf.h linux-2.6.30.4/arch/ia64/include/asm/elf.h
648--- linux-2.6.29.6/arch/ia64/include/asm/elf.h 2009-07-02 19:41:20.000000000 -0400 684--- linux-2.6.30.4/arch/ia64/include/asm/elf.h 2009-07-24 17:47:51.000000000 -0400
649+++ linux-2.6.29.6/arch/ia64/include/asm/elf.h 2009-07-23 17:34:32.037851190 -0400 685+++ linux-2.6.30.4/arch/ia64/include/asm/elf.h 2009-07-30 09:48:09.887468908 -0400
650@@ -43,6 +43,13 @@ 686@@ -43,6 +43,13 @@
651 */ 687 */
652 #define ELF_ET_DYN_BASE (TASK_UNMAPPED_BASE + 0x800000000UL) 688 #define ELF_ET_DYN_BASE (TASK_UNMAPPED_BASE + 0x800000000UL)
@@ -661,9 +697,9 @@ diff -urNp linux-2.6.29.6/arch/ia64/include/asm/elf.h linux-2.6.29.6/arch/ia64/i
661 #define PT_IA_64_UNWIND 0x70000001 697 #define PT_IA_64_UNWIND 0x70000001
662 698
663 /* IA-64 relocations: */ 699 /* IA-64 relocations: */
664diff -urNp linux-2.6.29.6/arch/ia64/include/asm/kmap_types.h linux-2.6.29.6/arch/ia64/include/asm/kmap_types.h 700diff -urNp linux-2.6.30.4/arch/ia64/include/asm/kmap_types.h linux-2.6.30.4/arch/ia64/include/asm/kmap_types.h
665--- linux-2.6.29.6/arch/ia64/include/asm/kmap_types.h 2009-07-02 19:41:20.000000000 -0400 701--- linux-2.6.30.4/arch/ia64/include/asm/kmap_types.h 2009-07-24 17:47:51.000000000 -0400
666+++ linux-2.6.29.6/arch/ia64/include/asm/kmap_types.h 2009-07-23 17:34:32.037851190 -0400 702+++ linux-2.6.30.4/arch/ia64/include/asm/kmap_types.h 2009-07-30 09:48:09.887468908 -0400
667@@ -22,7 +22,8 @@ D(9) KM_IRQ0, 703@@ -22,7 +22,8 @@ D(9) KM_IRQ0,
668 D(10) KM_IRQ1, 704 D(10) KM_IRQ1,
669 D(11) KM_SOFTIRQ0, 705 D(11) KM_SOFTIRQ0,
@@ -674,9 +710,9 @@ diff -urNp linux-2.6.29.6/arch/ia64/include/asm/kmap_types.h linux-2.6.29.6/arch
674 }; 710 };
675 711
676 #undef D 712 #undef D
677diff -urNp linux-2.6.29.6/arch/ia64/include/asm/pgtable.h linux-2.6.29.6/arch/ia64/include/asm/pgtable.h 713diff -urNp linux-2.6.30.4/arch/ia64/include/asm/pgtable.h linux-2.6.30.4/arch/ia64/include/asm/pgtable.h
678--- linux-2.6.29.6/arch/ia64/include/asm/pgtable.h 2009-07-02 19:41:20.000000000 -0400 714--- linux-2.6.30.4/arch/ia64/include/asm/pgtable.h 2009-07-24 17:47:51.000000000 -0400
679+++ linux-2.6.29.6/arch/ia64/include/asm/pgtable.h 2009-07-23 17:34:32.037851190 -0400 715+++ linux-2.6.30.4/arch/ia64/include/asm/pgtable.h 2009-07-30 09:48:09.887468908 -0400
680@@ -143,6 +143,17 @@ 716@@ -143,6 +143,17 @@
681 #define PAGE_READONLY __pgprot(__ACCESS_BITS | _PAGE_PL_3 | _PAGE_AR_R) 717 #define PAGE_READONLY __pgprot(__ACCESS_BITS | _PAGE_PL_3 | _PAGE_AR_R)
682 #define PAGE_COPY __pgprot(__ACCESS_BITS | _PAGE_PL_3 | _PAGE_AR_R) 718 #define PAGE_COPY __pgprot(__ACCESS_BITS | _PAGE_PL_3 | _PAGE_AR_R)
@@ -695,9 +731,9 @@ diff -urNp linux-2.6.29.6/arch/ia64/include/asm/pgtable.h linux-2.6.29.6/arch/ia
695 #define PAGE_GATE __pgprot(__ACCESS_BITS | _PAGE_PL_0 | _PAGE_AR_X_RX) 731 #define PAGE_GATE __pgprot(__ACCESS_BITS | _PAGE_PL_0 | _PAGE_AR_X_RX)
696 #define PAGE_KERNEL __pgprot(__DIRTY_BITS | _PAGE_PL_0 | _PAGE_AR_RWX) 732 #define PAGE_KERNEL __pgprot(__DIRTY_BITS | _PAGE_PL_0 | _PAGE_AR_RWX)
697 #define PAGE_KERNELRX __pgprot(__ACCESS_BITS | _PAGE_PL_0 | _PAGE_AR_RX) 733 #define PAGE_KERNELRX __pgprot(__ACCESS_BITS | _PAGE_PL_0 | _PAGE_AR_RX)
698diff -urNp linux-2.6.29.6/arch/ia64/include/asm/uaccess.h linux-2.6.29.6/arch/ia64/include/asm/uaccess.h 734diff -urNp linux-2.6.30.4/arch/ia64/include/asm/uaccess.h linux-2.6.30.4/arch/ia64/include/asm/uaccess.h
699--- linux-2.6.29.6/arch/ia64/include/asm/uaccess.h 2009-07-02 19:41:20.000000000 -0400 735--- linux-2.6.30.4/arch/ia64/include/asm/uaccess.h 2009-07-24 17:47:51.000000000 -0400
700+++ linux-2.6.29.6/arch/ia64/include/asm/uaccess.h 2009-07-23 17:34:32.038733548 -0400 736+++ linux-2.6.30.4/arch/ia64/include/asm/uaccess.h 2009-07-30 11:10:48.660249525 -0400
701@@ -257,7 +257,7 @@ __copy_from_user (void *to, const void _ 737@@ -257,7 +257,7 @@ __copy_from_user (void *to, const void _
702 const void *__cu_from = (from); \ 738 const void *__cu_from = (from); \
703 long __cu_len = (n); \ 739 long __cu_len = (n); \
@@ -716,9 +752,9 @@ diff -urNp linux-2.6.29.6/arch/ia64/include/asm/uaccess.h linux-2.6.29.6/arch/ia
716 __cu_len = __copy_user((__force void __user *) __cu_to, __cu_from, __cu_len); \ 752 __cu_len = __copy_user((__force void __user *) __cu_to, __cu_from, __cu_len); \
717 __cu_len; \ 753 __cu_len; \
718 }) 754 })
719diff -urNp linux-2.6.29.6/arch/ia64/kernel/module.c linux-2.6.29.6/arch/ia64/kernel/module.c 755diff -urNp linux-2.6.30.4/arch/ia64/kernel/module.c linux-2.6.30.4/arch/ia64/kernel/module.c
720--- linux-2.6.29.6/arch/ia64/kernel/module.c 2009-07-02 19:41:20.000000000 -0400 756--- linux-2.6.30.4/arch/ia64/kernel/module.c 2009-07-24 17:47:51.000000000 -0400
721+++ linux-2.6.29.6/arch/ia64/kernel/module.c 2009-07-23 17:34:32.038733548 -0400 757+++ linux-2.6.30.4/arch/ia64/kernel/module.c 2009-07-30 09:48:09.888412729 -0400
722@@ -312,8 +312,7 @@ module_alloc (unsigned long size) 758@@ -312,8 +312,7 @@ module_alloc (unsigned long size)
723 void 759 void
724 module_free (struct module *mod, void *module_region) 760 module_free (struct module *mod, void *module_region)
@@ -729,7 +765,7 @@ diff -urNp linux-2.6.29.6/arch/ia64/kernel/module.c linux-2.6.29.6/arch/ia64/ker
729 unw_remove_unwind_table(mod->arch.init_unw_table); 765 unw_remove_unwind_table(mod->arch.init_unw_table);
730 mod->arch.init_unw_table = NULL; 766 mod->arch.init_unw_table = NULL;
731 } 767 }
732@@ -491,15 +490,39 @@ module_frob_arch_sections (Elf_Ehdr *ehd 768@@ -499,15 +498,39 @@ module_frob_arch_sections (Elf_Ehdr *ehd
733 } 769 }
734 770
735 static inline int 771 static inline int
@@ -771,7 +807,7 @@ diff -urNp linux-2.6.29.6/arch/ia64/kernel/module.c linux-2.6.29.6/arch/ia64/ker
771 } 807 }
772 808
773 static inline int 809 static inline int
774@@ -683,7 +706,14 @@ do_reloc (struct module *mod, uint8_t r_ 810@@ -690,7 +713,14 @@ do_reloc (struct module *mod, uint8_t r_
775 break; 811 break;
776 812
777 case RV_BDREL: 813 case RV_BDREL:
@@ -787,7 +823,7 @@ diff -urNp linux-2.6.29.6/arch/ia64/kernel/module.c linux-2.6.29.6/arch/ia64/ker
787 break; 823 break;
788 824
789 case RV_LTV: 825 case RV_LTV:
790@@ -817,15 +847,15 @@ apply_relocate_add (Elf64_Shdr *sechdrs, 826@@ -824,15 +854,15 @@ apply_relocate_add (Elf64_Shdr *sechdrs,
791 * addresses have been selected... 827 * addresses have been selected...
792 */ 828 */
793 uint64_t gp; 829 uint64_t gp;
@@ -807,21 +843,9 @@ diff -urNp linux-2.6.29.6/arch/ia64/kernel/module.c linux-2.6.29.6/arch/ia64/ker
807 mod->arch.gp = gp; 843 mod->arch.gp = gp;
808 DEBUGP("%s: placing gp at 0x%lx\n", __func__, gp); 844 DEBUGP("%s: placing gp at 0x%lx\n", __func__, gp);
809 } 845 }
810diff -urNp linux-2.6.29.6/arch/ia64/kernel/perfmon.c linux-2.6.29.6/arch/ia64/kernel/perfmon.c 846diff -urNp linux-2.6.30.4/arch/ia64/kernel/sys_ia64.c linux-2.6.30.4/arch/ia64/kernel/sys_ia64.c
811--- linux-2.6.29.6/arch/ia64/kernel/perfmon.c 2009-07-02 19:41:20.000000000 -0400 847--- linux-2.6.30.4/arch/ia64/kernel/sys_ia64.c 2009-07-24 17:47:51.000000000 -0400
812+++ linux-2.6.29.6/arch/ia64/kernel/perfmon.c 2009-07-23 18:40:27.485493611 -0400 848+++ linux-2.6.30.4/arch/ia64/kernel/sys_ia64.c 2009-07-30 09:48:09.888412729 -0400
813@@ -2196,7 +2196,7 @@ pfmfs_delete_dentry(struct dentry *dentr
814 return 1;
815 }
816
817-static struct dentry_operations pfmfs_dentry_operations = {
818+static const struct dentry_operations pfmfs_dentry_operations = {
819 .d_delete = pfmfs_delete_dentry,
820 };
821
822diff -urNp linux-2.6.29.6/arch/ia64/kernel/sys_ia64.c linux-2.6.29.6/arch/ia64/kernel/sys_ia64.c
823--- linux-2.6.29.6/arch/ia64/kernel/sys_ia64.c 2009-07-02 19:41:20.000000000 -0400
824+++ linux-2.6.29.6/arch/ia64/kernel/sys_ia64.c 2009-07-23 17:34:32.038733548 -0400
825@@ -43,6 +43,13 @@ arch_get_unmapped_area (struct file *fil 849@@ -43,6 +43,13 @@ arch_get_unmapped_area (struct file *fil
826 if (REGION_NUMBER(addr) == RGN_HPAGE) 850 if (REGION_NUMBER(addr) == RGN_HPAGE)
827 addr = 0; 851 addr = 0;
@@ -848,9 +872,9 @@ diff -urNp linux-2.6.29.6/arch/ia64/kernel/sys_ia64.c linux-2.6.29.6/arch/ia64/k
848 goto full_search; 872 goto full_search;
849 } 873 }
850 return -ENOMEM; 874 return -ENOMEM;
851diff -urNp linux-2.6.29.6/arch/ia64/mm/fault.c linux-2.6.29.6/arch/ia64/mm/fault.c 875diff -urNp linux-2.6.30.4/arch/ia64/mm/fault.c linux-2.6.30.4/arch/ia64/mm/fault.c
852--- linux-2.6.29.6/arch/ia64/mm/fault.c 2009-07-02 19:41:20.000000000 -0400 876--- linux-2.6.30.4/arch/ia64/mm/fault.c 2009-07-24 17:47:51.000000000 -0400
853+++ linux-2.6.29.6/arch/ia64/mm/fault.c 2009-07-23 17:34:32.038733548 -0400 877+++ linux-2.6.30.4/arch/ia64/mm/fault.c 2009-07-30 09:48:09.889484146 -0400
854@@ -72,6 +72,23 @@ mapped_kernel_page_is_present (unsigned 878@@ -72,6 +72,23 @@ mapped_kernel_page_is_present (unsigned
855 return pte_present(pte); 879 return pte_present(pte);
856 } 880 }
@@ -900,10 +924,10 @@ diff -urNp linux-2.6.29.6/arch/ia64/mm/fault.c linux-2.6.29.6/arch/ia64/mm/fault
900 survive: 924 survive:
901 /* 925 /*
902 * If for any reason at all we couldn't handle the fault, make 926 * If for any reason at all we couldn't handle the fault, make
903diff -urNp linux-2.6.29.6/arch/ia64/mm/init.c linux-2.6.29.6/arch/ia64/mm/init.c 927diff -urNp linux-2.6.30.4/arch/ia64/mm/init.c linux-2.6.30.4/arch/ia64/mm/init.c
904--- linux-2.6.29.6/arch/ia64/mm/init.c 2009-07-02 19:41:20.000000000 -0400 928--- linux-2.6.30.4/arch/ia64/mm/init.c 2009-07-24 17:47:51.000000000 -0400
905+++ linux-2.6.29.6/arch/ia64/mm/init.c 2009-07-23 17:34:32.038733548 -0400 929+++ linux-2.6.30.4/arch/ia64/mm/init.c 2009-07-30 09:48:09.889484146 -0400
906@@ -121,6 +121,19 @@ ia64_init_addr_space (void) 930@@ -122,6 +122,19 @@ ia64_init_addr_space (void)
907 vma->vm_start = current->thread.rbs_bot & PAGE_MASK; 931 vma->vm_start = current->thread.rbs_bot & PAGE_MASK;
908 vma->vm_end = vma->vm_start + PAGE_SIZE; 932 vma->vm_end = vma->vm_start + PAGE_SIZE;
909 vma->vm_flags = VM_DATA_DEFAULT_FLAGS|VM_GROWSUP|VM_ACCOUNT; 933 vma->vm_flags = VM_DATA_DEFAULT_FLAGS|VM_GROWSUP|VM_ACCOUNT;
@@ -923,21 +947,59 @@ diff -urNp linux-2.6.29.6/arch/ia64/mm/init.c linux-2.6.29.6/arch/ia64/mm/init.c
923 vma->vm_page_prot = vm_get_page_prot(vma->vm_flags); 947 vma->vm_page_prot = vm_get_page_prot(vma->vm_flags);
924 down_write(&current->mm->mmap_sem); 948 down_write(&current->mm->mmap_sem);
925 if (insert_vm_struct(current->mm, vma)) { 949 if (insert_vm_struct(current->mm, vma)) {
926diff -urNp linux-2.6.29.6/arch/m32r/lib/usercopy.c linux-2.6.29.6/arch/m32r/lib/usercopy.c 950diff -urNp linux-2.6.30.4/arch/m32r/include/asm/atomic.h linux-2.6.30.4/arch/m32r/include/asm/atomic.h
927--- linux-2.6.29.6/arch/m32r/lib/usercopy.c 2009-07-02 19:41:20.000000000 -0400 951--- linux-2.6.30.4/arch/m32r/include/asm/atomic.h 2009-07-24 17:47:51.000000000 -0400
928+++ linux-2.6.29.6/arch/m32r/lib/usercopy.c 2009-07-23 17:34:32.039725062 -0400 952+++ linux-2.6.30.4/arch/m32r/include/asm/atomic.h 2009-07-30 09:48:09.889484146 -0400
929@@ -26,7 +26,7 @@ __generic_copy_from_user(void *to, const 953@@ -308,6 +308,10 @@ static __inline__ void atomic_set_mask(u
954 local_irq_restore(flags);
955 }
956
957+#define atomic_inc_unchecked(v) atomic_inc(v)
958+#define atomic_add_unchecked(i,v) atomic_add((i),(v))
959+#define atomic_sub_unchecked(i,v) atomic_sub((i),(v))
960+
961 /* Atomic operations are already serializing on m32r */
962 #define smp_mb__before_atomic_dec() barrier()
963 #define smp_mb__after_atomic_dec() barrier()
964diff -urNp linux-2.6.30.4/arch/m32r/include/asm/kmap_types.h linux-2.6.30.4/arch/m32r/include/asm/kmap_types.h
965--- linux-2.6.30.4/arch/m32r/include/asm/kmap_types.h 2009-07-24 17:47:51.000000000 -0400
966+++ linux-2.6.30.4/arch/m32r/include/asm/kmap_types.h 2009-07-30 09:48:09.890443797 -0400
967@@ -21,7 +21,8 @@ D(9) KM_IRQ0,
968 D(10) KM_IRQ1,
969 D(11) KM_SOFTIRQ0,
970 D(12) KM_SOFTIRQ1,
971-D(13) KM_TYPE_NR
972+D(13) KM_CLEARPAGE,
973+D(14) KM_TYPE_NR
974 };
975
976 #undef D
977diff -urNp linux-2.6.30.4/arch/m32r/lib/usercopy.c linux-2.6.30.4/arch/m32r/lib/usercopy.c
978--- linux-2.6.30.4/arch/m32r/lib/usercopy.c 2009-07-24 17:47:51.000000000 -0400
979+++ linux-2.6.30.4/arch/m32r/lib/usercopy.c 2009-07-30 09:48:09.890443797 -0400
980@@ -14,6 +14,9 @@
981 unsigned long
982 __generic_copy_to_user(void __user *to, const void *from, unsigned long n)
983 {
984+ if ((long)n < 0)
985+ return n;
986+
987 prefetch(from);
988 if (access_ok(VERIFY_WRITE, to, n))
989 __copy_user(to,from,n);
990@@ -23,6 +26,9 @@ __generic_copy_to_user(void __user *to,
991 unsigned long
992 __generic_copy_from_user(void *to, const void __user *from, unsigned long n)
993 {
994+ if ((long)n < 0)
995+ return n;
996+
930 prefetchw(to); 997 prefetchw(to);
931 if (access_ok(VERIFY_READ, from, n)) 998 if (access_ok(VERIFY_READ, from, n))
932 __copy_user_zeroing(to,from,n); 999 __copy_user_zeroing(to,from,n);
933- else 1000diff -urNp linux-2.6.30.4/arch/m68k/include/asm/atomic_mm.h linux-2.6.30.4/arch/m68k/include/asm/atomic_mm.h
934+ else if ((long)n > 0) 1001--- linux-2.6.30.4/arch/m68k/include/asm/atomic_mm.h 2009-07-24 17:47:51.000000000 -0400
935 memset(to, 0, n); 1002+++ linux-2.6.30.4/arch/m68k/include/asm/atomic_mm.h 2009-07-30 09:48:09.890443797 -0400
936 return n;
937 }
938diff -urNp linux-2.6.29.6/arch/m68k/include/asm/atomic_mm.h linux-2.6.29.6/arch/m68k/include/asm/atomic_mm.h
939--- linux-2.6.29.6/arch/m68k/include/asm/atomic_mm.h 2009-07-02 19:41:20.000000000 -0400
940+++ linux-2.6.29.6/arch/m68k/include/asm/atomic_mm.h 2009-07-23 17:34:32.039725062 -0400
941@@ -186,6 +186,10 @@ static __inline__ int atomic_add_unless( 1003@@ -186,6 +186,10 @@ static __inline__ int atomic_add_unless(
942 1004
943 #define atomic_inc_not_zero(v) atomic_add_unless((v), 1, 0) 1005 #define atomic_inc_not_zero(v) atomic_add_unless((v), 1, 0)
@@ -949,9 +1011,9 @@ diff -urNp linux-2.6.29.6/arch/m68k/include/asm/atomic_mm.h linux-2.6.29.6/arch/
949 /* Atomic operations are already serializing */ 1011 /* Atomic operations are already serializing */
950 #define smp_mb__before_atomic_dec() barrier() 1012 #define smp_mb__before_atomic_dec() barrier()
951 #define smp_mb__after_atomic_dec() barrier() 1013 #define smp_mb__after_atomic_dec() barrier()
952diff -urNp linux-2.6.29.6/arch/m68k/include/asm/atomic_no.h linux-2.6.29.6/arch/m68k/include/asm/atomic_no.h 1014diff -urNp linux-2.6.30.4/arch/m68k/include/asm/atomic_no.h linux-2.6.30.4/arch/m68k/include/asm/atomic_no.h
953--- linux-2.6.29.6/arch/m68k/include/asm/atomic_no.h 2009-07-02 19:41:20.000000000 -0400 1015--- linux-2.6.30.4/arch/m68k/include/asm/atomic_no.h 2009-07-24 17:47:51.000000000 -0400
954+++ linux-2.6.29.6/arch/m68k/include/asm/atomic_no.h 2009-07-23 17:34:32.039725062 -0400 1016+++ linux-2.6.30.4/arch/m68k/include/asm/atomic_no.h 2009-07-30 09:48:09.890443797 -0400
955@@ -151,5 +151,9 @@ static __inline__ int atomic_add_unless( 1017@@ -151,5 +151,9 @@ static __inline__ int atomic_add_unless(
956 #define atomic_dec_return(v) atomic_sub_return(1,(v)) 1018 #define atomic_dec_return(v) atomic_sub_return(1,(v))
957 #define atomic_inc_return(v) atomic_add_return(1,(v)) 1019 #define atomic_inc_return(v) atomic_add_return(1,(v))
@@ -962,20 +1024,9 @@ diff -urNp linux-2.6.29.6/arch/m68k/include/asm/atomic_no.h linux-2.6.29.6/arch/
962+ 1024+
963 #include <asm-generic/atomic.h> 1025 #include <asm-generic/atomic.h>
964 #endif /* __ARCH_M68KNOMMU_ATOMIC __ */ 1026 #endif /* __ARCH_M68KNOMMU_ATOMIC __ */
965diff -urNp linux-2.6.29.6/arch/m68k/include/asm/kmap_types_mm.h linux-2.6.29.6/arch/m68k/include/asm/kmap_types_mm.h 1027diff -urNp linux-2.6.30.4/arch/m68k/include/asm/kmap_types.h linux-2.6.30.4/arch/m68k/include/asm/kmap_types.h
966--- linux-2.6.29.6/arch/m68k/include/asm/kmap_types_mm.h 2009-07-02 19:41:20.000000000 -0400 1028--- linux-2.6.30.4/arch/m68k/include/asm/kmap_types.h 2009-07-24 17:47:51.000000000 -0400
967+++ linux-2.6.29.6/arch/m68k/include/asm/kmap_types_mm.h 2009-07-23 17:34:32.039725062 -0400 1029+++ linux-2.6.30.4/arch/m68k/include/asm/kmap_types.h 2009-07-30 09:48:09.891413194 -0400
968@@ -15,6 +15,7 @@ enum km_type {
969 KM_IRQ1,
970 KM_SOFTIRQ0,
971 KM_SOFTIRQ1,
972+ KM_CLEARPAGE,
973 KM_TYPE_NR
974 };
975
976diff -urNp linux-2.6.29.6/arch/m68k/include/asm/kmap_types_no.h linux-2.6.29.6/arch/m68k/include/asm/kmap_types_no.h
977--- linux-2.6.29.6/arch/m68k/include/asm/kmap_types_no.h 2009-07-02 19:41:20.000000000 -0400
978+++ linux-2.6.29.6/arch/m68k/include/asm/kmap_types_no.h 2009-07-23 17:34:32.039725062 -0400
979@@ -15,6 +15,7 @@ enum km_type { 1030@@ -15,6 +15,7 @@ enum km_type {
980 KM_IRQ1, 1031 KM_IRQ1,
981 KM_SOFTIRQ0, 1032 KM_SOFTIRQ0,
@@ -984,9 +1035,9 @@ diff -urNp linux-2.6.29.6/arch/m68k/include/asm/kmap_types_no.h linux-2.6.29.6/a
984 KM_TYPE_NR 1035 KM_TYPE_NR
985 }; 1036 };
986 1037
987diff -urNp linux-2.6.29.6/arch/mips/include/asm/atomic.h linux-2.6.29.6/arch/mips/include/asm/atomic.h 1038diff -urNp linux-2.6.30.4/arch/mips/include/asm/atomic.h linux-2.6.30.4/arch/mips/include/asm/atomic.h
988--- linux-2.6.29.6/arch/mips/include/asm/atomic.h 2009-07-02 19:41:20.000000000 -0400 1039--- linux-2.6.30.4/arch/mips/include/asm/atomic.h 2009-07-24 17:47:51.000000000 -0400
989+++ linux-2.6.29.6/arch/mips/include/asm/atomic.h 2009-07-23 17:34:32.039725062 -0400 1040+++ linux-2.6.30.4/arch/mips/include/asm/atomic.h 2009-07-30 09:48:09.891413194 -0400
990@@ -381,6 +381,9 @@ static __inline__ int atomic_add_unless( 1041@@ -381,6 +381,9 @@ static __inline__ int atomic_add_unless(
991 * Atomically increments @v by 1. 1042 * Atomically increments @v by 1.
992 */ 1043 */
@@ -997,9 +1048,9 @@ diff -urNp linux-2.6.29.6/arch/mips/include/asm/atomic.h linux-2.6.29.6/arch/mip
997 1048
998 /* 1049 /*
999 * atomic_dec - decrement and test 1050 * atomic_dec - decrement and test
1000diff -urNp linux-2.6.29.6/arch/mips/include/asm/elf.h linux-2.6.29.6/arch/mips/include/asm/elf.h 1051diff -urNp linux-2.6.30.4/arch/mips/include/asm/elf.h linux-2.6.30.4/arch/mips/include/asm/elf.h
1001--- linux-2.6.29.6/arch/mips/include/asm/elf.h 2009-07-02 19:41:20.000000000 -0400 1052--- linux-2.6.30.4/arch/mips/include/asm/elf.h 2009-07-24 17:47:51.000000000 -0400
1002+++ linux-2.6.29.6/arch/mips/include/asm/elf.h 2009-07-23 17:34:32.039725062 -0400 1053+++ linux-2.6.30.4/arch/mips/include/asm/elf.h 2009-07-30 09:48:09.891413194 -0400
1003@@ -364,4 +364,11 @@ extern int dump_task_fpu(struct task_str 1054@@ -364,4 +364,11 @@ extern int dump_task_fpu(struct task_str
1004 #define ELF_ET_DYN_BASE (TASK_SIZE / 3 * 2) 1055 #define ELF_ET_DYN_BASE (TASK_SIZE / 3 * 2)
1005 #endif 1056 #endif
@@ -1012,9 +1063,9 @@ diff -urNp linux-2.6.29.6/arch/mips/include/asm/elf.h linux-2.6.29.6/arch/mips/i
1012+#endif 1063+#endif
1013+ 1064+
1014 #endif /* _ASM_ELF_H */ 1065 #endif /* _ASM_ELF_H */
1015diff -urNp linux-2.6.29.6/arch/mips/include/asm/kmap_types.h linux-2.6.29.6/arch/mips/include/asm/kmap_types.h 1066diff -urNp linux-2.6.30.4/arch/mips/include/asm/kmap_types.h linux-2.6.30.4/arch/mips/include/asm/kmap_types.h
1016--- linux-2.6.29.6/arch/mips/include/asm/kmap_types.h 2009-07-02 19:41:20.000000000 -0400 1067--- linux-2.6.30.4/arch/mips/include/asm/kmap_types.h 2009-07-24 17:47:51.000000000 -0400
1017+++ linux-2.6.29.6/arch/mips/include/asm/kmap_types.h 2009-07-23 17:34:32.040769533 -0400 1068+++ linux-2.6.30.4/arch/mips/include/asm/kmap_types.h 2009-07-30 09:48:09.892412592 -0400
1018@@ -22,7 +22,8 @@ D(9) KM_IRQ0, 1069@@ -22,7 +22,8 @@ D(9) KM_IRQ0,
1019 D(10) KM_IRQ1, 1070 D(10) KM_IRQ1,
1020 D(11) KM_SOFTIRQ0, 1071 D(11) KM_SOFTIRQ0,
@@ -1025,10 +1076,10 @@ diff -urNp linux-2.6.29.6/arch/mips/include/asm/kmap_types.h linux-2.6.29.6/arch
1025 }; 1076 };
1026 1077
1027 #undef D 1078 #undef D
1028diff -urNp linux-2.6.29.6/arch/mips/include/asm/page.h linux-2.6.29.6/arch/mips/include/asm/page.h 1079diff -urNp linux-2.6.30.4/arch/mips/include/asm/page.h linux-2.6.30.4/arch/mips/include/asm/page.h
1029--- linux-2.6.29.6/arch/mips/include/asm/page.h 2009-07-02 19:41:20.000000000 -0400 1080--- linux-2.6.30.4/arch/mips/include/asm/page.h 2009-07-24 17:47:51.000000000 -0400
1030+++ linux-2.6.29.6/arch/mips/include/asm/page.h 2009-07-23 17:34:32.040769533 -0400 1081+++ linux-2.6.30.4/arch/mips/include/asm/page.h 2009-07-30 09:48:09.892412592 -0400
1031@@ -82,7 +82,7 @@ extern void copy_user_highpage(struct pa 1082@@ -85,7 +85,7 @@ extern void copy_user_highpage(struct pa
1032 #ifdef CONFIG_CPU_MIPS32 1083 #ifdef CONFIG_CPU_MIPS32
1033 typedef struct { unsigned long pte_low, pte_high; } pte_t; 1084 typedef struct { unsigned long pte_low, pte_high; } pte_t;
1034 #define pte_val(x) ((x).pte_low | ((unsigned long long)(x).pte_high << 32)) 1085 #define pte_val(x) ((x).pte_low | ((unsigned long long)(x).pte_high << 32))
@@ -1037,9 +1088,9 @@ diff -urNp linux-2.6.29.6/arch/mips/include/asm/page.h linux-2.6.29.6/arch/mips/
1037 #else 1088 #else
1038 typedef struct { unsigned long long pte; } pte_t; 1089 typedef struct { unsigned long long pte; } pte_t;
1039 #define pte_val(x) ((x).pte) 1090 #define pte_val(x) ((x).pte)
1040diff -urNp linux-2.6.29.6/arch/mips/include/asm/system.h linux-2.6.29.6/arch/mips/include/asm/system.h 1091diff -urNp linux-2.6.30.4/arch/mips/include/asm/system.h linux-2.6.30.4/arch/mips/include/asm/system.h
1041--- linux-2.6.29.6/arch/mips/include/asm/system.h 2009-07-02 19:41:20.000000000 -0400 1092--- linux-2.6.30.4/arch/mips/include/asm/system.h 2009-07-24 17:47:51.000000000 -0400
1042+++ linux-2.6.29.6/arch/mips/include/asm/system.h 2009-07-23 17:34:32.040769533 -0400 1093+++ linux-2.6.30.4/arch/mips/include/asm/system.h 2009-07-30 09:48:09.892412592 -0400
1043@@ -217,6 +217,6 @@ extern void per_cpu_trap_init(void); 1094@@ -217,6 +217,6 @@ extern void per_cpu_trap_init(void);
1044 */ 1095 */
1045 #define __ARCH_WANT_UNLOCKED_CTXSW 1096 #define __ARCH_WANT_UNLOCKED_CTXSW
@@ -1048,9 +1099,9 @@ diff -urNp linux-2.6.29.6/arch/mips/include/asm/system.h linux-2.6.29.6/arch/mip
1048+#define arch_align_stack(x) ((x) & ALMASK) 1099+#define arch_align_stack(x) ((x) & ALMASK)
1049 1100
1050 #endif /* _ASM_SYSTEM_H */ 1101 #endif /* _ASM_SYSTEM_H */
1051diff -urNp linux-2.6.29.6/arch/mips/kernel/binfmt_elfn32.c linux-2.6.29.6/arch/mips/kernel/binfmt_elfn32.c 1102diff -urNp linux-2.6.30.4/arch/mips/kernel/binfmt_elfn32.c linux-2.6.30.4/arch/mips/kernel/binfmt_elfn32.c
1052--- linux-2.6.29.6/arch/mips/kernel/binfmt_elfn32.c 2009-07-02 19:41:20.000000000 -0400 1103--- linux-2.6.30.4/arch/mips/kernel/binfmt_elfn32.c 2009-07-24 17:47:51.000000000 -0400
1053+++ linux-2.6.29.6/arch/mips/kernel/binfmt_elfn32.c 2009-07-23 17:34:32.040769533 -0400 1104+++ linux-2.6.30.4/arch/mips/kernel/binfmt_elfn32.c 2009-07-30 09:48:09.892412592 -0400
1054@@ -50,6 +50,13 @@ typedef elf_fpreg_t elf_fpregset_t[ELF_N 1105@@ -50,6 +50,13 @@ typedef elf_fpreg_t elf_fpregset_t[ELF_N
1055 #undef ELF_ET_DYN_BASE 1106 #undef ELF_ET_DYN_BASE
1056 #define ELF_ET_DYN_BASE (TASK32_SIZE / 3 * 2) 1107 #define ELF_ET_DYN_BASE (TASK32_SIZE / 3 * 2)
@@ -1065,9 +1116,9 @@ diff -urNp linux-2.6.29.6/arch/mips/kernel/binfmt_elfn32.c linux-2.6.29.6/arch/m
1065 #include <asm/processor.h> 1116 #include <asm/processor.h>
1066 #include <linux/module.h> 1117 #include <linux/module.h>
1067 #include <linux/elfcore.h> 1118 #include <linux/elfcore.h>
1068diff -urNp linux-2.6.29.6/arch/mips/kernel/binfmt_elfo32.c linux-2.6.29.6/arch/mips/kernel/binfmt_elfo32.c 1119diff -urNp linux-2.6.30.4/arch/mips/kernel/binfmt_elfo32.c linux-2.6.30.4/arch/mips/kernel/binfmt_elfo32.c
1069--- linux-2.6.29.6/arch/mips/kernel/binfmt_elfo32.c 2009-07-02 19:41:20.000000000 -0400 1120--- linux-2.6.30.4/arch/mips/kernel/binfmt_elfo32.c 2009-07-24 17:47:51.000000000 -0400
1070+++ linux-2.6.29.6/arch/mips/kernel/binfmt_elfo32.c 2009-07-23 17:34:32.040769533 -0400 1121+++ linux-2.6.30.4/arch/mips/kernel/binfmt_elfo32.c 2009-07-30 09:48:09.893444022 -0400
1071@@ -52,6 +52,13 @@ typedef elf_fpreg_t elf_fpregset_t[ELF_N 1122@@ -52,6 +52,13 @@ typedef elf_fpreg_t elf_fpregset_t[ELF_N
1072 #undef ELF_ET_DYN_BASE 1123 #undef ELF_ET_DYN_BASE
1073 #define ELF_ET_DYN_BASE (TASK32_SIZE / 3 * 2) 1124 #define ELF_ET_DYN_BASE (TASK32_SIZE / 3 * 2)
@@ -1082,9 +1133,9 @@ diff -urNp linux-2.6.29.6/arch/mips/kernel/binfmt_elfo32.c linux-2.6.29.6/arch/m
1082 #include <asm/processor.h> 1133 #include <asm/processor.h>
1083 #include <linux/module.h> 1134 #include <linux/module.h>
1084 #include <linux/elfcore.h> 1135 #include <linux/elfcore.h>
1085diff -urNp linux-2.6.29.6/arch/mips/kernel/process.c linux-2.6.29.6/arch/mips/kernel/process.c 1136diff -urNp linux-2.6.30.4/arch/mips/kernel/process.c linux-2.6.30.4/arch/mips/kernel/process.c
1086--- linux-2.6.29.6/arch/mips/kernel/process.c 2009-07-02 19:41:20.000000000 -0400 1137--- linux-2.6.30.4/arch/mips/kernel/process.c 2009-07-24 17:47:51.000000000 -0400
1087+++ linux-2.6.29.6/arch/mips/kernel/process.c 2009-07-23 17:34:32.040769533 -0400 1138+++ linux-2.6.30.4/arch/mips/kernel/process.c 2009-07-30 09:48:09.893444022 -0400
1088@@ -457,15 +457,3 @@ unsigned long get_wchan(struct task_stru 1139@@ -457,15 +457,3 @@ unsigned long get_wchan(struct task_stru
1089 out: 1140 out:
1090 return pc; 1141 return pc;
@@ -1101,9 +1152,9 @@ diff -urNp linux-2.6.29.6/arch/mips/kernel/process.c linux-2.6.29.6/arch/mips/ke
1101- 1152-
1102- return sp & ALMASK; 1153- return sp & ALMASK;
1103-} 1154-}
1104diff -urNp linux-2.6.29.6/arch/mips/kernel/syscall.c linux-2.6.29.6/arch/mips/kernel/syscall.c 1155diff -urNp linux-2.6.30.4/arch/mips/kernel/syscall.c linux-2.6.30.4/arch/mips/kernel/syscall.c
1105--- linux-2.6.29.6/arch/mips/kernel/syscall.c 2009-07-02 19:41:20.000000000 -0400 1156--- linux-2.6.30.4/arch/mips/kernel/syscall.c 2009-07-24 17:47:51.000000000 -0400
1106+++ linux-2.6.29.6/arch/mips/kernel/syscall.c 2009-07-23 17:34:32.040769533 -0400 1157+++ linux-2.6.30.4/arch/mips/kernel/syscall.c 2009-07-30 09:48:09.893444022 -0400
1107@@ -99,6 +99,11 @@ unsigned long arch_get_unmapped_area(str 1158@@ -99,6 +99,11 @@ unsigned long arch_get_unmapped_area(str
1108 do_color_align = 0; 1159 do_color_align = 0;
1109 if (filp || (flags & MAP_SHARED)) 1160 if (filp || (flags & MAP_SHARED))
@@ -1125,9 +1176,9 @@ diff -urNp linux-2.6.29.6/arch/mips/kernel/syscall.c linux-2.6.29.6/arch/mips/ke
1125 if (do_color_align) 1176 if (do_color_align)
1126 addr = COLOUR_ALIGN(addr, pgoff); 1177 addr = COLOUR_ALIGN(addr, pgoff);
1127 else 1178 else
1128diff -urNp linux-2.6.29.6/arch/mips/mm/fault.c linux-2.6.29.6/arch/mips/mm/fault.c 1179diff -urNp linux-2.6.30.4/arch/mips/mm/fault.c linux-2.6.30.4/arch/mips/mm/fault.c
1129--- linux-2.6.29.6/arch/mips/mm/fault.c 2009-07-02 19:41:20.000000000 -0400 1180--- linux-2.6.30.4/arch/mips/mm/fault.c 2009-07-24 17:47:51.000000000 -0400
1130+++ linux-2.6.29.6/arch/mips/mm/fault.c 2009-07-23 17:34:32.041802959 -0400 1181+++ linux-2.6.30.4/arch/mips/mm/fault.c 2009-07-30 09:48:09.896533953 -0400
1131@@ -26,6 +26,23 @@ 1182@@ -26,6 +26,23 @@
1132 #include <asm/ptrace.h> 1183 #include <asm/ptrace.h>
1133 #include <asm/highmem.h> /* For VMALLOC_END */ 1184 #include <asm/highmem.h> /* For VMALLOC_END */
@@ -1152,10 +1203,35 @@ diff -urNp linux-2.6.29.6/arch/mips/mm/fault.c linux-2.6.29.6/arch/mips/mm/fault
1152 /* 1203 /*
1153 * This routine handles page faults. It determines the address, 1204 * This routine handles page faults. It determines the address,
1154 * and the problem, and then passes it off to one of the appropriate 1205 * and the problem, and then passes it off to one of the appropriate
1155diff -urNp linux-2.6.29.6/arch/mn10300/kernel/setup.c linux-2.6.29.6/arch/mn10300/kernel/setup.c 1206diff -urNp linux-2.6.30.4/arch/mn10300/include/asm/atomic.h linux-2.6.30.4/arch/mn10300/include/asm/atomic.h
1156--- linux-2.6.29.6/arch/mn10300/kernel/setup.c 2009-07-02 19:41:20.000000000 -0400 1207--- linux-2.6.30.4/arch/mn10300/include/asm/atomic.h 2009-07-24 17:47:51.000000000 -0400
1157+++ linux-2.6.29.6/arch/mn10300/kernel/setup.c 2009-07-23 18:40:27.492312305 -0400 1208+++ linux-2.6.30.4/arch/mn10300/include/asm/atomic.h 2009-07-30 09:48:09.897612189 -0400
1158@@ -289,7 +289,7 @@ static void c_stop(struct seq_file *m, v 1209@@ -145,6 +145,10 @@ static inline void atomic_clear_mask(uns
1210 #define atomic_xchg(ptr, v) (xchg(&(ptr)->counter, (v)))
1211 #define atomic_cmpxchg(v, old, new) (cmpxchg(&((v)->counter), (old), (new)))
1212
1213+#define atomic_inc_unchecked(v) atomic_inc(v)
1214+#define atomic_add_unchecked(i,v) atomic_add((i),(v))
1215+#define atomic_sub_unchecked(i,v) atomic_sub((i),(v))
1216+
1217 /* Atomic operations are already serializing on MN10300??? */
1218 #define smp_mb__before_atomic_dec() barrier()
1219 #define smp_mb__after_atomic_dec() barrier()
1220diff -urNp linux-2.6.30.4/arch/mn10300/include/asm/kmap_types.h linux-2.6.30.4/arch/mn10300/include/asm/kmap_types.h
1221--- linux-2.6.30.4/arch/mn10300/include/asm/kmap_types.h 2009-07-24 17:47:51.000000000 -0400
1222+++ linux-2.6.30.4/arch/mn10300/include/asm/kmap_types.h 2009-07-30 09:48:09.897612189 -0400
1223@@ -25,6 +25,7 @@ enum km_type {
1224 KM_IRQ1,
1225 KM_SOFTIRQ0,
1226 KM_SOFTIRQ1,
1227+ KM_CLEARPAGE,
1228 KM_TYPE_NR
1229 };
1230
1231diff -urNp linux-2.6.30.4/arch/mn10300/kernel/setup.c linux-2.6.30.4/arch/mn10300/kernel/setup.c
1232--- linux-2.6.30.4/arch/mn10300/kernel/setup.c 2009-07-24 17:47:51.000000000 -0400
1233+++ linux-2.6.30.4/arch/mn10300/kernel/setup.c 2009-07-30 09:48:09.897612189 -0400
1234@@ -285,7 +285,7 @@ static void c_stop(struct seq_file *m, v
1159 { 1235 {
1160 } 1236 }
1161 1237
@@ -1164,25 +1240,25 @@ diff -urNp linux-2.6.29.6/arch/mn10300/kernel/setup.c linux-2.6.29.6/arch/mn1030
1164 .start = c_start, 1240 .start = c_start,
1165 .next = c_next, 1241 .next = c_next,
1166 .stop = c_stop, 1242 .stop = c_stop,
1167diff -urNp linux-2.6.29.6/arch/parisc/include/asm/atomic.h linux-2.6.29.6/arch/parisc/include/asm/atomic.h 1243diff -urNp linux-2.6.30.4/arch/parisc/include/asm/atomic.h linux-2.6.30.4/arch/parisc/include/asm/atomic.h
1168--- linux-2.6.29.6/arch/parisc/include/asm/atomic.h 2009-07-02 19:41:20.000000000 -0400 1244--- linux-2.6.30.4/arch/parisc/include/asm/atomic.h 2009-07-24 17:47:51.000000000 -0400
1169+++ linux-2.6.29.6/arch/parisc/include/asm/atomic.h 2009-07-23 17:34:32.041802959 -0400 1245+++ linux-2.6.30.4/arch/parisc/include/asm/atomic.h 2009-07-30 09:48:09.898625493 -0400
1170@@ -223,8 +223,11 @@ static __inline__ int atomic_add_unless( 1246@@ -223,8 +223,11 @@ static __inline__ int atomic_add_unless(
1171 #define atomic_inc_not_zero(v) atomic_add_unless((v), 1, 0) 1247 #define atomic_inc_not_zero(v) atomic_add_unless((v), 1, 0)
1172 1248
1173 #define atomic_add(i,v) ((void)(__atomic_add_return( ((int)i),(v)))) 1249 #define atomic_add(i,v) ((void)(__atomic_add_return( ((int)(i)),(v))))
1174+#define atomic_add_unchecked(i,v) atomic_add((i), (v)) 1250+#define atomic_add_unchecked(i,v) atomic_add((i), (v))
1175 #define atomic_sub(i,v) ((void)(__atomic_add_return(-((int)i),(v)))) 1251 #define atomic_sub(i,v) ((void)(__atomic_add_return(-((int)(i)),(v))))
1176+#define atomic_sub_unchecked(i,v) atomic_sub((i), (v)) 1252+#define atomic_sub_unchecked(i,v) atomic_sub((i), (v))
1177 #define atomic_inc(v) ((void)(__atomic_add_return( 1,(v)))) 1253 #define atomic_inc(v) ((void)(__atomic_add_return( 1,(v))))
1178+#define atomic_inc_unchecked(v) atomic_inc(v) 1254+#define atomic_inc_unchecked(v) atomic_inc(v)
1179 #define atomic_dec(v) ((void)(__atomic_add_return( -1,(v)))) 1255 #define atomic_dec(v) ((void)(__atomic_add_return( -1,(v))))
1180 1256
1181 #define atomic_add_return(i,v) (__atomic_add_return( ((int)i),(v))) 1257 #define atomic_add_return(i,v) (__atomic_add_return( ((int)(i)),(v)))
1182diff -urNp linux-2.6.29.6/arch/parisc/include/asm/elf.h linux-2.6.29.6/arch/parisc/include/asm/elf.h 1258diff -urNp linux-2.6.30.4/arch/parisc/include/asm/elf.h linux-2.6.30.4/arch/parisc/include/asm/elf.h
1183--- linux-2.6.29.6/arch/parisc/include/asm/elf.h 2009-07-02 19:41:20.000000000 -0400 1259--- linux-2.6.30.4/arch/parisc/include/asm/elf.h 2009-07-24 17:47:51.000000000 -0400
1184+++ linux-2.6.29.6/arch/parisc/include/asm/elf.h 2009-07-23 17:34:32.041802959 -0400 1260+++ linux-2.6.30.4/arch/parisc/include/asm/elf.h 2009-07-30 09:48:09.898625493 -0400
1185@@ -333,6 +333,13 @@ struct pt_regs; /* forward declaration.. 1261@@ -343,6 +343,13 @@ struct pt_regs; /* forward declaration..
1186 1262
1187 #define ELF_ET_DYN_BASE (TASK_UNMAPPED_BASE + 0x01000000) 1263 #define ELF_ET_DYN_BASE (TASK_UNMAPPED_BASE + 0x01000000)
1188 1264
@@ -1196,9 +1272,9 @@ diff -urNp linux-2.6.29.6/arch/parisc/include/asm/elf.h linux-2.6.29.6/arch/pari
1196 /* This yields a mask that user programs can use to figure out what 1272 /* This yields a mask that user programs can use to figure out what
1197 instruction set this CPU supports. This could be done in user space, 1273 instruction set this CPU supports. This could be done in user space,
1198 but it's not easy, and we've already done it here. */ 1274 but it's not easy, and we've already done it here. */
1199diff -urNp linux-2.6.29.6/arch/parisc/include/asm/kmap_types.h linux-2.6.29.6/arch/parisc/include/asm/kmap_types.h 1275diff -urNp linux-2.6.30.4/arch/parisc/include/asm/kmap_types.h linux-2.6.30.4/arch/parisc/include/asm/kmap_types.h
1200--- linux-2.6.29.6/arch/parisc/include/asm/kmap_types.h 2009-07-02 19:41:20.000000000 -0400 1276--- linux-2.6.30.4/arch/parisc/include/asm/kmap_types.h 2009-07-24 17:47:51.000000000 -0400
1201+++ linux-2.6.29.6/arch/parisc/include/asm/kmap_types.h 2009-07-23 17:34:32.041802959 -0400 1277+++ linux-2.6.30.4/arch/parisc/include/asm/kmap_types.h 2009-07-30 09:48:09.898625493 -0400
1202@@ -22,7 +22,8 @@ D(9) KM_IRQ0, 1278@@ -22,7 +22,8 @@ D(9) KM_IRQ0,
1203 D(10) KM_IRQ1, 1279 D(10) KM_IRQ1,
1204 D(11) KM_SOFTIRQ0, 1280 D(11) KM_SOFTIRQ0,
@@ -1209,10 +1285,10 @@ diff -urNp linux-2.6.29.6/arch/parisc/include/asm/kmap_types.h linux-2.6.29.6/ar
1209 }; 1285 };
1210 1286
1211 #undef D 1287 #undef D
1212diff -urNp linux-2.6.29.6/arch/parisc/include/asm/pgtable.h linux-2.6.29.6/arch/parisc/include/asm/pgtable.h 1288diff -urNp linux-2.6.30.4/arch/parisc/include/asm/pgtable.h linux-2.6.30.4/arch/parisc/include/asm/pgtable.h
1213--- linux-2.6.29.6/arch/parisc/include/asm/pgtable.h 2009-07-02 19:41:20.000000000 -0400 1289--- linux-2.6.30.4/arch/parisc/include/asm/pgtable.h 2009-07-24 17:47:51.000000000 -0400
1214+++ linux-2.6.29.6/arch/parisc/include/asm/pgtable.h 2009-07-23 17:34:32.041802959 -0400 1290+++ linux-2.6.30.4/arch/parisc/include/asm/pgtable.h 2009-07-30 09:48:09.898625493 -0400
1215@@ -202,6 +202,17 @@ 1291@@ -207,6 +207,17 @@
1216 #define PAGE_EXECREAD __pgprot(_PAGE_PRESENT | _PAGE_USER | _PAGE_READ | _PAGE_EXEC |_PAGE_ACCESSED) 1292 #define PAGE_EXECREAD __pgprot(_PAGE_PRESENT | _PAGE_USER | _PAGE_READ | _PAGE_EXEC |_PAGE_ACCESSED)
1217 #define PAGE_COPY PAGE_EXECREAD 1293 #define PAGE_COPY PAGE_EXECREAD
1218 #define PAGE_RWX __pgprot(_PAGE_PRESENT | _PAGE_USER | _PAGE_READ | _PAGE_WRITE | _PAGE_EXEC |_PAGE_ACCESSED) 1294 #define PAGE_RWX __pgprot(_PAGE_PRESENT | _PAGE_USER | _PAGE_READ | _PAGE_WRITE | _PAGE_EXEC |_PAGE_ACCESSED)
@@ -1230,10 +1306,10 @@ diff -urNp linux-2.6.29.6/arch/parisc/include/asm/pgtable.h linux-2.6.29.6/arch/
1230 #define PAGE_KERNEL __pgprot(_PAGE_KERNEL) 1306 #define PAGE_KERNEL __pgprot(_PAGE_KERNEL)
1231 #define PAGE_KERNEL_RO __pgprot(_PAGE_KERNEL & ~_PAGE_WRITE) 1307 #define PAGE_KERNEL_RO __pgprot(_PAGE_KERNEL & ~_PAGE_WRITE)
1232 #define PAGE_KERNEL_UNC __pgprot(_PAGE_KERNEL | _PAGE_NO_CACHE) 1308 #define PAGE_KERNEL_UNC __pgprot(_PAGE_KERNEL | _PAGE_NO_CACHE)
1233diff -urNp linux-2.6.29.6/arch/parisc/kernel/module.c linux-2.6.29.6/arch/parisc/kernel/module.c 1309diff -urNp linux-2.6.30.4/arch/parisc/kernel/module.c linux-2.6.30.4/arch/parisc/kernel/module.c
1234--- linux-2.6.29.6/arch/parisc/kernel/module.c 2009-07-02 19:41:20.000000000 -0400 1310--- linux-2.6.30.4/arch/parisc/kernel/module.c 2009-07-24 17:47:51.000000000 -0400
1235+++ linux-2.6.29.6/arch/parisc/kernel/module.c 2009-07-23 17:34:32.041802959 -0400 1311+++ linux-2.6.30.4/arch/parisc/kernel/module.c 2009-07-30 09:48:09.899565255 -0400
1236@@ -93,16 +93,38 @@ 1312@@ -91,16 +91,38 @@
1237 1313
1238 /* three functions to determine where in the module core 1314 /* three functions to determine where in the module core
1239 * or init pieces the location is */ 1315 * or init pieces the location is */
@@ -1276,7 +1352,7 @@ diff -urNp linux-2.6.29.6/arch/parisc/kernel/module.c linux-2.6.29.6/arch/parisc
1276 } 1352 }
1277 1353
1278 static inline int in_local(struct module *me, void *loc) 1354 static inline int in_local(struct module *me, void *loc)
1279@@ -340,13 +362,13 @@ int module_frob_arch_sections(CONST Elf_ 1355@@ -334,13 +356,13 @@ int module_frob_arch_sections(CONST Elf_
1280 } 1356 }
1281 1357
1282 /* align things a bit */ 1358 /* align things a bit */
@@ -1297,7 +1373,7 @@ diff -urNp linux-2.6.29.6/arch/parisc/kernel/module.c linux-2.6.29.6/arch/parisc
1297 1373
1298 me->arch.got_max = gots; 1374 me->arch.got_max = gots;
1299 me->arch.fdesc_max = fdescs; 1375 me->arch.fdesc_max = fdescs;
1300@@ -364,7 +386,7 @@ static Elf64_Word get_got(struct module 1376@@ -358,7 +380,7 @@ static Elf64_Word get_got(struct module
1301 1377
1302 BUG_ON(value == 0); 1378 BUG_ON(value == 0);
1303 1379
@@ -1306,7 +1382,7 @@ diff -urNp linux-2.6.29.6/arch/parisc/kernel/module.c linux-2.6.29.6/arch/parisc
1306 for (i = 0; got[i].addr; i++) 1382 for (i = 0; got[i].addr; i++)
1307 if (got[i].addr == value) 1383 if (got[i].addr == value)
1308 goto out; 1384 goto out;
1309@@ -382,7 +404,7 @@ static Elf64_Word get_got(struct module 1385@@ -376,7 +398,7 @@ static Elf64_Word get_got(struct module
1310 #ifdef CONFIG_64BIT 1386 #ifdef CONFIG_64BIT
1311 static Elf_Addr get_fdesc(struct module *me, unsigned long value) 1387 static Elf_Addr get_fdesc(struct module *me, unsigned long value)
1312 { 1388 {
@@ -1315,7 +1391,7 @@ diff -urNp linux-2.6.29.6/arch/parisc/kernel/module.c linux-2.6.29.6/arch/parisc
1315 1391
1316 if (!value) { 1392 if (!value) {
1317 printk(KERN_ERR "%s: zero OPD requested!\n", me->name); 1393 printk(KERN_ERR "%s: zero OPD requested!\n", me->name);
1318@@ -400,7 +422,7 @@ static Elf_Addr get_fdesc(struct module 1394@@ -394,7 +416,7 @@ static Elf_Addr get_fdesc(struct module
1319 1395
1320 /* Create new one */ 1396 /* Create new one */
1321 fdesc->addr = value; 1397 fdesc->addr = value;
@@ -1324,7 +1400,7 @@ diff -urNp linux-2.6.29.6/arch/parisc/kernel/module.c linux-2.6.29.6/arch/parisc
1324 return (Elf_Addr)fdesc; 1400 return (Elf_Addr)fdesc;
1325 } 1401 }
1326 #endif /* CONFIG_64BIT */ 1402 #endif /* CONFIG_64BIT */
1327@@ -816,7 +838,7 @@ register_unwind_table(struct module *me, 1403@@ -810,7 +832,7 @@ register_unwind_table(struct module *me,
1328 1404
1329 table = (unsigned char *)sechdrs[me->arch.unwind_section].sh_addr; 1405 table = (unsigned char *)sechdrs[me->arch.unwind_section].sh_addr;
1330 end = table + sechdrs[me->arch.unwind_section].sh_size; 1406 end = table + sechdrs[me->arch.unwind_section].sh_size;
@@ -1333,9 +1409,9 @@ diff -urNp linux-2.6.29.6/arch/parisc/kernel/module.c linux-2.6.29.6/arch/parisc
1333 1409
1334 DEBUGP("register_unwind_table(), sect = %d at 0x%p - 0x%p (gp=0x%lx)\n", 1410 DEBUGP("register_unwind_table(), sect = %d at 0x%p - 0x%p (gp=0x%lx)\n",
1335 me->arch.unwind_section, table, end, gp); 1411 me->arch.unwind_section, table, end, gp);
1336diff -urNp linux-2.6.29.6/arch/parisc/kernel/sys_parisc.c linux-2.6.29.6/arch/parisc/kernel/sys_parisc.c 1412diff -urNp linux-2.6.30.4/arch/parisc/kernel/sys_parisc.c linux-2.6.30.4/arch/parisc/kernel/sys_parisc.c
1337--- linux-2.6.29.6/arch/parisc/kernel/sys_parisc.c 2009-07-02 19:41:20.000000000 -0400 1413--- linux-2.6.30.4/arch/parisc/kernel/sys_parisc.c 2009-07-24 17:47:51.000000000 -0400
1338+++ linux-2.6.29.6/arch/parisc/kernel/sys_parisc.c 2009-07-23 17:34:32.042928337 -0400 1414+++ linux-2.6.30.4/arch/parisc/kernel/sys_parisc.c 2009-07-30 09:48:09.899565255 -0400
1339@@ -98,7 +98,7 @@ unsigned long arch_get_unmapped_area(str 1415@@ -98,7 +98,7 @@ unsigned long arch_get_unmapped_area(str
1340 if (flags & MAP_FIXED) 1416 if (flags & MAP_FIXED)
1341 return addr; 1417 return addr;
@@ -1345,10 +1421,10 @@ diff -urNp linux-2.6.29.6/arch/parisc/kernel/sys_parisc.c linux-2.6.29.6/arch/pa
1345 1421
1346 if (filp) { 1422 if (filp) {
1347 addr = get_shared_area(filp->f_mapping, addr, len, pgoff); 1423 addr = get_shared_area(filp->f_mapping, addr, len, pgoff);
1348diff -urNp linux-2.6.29.6/arch/parisc/kernel/traps.c linux-2.6.29.6/arch/parisc/kernel/traps.c 1424diff -urNp linux-2.6.30.4/arch/parisc/kernel/traps.c linux-2.6.30.4/arch/parisc/kernel/traps.c
1349--- linux-2.6.29.6/arch/parisc/kernel/traps.c 2009-07-02 19:41:20.000000000 -0400 1425--- linux-2.6.30.4/arch/parisc/kernel/traps.c 2009-07-24 17:47:51.000000000 -0400
1350+++ linux-2.6.29.6/arch/parisc/kernel/traps.c 2009-07-23 17:34:32.042928337 -0400 1426+++ linux-2.6.30.4/arch/parisc/kernel/traps.c 2009-07-30 09:48:09.900676754 -0400
1351@@ -731,9 +731,7 @@ void handle_interruption(int code, struc 1427@@ -734,9 +734,7 @@ void notrace handle_interruption(int cod
1352 1428
1353 down_read(&current->mm->mmap_sem); 1429 down_read(&current->mm->mmap_sem);
1354 vma = find_vma(current->mm,regs->iaoq[0]); 1430 vma = find_vma(current->mm,regs->iaoq[0]);
@@ -1359,9 +1435,9 @@ diff -urNp linux-2.6.29.6/arch/parisc/kernel/traps.c linux-2.6.29.6/arch/parisc/
1359 fault_address = regs->iaoq[0]; 1435 fault_address = regs->iaoq[0];
1360 fault_space = regs->iasq[0]; 1436 fault_space = regs->iasq[0];
1361 1437
1362diff -urNp linux-2.6.29.6/arch/parisc/mm/fault.c linux-2.6.29.6/arch/parisc/mm/fault.c 1438diff -urNp linux-2.6.30.4/arch/parisc/mm/fault.c linux-2.6.30.4/arch/parisc/mm/fault.c
1363--- linux-2.6.29.6/arch/parisc/mm/fault.c 2009-07-02 19:41:20.000000000 -0400 1439--- linux-2.6.30.4/arch/parisc/mm/fault.c 2009-07-24 17:47:51.000000000 -0400
1364+++ linux-2.6.29.6/arch/parisc/mm/fault.c 2009-07-23 17:34:32.042928337 -0400 1440+++ linux-2.6.30.4/arch/parisc/mm/fault.c 2009-07-30 09:48:09.900676754 -0400
1365@@ -16,6 +16,7 @@ 1441@@ -16,6 +16,7 @@
1366 #include <linux/sched.h> 1442 #include <linux/sched.h>
1367 #include <linux/interrupt.h> 1443 #include <linux/interrupt.h>
@@ -1531,9 +1607,9 @@ diff -urNp linux-2.6.29.6/arch/parisc/mm/fault.c linux-2.6.29.6/arch/parisc/mm/f
1531 1607
1532 /* 1608 /*
1533 * If for any reason at all we couldn't handle the fault, make 1609 * If for any reason at all we couldn't handle the fault, make
1534diff -urNp linux-2.6.29.6/arch/powerpc/include/asm/atomic.h linux-2.6.29.6/arch/powerpc/include/asm/atomic.h 1610diff -urNp linux-2.6.30.4/arch/powerpc/include/asm/atomic.h linux-2.6.30.4/arch/powerpc/include/asm/atomic.h
1535--- linux-2.6.29.6/arch/powerpc/include/asm/atomic.h 2009-07-02 19:41:20.000000000 -0400 1611--- linux-2.6.30.4/arch/powerpc/include/asm/atomic.h 2009-07-24 17:47:51.000000000 -0400
1536+++ linux-2.6.29.6/arch/powerpc/include/asm/atomic.h 2009-07-23 17:34:32.042928337 -0400 1612+++ linux-2.6.30.4/arch/powerpc/include/asm/atomic.h 2009-07-30 09:48:09.900676754 -0400
1537@@ -244,6 +244,10 @@ static __inline__ int atomic_dec_if_posi 1613@@ -244,6 +244,10 @@ static __inline__ int atomic_dec_if_posi
1538 return t; 1614 return t;
1539 } 1615 }
@@ -1545,13 +1621,17 @@ diff -urNp linux-2.6.29.6/arch/powerpc/include/asm/atomic.h linux-2.6.29.6/arch/
1545 #define smp_mb__before_atomic_dec() smp_mb() 1621 #define smp_mb__before_atomic_dec() smp_mb()
1546 #define smp_mb__after_atomic_dec() smp_mb() 1622 #define smp_mb__after_atomic_dec() smp_mb()
1547 #define smp_mb__before_atomic_inc() smp_mb() 1623 #define smp_mb__before_atomic_inc() smp_mb()
1548diff -urNp linux-2.6.29.6/arch/powerpc/include/asm/elf.h linux-2.6.29.6/arch/powerpc/include/asm/elf.h 1624diff -urNp linux-2.6.30.4/arch/powerpc/include/asm/elf.h linux-2.6.30.4/arch/powerpc/include/asm/elf.h
1549--- linux-2.6.29.6/arch/powerpc/include/asm/elf.h 2009-07-02 19:41:20.000000000 -0400 1625--- linux-2.6.30.4/arch/powerpc/include/asm/elf.h 2009-07-24 17:47:51.000000000 -0400
1550+++ linux-2.6.29.6/arch/powerpc/include/asm/elf.h 2009-07-23 17:34:32.043871989 -0400 1626+++ linux-2.6.30.4/arch/powerpc/include/asm/elf.h 2009-07-30 09:48:09.901536944 -0400
1551@@ -180,6 +180,18 @@ typedef elf_fpreg_t elf_vsrreghalf_t32[E 1627@@ -179,8 +179,19 @@ typedef elf_fpreg_t elf_vsrreghalf_t32[E
1552 1628 the loader. We need to make sure that it is out of the way of the program
1553 #define ELF_ET_DYN_BASE (0x20000000) 1629 that it will "exec", and that there is sufficient room for the brk. */
1554 1630
1631-extern unsigned long randomize_et_dyn(unsigned long base);
1632-#define ELF_ET_DYN_BASE (randomize_et_dyn(0x20000000))
1633+#define ELF_ET_DYN_BASE (0x20000000)
1634+
1555+#ifdef CONFIG_PAX_ASLR 1635+#ifdef CONFIG_PAX_ASLR
1556+#define PAX_ELF_ET_DYN_BASE (0x10000000UL) 1636+#define PAX_ELF_ET_DYN_BASE (0x10000000UL)
1557+ 1637+
@@ -1563,13 +1643,12 @@ diff -urNp linux-2.6.29.6/arch/powerpc/include/asm/elf.h linux-2.6.29.6/arch/pow
1563+#define PAX_DELTA_STACK_LEN 15 1643+#define PAX_DELTA_STACK_LEN 15
1564+#endif 1644+#endif
1565+#endif 1645+#endif
1566+ 1646
1567 /* 1647 /*
1568 * Our registers are always unsigned longs, whether we're a 32 bit 1648 * Our registers are always unsigned longs, whether we're a 32 bit
1569 * process or 64 bit, on either a 64 bit or 32 bit kernel. 1649diff -urNp linux-2.6.30.4/arch/powerpc/include/asm/kmap_types.h linux-2.6.30.4/arch/powerpc/include/asm/kmap_types.h
1570diff -urNp linux-2.6.29.6/arch/powerpc/include/asm/kmap_types.h linux-2.6.29.6/arch/powerpc/include/asm/kmap_types.h 1650--- linux-2.6.30.4/arch/powerpc/include/asm/kmap_types.h 2009-07-24 17:47:51.000000000 -0400
1571--- linux-2.6.29.6/arch/powerpc/include/asm/kmap_types.h 2009-07-02 19:41:20.000000000 -0400 1651+++ linux-2.6.30.4/arch/powerpc/include/asm/kmap_types.h 2009-07-30 09:48:09.901536944 -0400
1572+++ linux-2.6.29.6/arch/powerpc/include/asm/kmap_types.h 2009-07-23 17:34:32.043871989 -0400
1573@@ -26,6 +26,7 @@ enum km_type { 1652@@ -26,6 +26,7 @@ enum km_type {
1574 KM_SOFTIRQ1, 1653 KM_SOFTIRQ1,
1575 KM_PPC_SYNC_PAGE, 1654 KM_PPC_SYNC_PAGE,
@@ -1578,9 +1657,9 @@ diff -urNp linux-2.6.29.6/arch/powerpc/include/asm/kmap_types.h linux-2.6.29.6/a
1578 KM_TYPE_NR 1657 KM_TYPE_NR
1579 }; 1658 };
1580 1659
1581diff -urNp linux-2.6.29.6/arch/powerpc/include/asm/page_64.h linux-2.6.29.6/arch/powerpc/include/asm/page_64.h 1660diff -urNp linux-2.6.30.4/arch/powerpc/include/asm/page_64.h linux-2.6.30.4/arch/powerpc/include/asm/page_64.h
1582--- linux-2.6.29.6/arch/powerpc/include/asm/page_64.h 2009-07-02 19:41:20.000000000 -0400 1661--- linux-2.6.30.4/arch/powerpc/include/asm/page_64.h 2009-07-24 17:47:51.000000000 -0400
1583+++ linux-2.6.29.6/arch/powerpc/include/asm/page_64.h 2009-07-23 17:34:32.043871989 -0400 1662+++ linux-2.6.30.4/arch/powerpc/include/asm/page_64.h 2009-07-30 09:48:09.902599231 -0400
1584@@ -170,15 +170,18 @@ do { \ 1663@@ -170,15 +170,18 @@ do { \
1585 * stack by default, so in the absense of a PT_GNU_STACK program header 1664 * stack by default, so in the absense of a PT_GNU_STACK program header
1586 * we turn execute permission off. 1665 * we turn execute permission off.
@@ -1602,10 +1681,10 @@ diff -urNp linux-2.6.29.6/arch/powerpc/include/asm/page_64.h linux-2.6.29.6/arch
1602 1681
1603 #include <asm-generic/page.h> 1682 #include <asm-generic/page.h>
1604 1683
1605diff -urNp linux-2.6.29.6/arch/powerpc/include/asm/page.h linux-2.6.29.6/arch/powerpc/include/asm/page.h 1684diff -urNp linux-2.6.30.4/arch/powerpc/include/asm/page.h linux-2.6.30.4/arch/powerpc/include/asm/page.h
1606--- linux-2.6.29.6/arch/powerpc/include/asm/page.h 2009-07-02 19:41:20.000000000 -0400 1685--- linux-2.6.30.4/arch/powerpc/include/asm/page.h 2009-07-24 17:47:51.000000000 -0400
1607+++ linux-2.6.29.6/arch/powerpc/include/asm/page.h 2009-07-23 17:34:32.043871989 -0400 1686+++ linux-2.6.30.4/arch/powerpc/include/asm/page.h 2009-07-30 09:48:09.902599231 -0400
1608@@ -114,8 +114,9 @@ extern phys_addr_t kernstart_addr; 1687@@ -116,8 +116,9 @@ extern phys_addr_t kernstart_addr;
1609 * and needs to be executable. This means the whole heap ends 1688 * and needs to be executable. This means the whole heap ends
1610 * up being executable. 1689 * up being executable.
1611 */ 1690 */
@@ -1617,9 +1696,9 @@ diff -urNp linux-2.6.29.6/arch/powerpc/include/asm/page.h linux-2.6.29.6/arch/po
1617 1696
1618 #define VM_DATA_DEFAULT_FLAGS64 (VM_READ | VM_WRITE | \ 1697 #define VM_DATA_DEFAULT_FLAGS64 (VM_READ | VM_WRITE | \
1619 VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC) 1698 VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC)
1620diff -urNp linux-2.6.29.6/arch/powerpc/include/asm/uaccess.h linux-2.6.29.6/arch/powerpc/include/asm/uaccess.h 1699diff -urNp linux-2.6.30.4/arch/powerpc/include/asm/uaccess.h linux-2.6.30.4/arch/powerpc/include/asm/uaccess.h
1621--- linux-2.6.29.6/arch/powerpc/include/asm/uaccess.h 2009-07-02 19:41:20.000000000 -0400 1700--- linux-2.6.30.4/arch/powerpc/include/asm/uaccess.h 2009-07-24 17:47:51.000000000 -0400
1622+++ linux-2.6.29.6/arch/powerpc/include/asm/uaccess.h 2009-07-23 17:34:32.043871989 -0400 1701+++ linux-2.6.30.4/arch/powerpc/include/asm/uaccess.h 2009-07-30 11:10:48.774534063 -0400
1623@@ -334,6 +334,9 @@ static inline unsigned long copy_from_us 1702@@ -334,6 +334,9 @@ static inline unsigned long copy_from_us
1624 { 1703 {
1625 unsigned long over; 1704 unsigned long over;
@@ -1640,9 +1719,9 @@ diff -urNp linux-2.6.29.6/arch/powerpc/include/asm/uaccess.h linux-2.6.29.6/arch
1640 if (access_ok(VERIFY_WRITE, to, n)) 1719 if (access_ok(VERIFY_WRITE, to, n))
1641 return __copy_tofrom_user(to, (__force void __user *)from, n); 1720 return __copy_tofrom_user(to, (__force void __user *)from, n);
1642 if ((unsigned long)to < TASK_SIZE) { 1721 if ((unsigned long)to < TASK_SIZE) {
1643diff -urNp linux-2.6.29.6/arch/powerpc/kernel/module_32.c linux-2.6.29.6/arch/powerpc/kernel/module_32.c 1722diff -urNp linux-2.6.30.4/arch/powerpc/kernel/module_32.c linux-2.6.30.4/arch/powerpc/kernel/module_32.c
1644--- linux-2.6.29.6/arch/powerpc/kernel/module_32.c 2009-07-02 19:41:20.000000000 -0400 1723--- linux-2.6.30.4/arch/powerpc/kernel/module_32.c 2009-07-24 17:47:51.000000000 -0400
1645+++ linux-2.6.29.6/arch/powerpc/kernel/module_32.c 2009-07-23 17:34:32.043871989 -0400 1724+++ linux-2.6.30.4/arch/powerpc/kernel/module_32.c 2009-07-30 09:48:09.903567873 -0400
1646@@ -162,7 +162,7 @@ int module_frob_arch_sections(Elf32_Ehdr 1725@@ -162,7 +162,7 @@ int module_frob_arch_sections(Elf32_Ehdr
1647 me->arch.core_plt_section = i; 1726 me->arch.core_plt_section = i;
1648 } 1727 }
@@ -1672,10 +1751,50 @@ diff -urNp linux-2.6.29.6/arch/powerpc/kernel/module_32.c linux-2.6.29.6/arch/po
1672 1751
1673 /* Find this entry, or if that fails, the next avail. entry */ 1752 /* Find this entry, or if that fails, the next avail. entry */
1674 while (entry->jump[0]) { 1753 while (entry->jump[0]) {
1675diff -urNp linux-2.6.29.6/arch/powerpc/kernel/setup-common.c linux-2.6.29.6/arch/powerpc/kernel/setup-common.c 1754diff -urNp linux-2.6.30.4/arch/powerpc/kernel/process.c linux-2.6.30.4/arch/powerpc/kernel/process.c
1676--- linux-2.6.29.6/arch/powerpc/kernel/setup-common.c 2009-07-02 19:41:20.000000000 -0400 1755--- linux-2.6.30.4/arch/powerpc/kernel/process.c 2009-07-24 17:47:51.000000000 -0400
1677+++ linux-2.6.29.6/arch/powerpc/kernel/setup-common.c 2009-07-23 18:40:27.492312305 -0400 1756+++ linux-2.6.30.4/arch/powerpc/kernel/process.c 2009-07-30 09:48:09.903567873 -0400
1678@@ -327,7 +327,7 @@ static void c_stop(struct seq_file *m, v 1757@@ -1147,36 +1147,3 @@ unsigned long arch_align_stack(unsigned
1758 sp -= get_random_int() & ~PAGE_MASK;
1759 return sp & ~0xf;
1760 }
1761-
1762-static inline unsigned long brk_rnd(void)
1763-{
1764- unsigned long rnd = 0;
1765-
1766- /* 8MB for 32bit, 1GB for 64bit */
1767- if (is_32bit_task())
1768- rnd = (long)(get_random_int() % (1<<(23-PAGE_SHIFT)));
1769- else
1770- rnd = (long)(get_random_int() % (1<<(30-PAGE_SHIFT)));
1771-
1772- return rnd << PAGE_SHIFT;
1773-}
1774-
1775-unsigned long arch_randomize_brk(struct mm_struct *mm)
1776-{
1777- unsigned long ret = PAGE_ALIGN(mm->brk + brk_rnd());
1778-
1779- if (ret < mm->brk)
1780- return mm->brk;
1781-
1782- return ret;
1783-}
1784-
1785-unsigned long randomize_et_dyn(unsigned long base)
1786-{
1787- unsigned long ret = PAGE_ALIGN(base + brk_rnd());
1788-
1789- if (ret < base)
1790- return base;
1791-
1792- return ret;
1793-}
1794diff -urNp linux-2.6.30.4/arch/powerpc/kernel/setup-common.c linux-2.6.30.4/arch/powerpc/kernel/setup-common.c
1795--- linux-2.6.30.4/arch/powerpc/kernel/setup-common.c 2009-07-24 17:47:51.000000000 -0400
1796+++ linux-2.6.30.4/arch/powerpc/kernel/setup-common.c 2009-07-30 09:48:09.903567873 -0400
1797@@ -328,7 +328,7 @@ static void c_stop(struct seq_file *m, v
1679 { 1798 {
1680 } 1799 }
1681 1800
@@ -1684,9 +1803,9 @@ diff -urNp linux-2.6.29.6/arch/powerpc/kernel/setup-common.c linux-2.6.29.6/arch
1684 .start =c_start, 1803 .start =c_start,
1685 .next = c_next, 1804 .next = c_next,
1686 .stop = c_stop, 1805 .stop = c_stop,
1687diff -urNp linux-2.6.29.6/arch/powerpc/kernel/signal_32.c linux-2.6.29.6/arch/powerpc/kernel/signal_32.c 1806diff -urNp linux-2.6.30.4/arch/powerpc/kernel/signal_32.c linux-2.6.30.4/arch/powerpc/kernel/signal_32.c
1688--- linux-2.6.29.6/arch/powerpc/kernel/signal_32.c 2009-07-02 19:41:20.000000000 -0400 1807--- linux-2.6.30.4/arch/powerpc/kernel/signal_32.c 2009-07-24 17:47:51.000000000 -0400
1689+++ linux-2.6.29.6/arch/powerpc/kernel/signal_32.c 2009-07-23 17:34:32.044827554 -0400 1808+++ linux-2.6.30.4/arch/powerpc/kernel/signal_32.c 2009-07-30 09:48:09.903567873 -0400
1690@@ -857,7 +857,7 @@ int handle_rt_signal32(unsigned long sig 1809@@ -857,7 +857,7 @@ int handle_rt_signal32(unsigned long sig
1691 /* Save user registers on the stack */ 1810 /* Save user registers on the stack */
1692 frame = &rt_sf->uc.uc_mcontext; 1811 frame = &rt_sf->uc.uc_mcontext;
@@ -1696,9 +1815,9 @@ diff -urNp linux-2.6.29.6/arch/powerpc/kernel/signal_32.c linux-2.6.29.6/arch/po
1696 if (save_user_regs(regs, frame, 0, 1)) 1815 if (save_user_regs(regs, frame, 0, 1))
1697 goto badframe; 1816 goto badframe;
1698 regs->link = current->mm->context.vdso_base + vdso32_rt_sigtramp; 1817 regs->link = current->mm->context.vdso_base + vdso32_rt_sigtramp;
1699diff -urNp linux-2.6.29.6/arch/powerpc/kernel/signal_64.c linux-2.6.29.6/arch/powerpc/kernel/signal_64.c 1818diff -urNp linux-2.6.30.4/arch/powerpc/kernel/signal_64.c linux-2.6.30.4/arch/powerpc/kernel/signal_64.c
1700--- linux-2.6.29.6/arch/powerpc/kernel/signal_64.c 2009-07-02 19:41:20.000000000 -0400 1819--- linux-2.6.30.4/arch/powerpc/kernel/signal_64.c 2009-07-24 17:47:51.000000000 -0400
1701+++ linux-2.6.29.6/arch/powerpc/kernel/signal_64.c 2009-07-23 17:34:32.044827554 -0400 1820+++ linux-2.6.30.4/arch/powerpc/kernel/signal_64.c 2009-07-30 09:48:09.905069777 -0400
1702@@ -429,7 +429,7 @@ int handle_rt_signal64(int signr, struct 1821@@ -429,7 +429,7 @@ int handle_rt_signal64(int signr, struct
1703 current->thread.fpscr.val = 0; 1822 current->thread.fpscr.val = 0;
1704 1823
@@ -1708,9 +1827,9 @@ diff -urNp linux-2.6.29.6/arch/powerpc/kernel/signal_64.c linux-2.6.29.6/arch/po
1708 regs->link = current->mm->context.vdso_base + vdso64_rt_sigtramp; 1827 regs->link = current->mm->context.vdso_base + vdso64_rt_sigtramp;
1709 } else { 1828 } else {
1710 err |= setup_trampoline(__NR_rt_sigreturn, &frame->tramp[0]); 1829 err |= setup_trampoline(__NR_rt_sigreturn, &frame->tramp[0]);
1711diff -urNp linux-2.6.29.6/arch/powerpc/kernel/vdso.c linux-2.6.29.6/arch/powerpc/kernel/vdso.c 1830diff -urNp linux-2.6.30.4/arch/powerpc/kernel/vdso.c linux-2.6.30.4/arch/powerpc/kernel/vdso.c
1712--- linux-2.6.29.6/arch/powerpc/kernel/vdso.c 2009-07-02 19:41:20.000000000 -0400 1831--- linux-2.6.30.4/arch/powerpc/kernel/vdso.c 2009-07-24 17:47:51.000000000 -0400
1713+++ linux-2.6.29.6/arch/powerpc/kernel/vdso.c 2009-07-23 17:34:32.044827554 -0400 1832+++ linux-2.6.30.4/arch/powerpc/kernel/vdso.c 2009-07-30 09:48:09.905069777 -0400
1714@@ -211,7 +211,7 @@ int arch_setup_additional_pages(struct l 1833@@ -211,7 +211,7 @@ int arch_setup_additional_pages(struct l
1715 vdso_base = VDSO32_MBASE; 1834 vdso_base = VDSO32_MBASE;
1716 #endif 1835 #endif
@@ -1729,9 +1848,9 @@ diff -urNp linux-2.6.29.6/arch/powerpc/kernel/vdso.c linux-2.6.29.6/arch/powerpc
1729 if (IS_ERR_VALUE(vdso_base)) { 1848 if (IS_ERR_VALUE(vdso_base)) {
1730 rc = vdso_base; 1849 rc = vdso_base;
1731 goto fail_mmapsem; 1850 goto fail_mmapsem;
1732diff -urNp linux-2.6.29.6/arch/powerpc/kvm/timing.c linux-2.6.29.6/arch/powerpc/kvm/timing.c 1851diff -urNp linux-2.6.30.4/arch/powerpc/kvm/timing.c linux-2.6.30.4/arch/powerpc/kvm/timing.c
1733--- linux-2.6.29.6/arch/powerpc/kvm/timing.c 2009-07-02 19:41:20.000000000 -0400 1852--- linux-2.6.30.4/arch/powerpc/kvm/timing.c 2009-07-24 17:47:51.000000000 -0400
1734+++ linux-2.6.29.6/arch/powerpc/kvm/timing.c 2009-07-23 18:40:27.493263868 -0400 1853+++ linux-2.6.30.4/arch/powerpc/kvm/timing.c 2009-07-30 09:48:09.905069777 -0400
1735@@ -201,7 +201,7 @@ static int kvmppc_exit_timing_open(struc 1854@@ -201,7 +201,7 @@ static int kvmppc_exit_timing_open(struc
1736 return single_open(file, kvmppc_exit_timing_show, inode->i_private); 1855 return single_open(file, kvmppc_exit_timing_show, inode->i_private);
1737 } 1856 }
@@ -1741,9 +1860,9 @@ diff -urNp linux-2.6.29.6/arch/powerpc/kvm/timing.c linux-2.6.29.6/arch/powerpc/
1741 .owner = THIS_MODULE, 1860 .owner = THIS_MODULE,
1742 .open = kvmppc_exit_timing_open, 1861 .open = kvmppc_exit_timing_open,
1743 .read = seq_read, 1862 .read = seq_read,
1744diff -urNp linux-2.6.29.6/arch/powerpc/lib/usercopy_64.c linux-2.6.29.6/arch/powerpc/lib/usercopy_64.c 1863diff -urNp linux-2.6.30.4/arch/powerpc/lib/usercopy_64.c linux-2.6.30.4/arch/powerpc/lib/usercopy_64.c
1745--- linux-2.6.29.6/arch/powerpc/lib/usercopy_64.c 2009-07-02 19:41:20.000000000 -0400 1864--- linux-2.6.30.4/arch/powerpc/lib/usercopy_64.c 2009-07-24 17:47:51.000000000 -0400
1746+++ linux-2.6.29.6/arch/powerpc/lib/usercopy_64.c 2009-07-23 17:34:32.044827554 -0400 1865+++ linux-2.6.30.4/arch/powerpc/lib/usercopy_64.c 2009-07-30 11:10:48.798471204 -0400
1747@@ -11,6 +11,9 @@ 1866@@ -11,6 +11,9 @@
1748 1867
1749 unsigned long copy_from_user(void *to, const void __user *from, unsigned long n) 1868 unsigned long copy_from_user(void *to, const void __user *from, unsigned long n)
@@ -1764,9 +1883,9 @@ diff -urNp linux-2.6.29.6/arch/powerpc/lib/usercopy_64.c linux-2.6.29.6/arch/pow
1764 if (likely(access_ok(VERIFY_WRITE, to, n))) 1883 if (likely(access_ok(VERIFY_WRITE, to, n)))
1765 n = __copy_to_user(to, from, n); 1884 n = __copy_to_user(to, from, n);
1766 return n; 1885 return n;
1767diff -urNp linux-2.6.29.6/arch/powerpc/mm/fault.c linux-2.6.29.6/arch/powerpc/mm/fault.c 1886diff -urNp linux-2.6.30.4/arch/powerpc/mm/fault.c linux-2.6.30.4/arch/powerpc/mm/fault.c
1768--- linux-2.6.29.6/arch/powerpc/mm/fault.c 2009-07-02 19:41:20.000000000 -0400 1887--- linux-2.6.30.4/arch/powerpc/mm/fault.c 2009-07-24 17:47:51.000000000 -0400
1769+++ linux-2.6.29.6/arch/powerpc/mm/fault.c 2009-07-23 18:40:27.465457938 -0400 1888+++ linux-2.6.30.4/arch/powerpc/mm/fault.c 2009-07-30 09:48:09.905534132 -0400
1770@@ -29,6 +29,10 @@ 1889@@ -29,6 +29,10 @@
1771 #include <linux/module.h> 1890 #include <linux/module.h>
1772 #include <linux/kprobes.h> 1891 #include <linux/kprobes.h>
@@ -2151,7 +2270,7 @@ diff -urNp linux-2.6.29.6/arch/powerpc/mm/fault.c linux-2.6.29.6/arch/powerpc/mm
2151 else 2270 else
2152 is_write = error_code & DSISR_ISSTORE; 2271 is_write = error_code & DSISR_ISSTORE;
2153 #else 2272 #else
2154@@ -339,6 +700,37 @@ bad_area: 2273@@ -327,6 +688,37 @@ bad_area:
2155 bad_area_nosemaphore: 2274 bad_area_nosemaphore:
2156 /* User mode accesses cause a SIGSEGV */ 2275 /* User mode accesses cause a SIGSEGV */
2157 if (user_mode(regs)) { 2276 if (user_mode(regs)) {
@@ -2189,10 +2308,10 @@ diff -urNp linux-2.6.29.6/arch/powerpc/mm/fault.c linux-2.6.29.6/arch/powerpc/mm
2189 _exception(SIGSEGV, regs, code, address); 2308 _exception(SIGSEGV, regs, code, address);
2190 return 0; 2309 return 0;
2191 } 2310 }
2192diff -urNp linux-2.6.29.6/arch/powerpc/mm/mmap.c linux-2.6.29.6/arch/powerpc/mm/mmap.c 2311diff -urNp linux-2.6.30.4/arch/powerpc/mm/mmap_64.c linux-2.6.30.4/arch/powerpc/mm/mmap_64.c
2193--- linux-2.6.29.6/arch/powerpc/mm/mmap.c 2009-07-02 19:41:20.000000000 -0400 2312--- linux-2.6.30.4/arch/powerpc/mm/mmap_64.c 2009-07-24 17:47:51.000000000 -0400
2194+++ linux-2.6.29.6/arch/powerpc/mm/mmap.c 2009-07-23 17:34:32.045826057 -0400 2313+++ linux-2.6.30.4/arch/powerpc/mm/mmap_64.c 2009-07-30 09:48:09.905534132 -0400
2195@@ -75,10 +75,22 @@ void arch_pick_mmap_layout(struct mm_str 2314@@ -99,10 +99,22 @@ void arch_pick_mmap_layout(struct mm_str
2196 */ 2315 */
2197 if (mmap_is_legacy()) { 2316 if (mmap_is_legacy()) {
2198 mm->mmap_base = TASK_UNMAPPED_BASE; 2317 mm->mmap_base = TASK_UNMAPPED_BASE;
@@ -2215,9 +2334,9 @@ diff -urNp linux-2.6.29.6/arch/powerpc/mm/mmap.c linux-2.6.29.6/arch/powerpc/mm/
2215 mm->get_unmapped_area = arch_get_unmapped_area_topdown; 2334 mm->get_unmapped_area = arch_get_unmapped_area_topdown;
2216 mm->unmap_area = arch_unmap_area_topdown; 2335 mm->unmap_area = arch_unmap_area_topdown;
2217 } 2336 }
2218diff -urNp linux-2.6.29.6/arch/powerpc/platforms/cell/spufs/file.c linux-2.6.29.6/arch/powerpc/platforms/cell/spufs/file.c 2337diff -urNp linux-2.6.30.4/arch/powerpc/platforms/cell/spufs/file.c linux-2.6.30.4/arch/powerpc/platforms/cell/spufs/file.c
2219--- linux-2.6.29.6/arch/powerpc/platforms/cell/spufs/file.c 2009-07-02 19:41:20.000000000 -0400 2338--- linux-2.6.30.4/arch/powerpc/platforms/cell/spufs/file.c 2009-07-24 17:47:51.000000000 -0400
2220+++ linux-2.6.29.6/arch/powerpc/platforms/cell/spufs/file.c 2009-07-23 18:40:27.494291214 -0400 2339+++ linux-2.6.30.4/arch/powerpc/platforms/cell/spufs/file.c 2009-07-30 09:48:09.906622773 -0400
2221@@ -147,7 +147,7 @@ static int __fops ## _open(struct inode 2340@@ -147,7 +147,7 @@ static int __fops ## _open(struct inode
2222 __simple_attr_check_format(__fmt, 0ull); \ 2341 __simple_attr_check_format(__fmt, 0ull); \
2223 return spufs_attr_open(inode, file, __get, __set, __fmt); \ 2342 return spufs_attr_open(inode, file, __get, __set, __fmt); \
@@ -2245,7 +2364,7 @@ diff -urNp linux-2.6.29.6/arch/powerpc/platforms/cell/spufs/file.c linux-2.6.29.
2245 .fault = spufs_cntl_mmap_fault, 2364 .fault = spufs_cntl_mmap_fault,
2246 }; 2365 };
2247 2366
2248@@ -1141,7 +1141,7 @@ spufs_signal1_mmap_fault(struct vm_area_ 2367@@ -1143,7 +1143,7 @@ spufs_signal1_mmap_fault(struct vm_area_
2249 #endif 2368 #endif
2250 } 2369 }
2251 2370
@@ -2254,7 +2373,7 @@ diff -urNp linux-2.6.29.6/arch/powerpc/platforms/cell/spufs/file.c linux-2.6.29.
2254 .fault = spufs_signal1_mmap_fault, 2373 .fault = spufs_signal1_mmap_fault,
2255 }; 2374 };
2256 2375
2257@@ -1277,7 +1277,7 @@ spufs_signal2_mmap_fault(struct vm_area_ 2376@@ -1279,7 +1279,7 @@ spufs_signal2_mmap_fault(struct vm_area_
2258 #endif 2377 #endif
2259 } 2378 }
2260 2379
@@ -2263,7 +2382,7 @@ diff -urNp linux-2.6.29.6/arch/powerpc/platforms/cell/spufs/file.c linux-2.6.29.
2263 .fault = spufs_signal2_mmap_fault, 2382 .fault = spufs_signal2_mmap_fault,
2264 }; 2383 };
2265 2384
2266@@ -1395,7 +1395,7 @@ spufs_mss_mmap_fault(struct vm_area_stru 2385@@ -1397,7 +1397,7 @@ spufs_mss_mmap_fault(struct vm_area_stru
2267 return spufs_ps_fault(vma, vmf, 0x0000, SPUFS_MSS_MAP_SIZE); 2386 return spufs_ps_fault(vma, vmf, 0x0000, SPUFS_MSS_MAP_SIZE);
2268 } 2387 }
2269 2388
@@ -2272,7 +2391,7 @@ diff -urNp linux-2.6.29.6/arch/powerpc/platforms/cell/spufs/file.c linux-2.6.29.
2272 .fault = spufs_mss_mmap_fault, 2391 .fault = spufs_mss_mmap_fault,
2273 }; 2392 };
2274 2393
2275@@ -1456,7 +1456,7 @@ spufs_psmap_mmap_fault(struct vm_area_st 2394@@ -1458,7 +1458,7 @@ spufs_psmap_mmap_fault(struct vm_area_st
2276 return spufs_ps_fault(vma, vmf, 0x0000, SPUFS_PS_MAP_SIZE); 2395 return spufs_ps_fault(vma, vmf, 0x0000, SPUFS_PS_MAP_SIZE);
2277 } 2396 }
2278 2397
@@ -2281,7 +2400,7 @@ diff -urNp linux-2.6.29.6/arch/powerpc/platforms/cell/spufs/file.c linux-2.6.29.
2281 .fault = spufs_psmap_mmap_fault, 2400 .fault = spufs_psmap_mmap_fault,
2282 }; 2401 };
2283 2402
2284@@ -1515,7 +1515,7 @@ spufs_mfc_mmap_fault(struct vm_area_stru 2403@@ -1517,7 +1517,7 @@ spufs_mfc_mmap_fault(struct vm_area_stru
2285 return spufs_ps_fault(vma, vmf, 0x3000, SPUFS_MFC_MAP_SIZE); 2404 return spufs_ps_fault(vma, vmf, 0x3000, SPUFS_MFC_MAP_SIZE);
2286 } 2405 }
2287 2406
@@ -2290,9 +2409,21 @@ diff -urNp linux-2.6.29.6/arch/powerpc/platforms/cell/spufs/file.c linux-2.6.29.
2290 .fault = spufs_mfc_mmap_fault, 2409 .fault = spufs_mfc_mmap_fault,
2291 }; 2410 };
2292 2411
2293diff -urNp linux-2.6.29.6/arch/powerpc/platforms/pseries/hvCall_inst.c linux-2.6.29.6/arch/powerpc/platforms/pseries/hvCall_inst.c 2412diff -urNp linux-2.6.30.4/arch/powerpc/platforms/pseries/dtl.c linux-2.6.30.4/arch/powerpc/platforms/pseries/dtl.c
2294--- linux-2.6.29.6/arch/powerpc/platforms/pseries/hvCall_inst.c 2009-07-02 19:41:20.000000000 -0400 2413--- linux-2.6.30.4/arch/powerpc/platforms/pseries/dtl.c 2009-07-24 17:47:51.000000000 -0400
2295+++ linux-2.6.29.6/arch/powerpc/platforms/pseries/hvCall_inst.c 2009-07-23 18:40:27.495305970 -0400 2414+++ linux-2.6.30.4/arch/powerpc/platforms/pseries/dtl.c 2009-07-30 12:06:52.084821916 -0400
2415@@ -209,7 +209,7 @@ static ssize_t dtl_file_read(struct file
2416 return n_read * sizeof(struct dtl_entry);
2417 }
2418
2419-static struct file_operations dtl_fops = {
2420+static const struct file_operations dtl_fops = {
2421 .open = dtl_file_open,
2422 .release = dtl_file_release,
2423 .read = dtl_file_read,
2424diff -urNp linux-2.6.30.4/arch/powerpc/platforms/pseries/hvCall_inst.c linux-2.6.30.4/arch/powerpc/platforms/pseries/hvCall_inst.c
2425--- linux-2.6.30.4/arch/powerpc/platforms/pseries/hvCall_inst.c 2009-07-24 17:47:51.000000000 -0400
2426+++ linux-2.6.30.4/arch/powerpc/platforms/pseries/hvCall_inst.c 2009-07-30 09:48:09.906622773 -0400
2296@@ -71,7 +71,7 @@ static int hc_show(struct seq_file *m, v 2427@@ -71,7 +71,7 @@ static int hc_show(struct seq_file *m, v
2297 return 0; 2428 return 0;
2298 } 2429 }
@@ -2302,9 +2433,9 @@ diff -urNp linux-2.6.29.6/arch/powerpc/platforms/pseries/hvCall_inst.c linux-2.6
2302 .start = hc_start, 2433 .start = hc_start,
2303 .next = hc_next, 2434 .next = hc_next,
2304 .stop = hc_stop, 2435 .stop = hc_stop,
2305diff -urNp linux-2.6.29.6/arch/s390/hypfs/inode.c linux-2.6.29.6/arch/s390/hypfs/inode.c 2436diff -urNp linux-2.6.30.4/arch/s390/hypfs/inode.c linux-2.6.30.4/arch/s390/hypfs/inode.c
2306--- linux-2.6.29.6/arch/s390/hypfs/inode.c 2009-07-02 19:41:20.000000000 -0400 2437--- linux-2.6.30.4/arch/s390/hypfs/inode.c 2009-07-24 17:47:51.000000000 -0400
2307+++ linux-2.6.29.6/arch/s390/hypfs/inode.c 2009-07-23 18:40:27.495305970 -0400 2438+++ linux-2.6.30.4/arch/s390/hypfs/inode.c 2009-07-30 09:48:09.907613298 -0400
2308@@ -41,7 +41,7 @@ struct hypfs_sb_info { 2439@@ -41,7 +41,7 @@ struct hypfs_sb_info {
2309 2440
2310 static const struct file_operations hypfs_file_ops; 2441 static const struct file_operations hypfs_file_ops;
@@ -2323,9 +2454,9 @@ diff -urNp linux-2.6.29.6/arch/s390/hypfs/inode.c linux-2.6.29.6/arch/s390/hypfs
2323 .statfs = simple_statfs, 2454 .statfs = simple_statfs,
2324 .drop_inode = hypfs_drop_inode, 2455 .drop_inode = hypfs_drop_inode,
2325 .show_options = hypfs_show_options, 2456 .show_options = hypfs_show_options,
2326diff -urNp linux-2.6.29.6/arch/s390/include/asm/atomic.h linux-2.6.29.6/arch/s390/include/asm/atomic.h 2457diff -urNp linux-2.6.30.4/arch/s390/include/asm/atomic.h linux-2.6.30.4/arch/s390/include/asm/atomic.h
2327--- linux-2.6.29.6/arch/s390/include/asm/atomic.h 2009-07-02 19:41:20.000000000 -0400 2458--- linux-2.6.30.4/arch/s390/include/asm/atomic.h 2009-07-24 17:47:51.000000000 -0400
2328+++ linux-2.6.29.6/arch/s390/include/asm/atomic.h 2009-07-23 17:34:32.045826057 -0400 2459+++ linux-2.6.30.4/arch/s390/include/asm/atomic.h 2009-07-30 09:48:09.908552392 -0400
2329@@ -82,8 +82,10 @@ static __inline__ int atomic_add_return( 2460@@ -82,8 +82,10 @@ static __inline__ int atomic_add_return(
2330 return __CS_LOOP(v, i, "ar"); 2461 return __CS_LOOP(v, i, "ar");
2331 } 2462 }
@@ -2345,9 +2476,9 @@ diff -urNp linux-2.6.29.6/arch/s390/include/asm/atomic.h linux-2.6.29.6/arch/s39
2345 #define atomic_sub_and_test(_i, _v) (atomic_sub_return(_i, _v) == 0) 2476 #define atomic_sub_and_test(_i, _v) (atomic_sub_return(_i, _v) == 0)
2346 #define atomic_dec(_v) atomic_sub_return(1, _v) 2477 #define atomic_dec(_v) atomic_sub_return(1, _v)
2347 #define atomic_dec_return(_v) atomic_sub_return(1, _v) 2478 #define atomic_dec_return(_v) atomic_sub_return(1, _v)
2348diff -urNp linux-2.6.29.6/arch/s390/include/asm/kmap_types.h linux-2.6.29.6/arch/s390/include/asm/kmap_types.h 2479diff -urNp linux-2.6.30.4/arch/s390/include/asm/kmap_types.h linux-2.6.30.4/arch/s390/include/asm/kmap_types.h
2349--- linux-2.6.29.6/arch/s390/include/asm/kmap_types.h 2009-07-02 19:41:20.000000000 -0400 2480--- linux-2.6.30.4/arch/s390/include/asm/kmap_types.h 2009-07-24 17:47:51.000000000 -0400
2350+++ linux-2.6.29.6/arch/s390/include/asm/kmap_types.h 2009-07-23 17:34:32.045826057 -0400 2481+++ linux-2.6.30.4/arch/s390/include/asm/kmap_types.h 2009-07-30 09:48:09.908552392 -0400
2351@@ -16,6 +16,7 @@ enum km_type { 2482@@ -16,6 +16,7 @@ enum km_type {
2352 KM_IRQ1, 2483 KM_IRQ1,
2353 KM_SOFTIRQ0, 2484 KM_SOFTIRQ0,
@@ -2356,21 +2487,44 @@ diff -urNp linux-2.6.29.6/arch/s390/include/asm/kmap_types.h linux-2.6.29.6/arch
2356 KM_TYPE_NR 2487 KM_TYPE_NR
2357 }; 2488 };
2358 2489
2359diff -urNp linux-2.6.29.6/arch/s390/include/asm/uaccess.h linux-2.6.29.6/arch/s390/include/asm/uaccess.h 2490diff -urNp linux-2.6.30.4/arch/s390/include/asm/uaccess.h linux-2.6.30.4/arch/s390/include/asm/uaccess.h
2360--- linux-2.6.29.6/arch/s390/include/asm/uaccess.h 2009-07-02 19:41:20.000000000 -0400 2491--- linux-2.6.30.4/arch/s390/include/asm/uaccess.h 2009-07-24 17:47:51.000000000 -0400
2361+++ linux-2.6.29.6/arch/s390/include/asm/uaccess.h 2009-07-23 17:34:32.045826057 -0400 2492+++ linux-2.6.30.4/arch/s390/include/asm/uaccess.h 2009-07-30 09:48:09.908552392 -0400
2362@@ -285,7 +285,7 @@ copy_from_user(void *to, const void __us 2493@@ -232,6 +232,10 @@ static inline unsigned long __must_check
2494 copy_to_user(void __user *to, const void *from, unsigned long n)
2495 {
2496 might_sleep();
2497+
2498+ if ((long)n < 0)
2499+ return n;
2500+
2501 if (access_ok(VERIFY_WRITE, to, n))
2502 n = __copy_to_user(to, from, n);
2503 return n;
2504@@ -257,6 +261,9 @@ copy_to_user(void __user *to, const void
2505 static inline unsigned long __must_check
2506 __copy_from_user(void *to, const void __user *from, unsigned long n)
2507 {
2508+ if ((long)n < 0)
2509+ return n;
2510+
2511 if (__builtin_constant_p(n) && (n <= 256))
2512 return uaccess.copy_from_user_small(n, from, to);
2513 else
2514@@ -283,6 +290,10 @@ static inline unsigned long __must_check
2515 copy_from_user(void *to, const void __user *from, unsigned long n)
2516 {
2363 might_sleep(); 2517 might_sleep();
2518+
2519+ if ((long)n < 0)
2520+ return n;
2521+
2364 if (access_ok(VERIFY_READ, from, n)) 2522 if (access_ok(VERIFY_READ, from, n))
2365 n = __copy_from_user(to, from, n); 2523 n = __copy_from_user(to, from, n);
2366- else 2524 else
2367+ else if ((long)n > 0) 2525diff -urNp linux-2.6.30.4/arch/s390/kernel/module.c linux-2.6.30.4/arch/s390/kernel/module.c
2368 memset(to, 0, n); 2526--- linux-2.6.30.4/arch/s390/kernel/module.c 2009-07-24 17:47:51.000000000 -0400
2369 return n; 2527+++ linux-2.6.30.4/arch/s390/kernel/module.c 2009-07-30 09:48:09.908552392 -0400
2370 }
2371diff -urNp linux-2.6.29.6/arch/s390/kernel/module.c linux-2.6.29.6/arch/s390/kernel/module.c
2372--- linux-2.6.29.6/arch/s390/kernel/module.c 2009-07-02 19:41:20.000000000 -0400
2373+++ linux-2.6.29.6/arch/s390/kernel/module.c 2009-07-23 17:34:32.045826057 -0400
2374@@ -166,11 +166,11 @@ module_frob_arch_sections(Elf_Ehdr *hdr, 2528@@ -166,11 +166,11 @@ module_frob_arch_sections(Elf_Ehdr *hdr,
2375 2529
2376 /* Increase core size by size of got & plt and set start 2530 /* Increase core size by size of got & plt and set start
@@ -2415,16 +2569,16 @@ diff -urNp linux-2.6.29.6/arch/s390/kernel/module.c linux-2.6.29.6/arch/s390/ker
2415 info->plt_offset; 2569 info->plt_offset;
2416 #ifndef CONFIG_64BIT 2570 #ifndef CONFIG_64BIT
2417 ip[0] = 0x0d105810; /* basr 1,0; l 1,6(1); br 1 */ 2571 ip[0] = 0x0d105810; /* basr 1,0; l 1,6(1); br 1 */
2418@@ -316,7 +316,7 @@ apply_rela(Elf_Rela *rela, Elf_Addr base 2572@@ -319,7 +319,7 @@ apply_rela(Elf_Rela *rela, Elf_Addr base
2419 val = me->arch.plt_offset - me->arch.got_offset + 2573 val - loc + 0xffffUL < 0x1ffffeUL) ||
2420 info->plt_offset + rela->r_addend; 2574 (r_type == R_390_PLT32DBL &&
2421 else 2575 val - loc + 0xffffffffULL < 0x1fffffffeULL)))
2422- val = (Elf_Addr) me->module_core + 2576- val = (Elf_Addr) me->module_core +
2423+ val = (Elf_Addr) me->module_core_rx + 2577+ val = (Elf_Addr) me->module_core_rx +
2424 me->arch.plt_offset + info->plt_offset + 2578 me->arch.plt_offset +
2425 rela->r_addend - loc; 2579 info->plt_offset;
2426 if (r_type == R_390_PLT16DBL) 2580 val += rela->r_addend - loc;
2427@@ -336,7 +336,7 @@ apply_rela(Elf_Rela *rela, Elf_Addr base 2581@@ -341,7 +341,7 @@ apply_rela(Elf_Rela *rela, Elf_Addr base
2428 case R_390_GOTOFF32: /* 32 bit offset to GOT. */ 2582 case R_390_GOTOFF32: /* 32 bit offset to GOT. */
2429 case R_390_GOTOFF64: /* 64 bit offset to GOT. */ 2583 case R_390_GOTOFF64: /* 64 bit offset to GOT. */
2430 val = val + rela->r_addend - 2584 val = val + rela->r_addend -
@@ -2433,7 +2587,7 @@ diff -urNp linux-2.6.29.6/arch/s390/kernel/module.c linux-2.6.29.6/arch/s390/ker
2433 if (r_type == R_390_GOTOFF16) 2587 if (r_type == R_390_GOTOFF16)
2434 *(unsigned short *) loc = val; 2588 *(unsigned short *) loc = val;
2435 else if (r_type == R_390_GOTOFF32) 2589 else if (r_type == R_390_GOTOFF32)
2436@@ -346,7 +346,7 @@ apply_rela(Elf_Rela *rela, Elf_Addr base 2590@@ -351,7 +351,7 @@ apply_rela(Elf_Rela *rela, Elf_Addr base
2437 break; 2591 break;
2438 case R_390_GOTPC: /* 32 bit PC relative offset to GOT. */ 2592 case R_390_GOTPC: /* 32 bit PC relative offset to GOT. */
2439 case R_390_GOTPCDBL: /* 32 bit PC rel. off. to GOT shifted by 1. */ 2593 case R_390_GOTPCDBL: /* 32 bit PC rel. off. to GOT shifted by 1. */
@@ -2442,9 +2596,9 @@ diff -urNp linux-2.6.29.6/arch/s390/kernel/module.c linux-2.6.29.6/arch/s390/ker
2442 rela->r_addend - loc; 2596 rela->r_addend - loc;
2443 if (r_type == R_390_GOTPC) 2597 if (r_type == R_390_GOTPC)
2444 *(unsigned int *) loc = val; 2598 *(unsigned int *) loc = val;
2445diff -urNp linux-2.6.29.6/arch/sh/include/asm/atomic.h linux-2.6.29.6/arch/sh/include/asm/atomic.h 2599diff -urNp linux-2.6.30.4/arch/sh/include/asm/atomic.h linux-2.6.30.4/arch/sh/include/asm/atomic.h
2446--- linux-2.6.29.6/arch/sh/include/asm/atomic.h 2009-07-02 19:41:20.000000000 -0400 2600--- linux-2.6.30.4/arch/sh/include/asm/atomic.h 2009-07-24 17:47:51.000000000 -0400
2447+++ linux-2.6.29.6/arch/sh/include/asm/atomic.h 2009-07-23 17:34:32.047807130 -0400 2601+++ linux-2.6.30.4/arch/sh/include/asm/atomic.h 2009-07-30 09:48:09.909647067 -0400
2448@@ -43,6 +43,9 @@ 2602@@ -43,6 +43,9 @@
2449 #define atomic_dec_and_test(v) (atomic_sub_return(1, (v)) == 0) 2603 #define atomic_dec_and_test(v) (atomic_sub_return(1, (v)) == 0)
2450 2604
@@ -2455,9 +2609,9 @@ diff -urNp linux-2.6.29.6/arch/sh/include/asm/atomic.h linux-2.6.29.6/arch/sh/in
2455 #define atomic_dec(v) atomic_sub(1,(v)) 2609 #define atomic_dec(v) atomic_sub(1,(v))
2456 2610
2457 #ifndef CONFIG_GUSA_RB 2611 #ifndef CONFIG_GUSA_RB
2458diff -urNp linux-2.6.29.6/arch/sh/include/asm/kmap_types.h linux-2.6.29.6/arch/sh/include/asm/kmap_types.h 2612diff -urNp linux-2.6.30.4/arch/sh/include/asm/kmap_types.h linux-2.6.30.4/arch/sh/include/asm/kmap_types.h
2459--- linux-2.6.29.6/arch/sh/include/asm/kmap_types.h 2009-07-02 19:41:20.000000000 -0400 2613--- linux-2.6.30.4/arch/sh/include/asm/kmap_types.h 2009-07-24 17:47:51.000000000 -0400
2460+++ linux-2.6.29.6/arch/sh/include/asm/kmap_types.h 2009-07-23 17:34:32.047807130 -0400 2614+++ linux-2.6.30.4/arch/sh/include/asm/kmap_types.h 2009-07-30 09:48:09.909647067 -0400
2461@@ -24,7 +24,8 @@ D(9) KM_IRQ0, 2615@@ -24,7 +24,8 @@ D(9) KM_IRQ0,
2462 D(10) KM_IRQ1, 2616 D(10) KM_IRQ1,
2463 D(11) KM_SOFTIRQ0, 2617 D(11) KM_SOFTIRQ0,
@@ -2468,10 +2622,10 @@ diff -urNp linux-2.6.29.6/arch/sh/include/asm/kmap_types.h linux-2.6.29.6/arch/s
2468 }; 2622 };
2469 2623
2470 #undef D 2624 #undef D
2471diff -urNp linux-2.6.29.6/arch/sparc/include/asm/atomic_32.h linux-2.6.29.6/arch/sparc/include/asm/atomic_32.h 2625diff -urNp linux-2.6.30.4/arch/sparc/include/asm/atomic_32.h linux-2.6.30.4/arch/sparc/include/asm/atomic_32.h
2472--- linux-2.6.29.6/arch/sparc/include/asm/atomic_32.h 2009-07-02 19:41:20.000000000 -0400 2626--- linux-2.6.30.4/arch/sparc/include/asm/atomic_32.h 2009-07-24 17:47:51.000000000 -0400
2473+++ linux-2.6.29.6/arch/sparc/include/asm/atomic_32.h 2009-07-23 17:34:32.047807130 -0400 2627+++ linux-2.6.30.4/arch/sparc/include/asm/atomic_32.h 2009-07-30 09:48:09.910522181 -0400
2474@@ -26,8 +26,11 @@ extern void atomic_set(atomic_t *, int); 2628@@ -28,8 +28,11 @@ extern void atomic_set(atomic_t *, int);
2475 #define atomic_read(v) ((v)->counter) 2629 #define atomic_read(v) ((v)->counter)
2476 2630
2477 #define atomic_add(i, v) ((void)__atomic_add_return( (int)(i), (v))) 2631 #define atomic_add(i, v) ((void)__atomic_add_return( (int)(i), (v)))
@@ -2483,9 +2637,9 @@ diff -urNp linux-2.6.29.6/arch/sparc/include/asm/atomic_32.h linux-2.6.29.6/arch
2483 #define atomic_dec(v) ((void)__atomic_add_return( -1, (v))) 2637 #define atomic_dec(v) ((void)__atomic_add_return( -1, (v)))
2484 2638
2485 #define atomic_add_return(i, v) (__atomic_add_return( (int)(i), (v))) 2639 #define atomic_add_return(i, v) (__atomic_add_return( (int)(i), (v)))
2486diff -urNp linux-2.6.29.6/arch/sparc/include/asm/atomic_64.h linux-2.6.29.6/arch/sparc/include/asm/atomic_64.h 2640diff -urNp linux-2.6.30.4/arch/sparc/include/asm/atomic_64.h linux-2.6.30.4/arch/sparc/include/asm/atomic_64.h
2487--- linux-2.6.29.6/arch/sparc/include/asm/atomic_64.h 2009-07-02 19:41:20.000000000 -0400 2641--- linux-2.6.30.4/arch/sparc/include/asm/atomic_64.h 2009-07-24 17:47:51.000000000 -0400
2488+++ linux-2.6.29.6/arch/sparc/include/asm/atomic_64.h 2009-07-23 17:34:32.047807130 -0400 2642+++ linux-2.6.30.4/arch/sparc/include/asm/atomic_64.h 2009-07-30 09:48:09.910522181 -0400
2489@@ -20,8 +20,10 @@ 2643@@ -20,8 +20,10 @@
2490 #define atomic64_set(v, i) (((v)->counter) = i) 2644 #define atomic64_set(v, i) (((v)->counter) = i)
2491 2645
@@ -2505,9 +2659,9 @@ diff -urNp linux-2.6.29.6/arch/sparc/include/asm/atomic_64.h linux-2.6.29.6/arch
2505 #define atomic64_inc(v) atomic64_add(1, v) 2659 #define atomic64_inc(v) atomic64_add(1, v)
2506 2660
2507 #define atomic_dec(v) atomic_sub(1, v) 2661 #define atomic_dec(v) atomic_sub(1, v)
2508diff -urNp linux-2.6.29.6/arch/sparc/include/asm/elf_32.h linux-2.6.29.6/arch/sparc/include/asm/elf_32.h 2662diff -urNp linux-2.6.30.4/arch/sparc/include/asm/elf_32.h linux-2.6.30.4/arch/sparc/include/asm/elf_32.h
2509--- linux-2.6.29.6/arch/sparc/include/asm/elf_32.h 2009-07-02 19:41:20.000000000 -0400 2663--- linux-2.6.30.4/arch/sparc/include/asm/elf_32.h 2009-07-24 17:47:51.000000000 -0400
2510+++ linux-2.6.29.6/arch/sparc/include/asm/elf_32.h 2009-07-23 17:34:32.047807130 -0400 2664+++ linux-2.6.30.4/arch/sparc/include/asm/elf_32.h 2009-07-30 09:48:09.910522181 -0400
2511@@ -116,6 +116,13 @@ typedef struct { 2665@@ -116,6 +116,13 @@ typedef struct {
2512 2666
2513 #define ELF_ET_DYN_BASE (TASK_UNMAPPED_BASE) 2667 #define ELF_ET_DYN_BASE (TASK_UNMAPPED_BASE)
@@ -2522,9 +2676,9 @@ diff -urNp linux-2.6.29.6/arch/sparc/include/asm/elf_32.h linux-2.6.29.6/arch/sp
2522 /* This yields a mask that user programs can use to figure out what 2676 /* This yields a mask that user programs can use to figure out what
2523 instruction set this cpu supports. This can NOT be done in userspace 2677 instruction set this cpu supports. This can NOT be done in userspace
2524 on Sparc. */ 2678 on Sparc. */
2525diff -urNp linux-2.6.29.6/arch/sparc/include/asm/elf_64.h linux-2.6.29.6/arch/sparc/include/asm/elf_64.h 2679diff -urNp linux-2.6.30.4/arch/sparc/include/asm/elf_64.h linux-2.6.30.4/arch/sparc/include/asm/elf_64.h
2526--- linux-2.6.29.6/arch/sparc/include/asm/elf_64.h 2009-07-02 19:41:20.000000000 -0400 2680--- linux-2.6.30.4/arch/sparc/include/asm/elf_64.h 2009-07-24 17:47:51.000000000 -0400
2527+++ linux-2.6.29.6/arch/sparc/include/asm/elf_64.h 2009-07-23 17:34:32.047807130 -0400 2681+++ linux-2.6.30.4/arch/sparc/include/asm/elf_64.h 2009-07-30 09:48:09.910522181 -0400
2528@@ -163,6 +163,12 @@ typedef struct { 2682@@ -163,6 +163,12 @@ typedef struct {
2529 #define ELF_ET_DYN_BASE 0x0000010000000000UL 2683 #define ELF_ET_DYN_BASE 0x0000010000000000UL
2530 #define COMPAT_ELF_ET_DYN_BASE 0x0000000070000000UL 2684 #define COMPAT_ELF_ET_DYN_BASE 0x0000000070000000UL
@@ -2538,9 +2692,9 @@ diff -urNp linux-2.6.29.6/arch/sparc/include/asm/elf_64.h linux-2.6.29.6/arch/sp
2538 2692
2539 /* This yields a mask that user programs can use to figure out what 2693 /* This yields a mask that user programs can use to figure out what
2540 instruction set this cpu supports. */ 2694 instruction set this cpu supports. */
2541diff -urNp linux-2.6.29.6/arch/sparc/include/asm/kmap_types.h linux-2.6.29.6/arch/sparc/include/asm/kmap_types.h 2695diff -urNp linux-2.6.30.4/arch/sparc/include/asm/kmap_types.h linux-2.6.30.4/arch/sparc/include/asm/kmap_types.h
2542--- linux-2.6.29.6/arch/sparc/include/asm/kmap_types.h 2009-07-02 19:41:20.000000000 -0400 2696--- linux-2.6.30.4/arch/sparc/include/asm/kmap_types.h 2009-07-24 17:47:51.000000000 -0400
2543+++ linux-2.6.29.6/arch/sparc/include/asm/kmap_types.h 2009-07-23 17:34:32.048766932 -0400 2697+++ linux-2.6.30.4/arch/sparc/include/asm/kmap_types.h 2009-07-30 09:48:09.910522181 -0400
2544@@ -19,6 +19,7 @@ enum km_type { 2698@@ -19,6 +19,7 @@ enum km_type {
2545 KM_IRQ1, 2699 KM_IRQ1,
2546 KM_SOFTIRQ0, 2700 KM_SOFTIRQ0,
@@ -2549,9 +2703,9 @@ diff -urNp linux-2.6.29.6/arch/sparc/include/asm/kmap_types.h linux-2.6.29.6/arc
2549 KM_TYPE_NR 2703 KM_TYPE_NR
2550 }; 2704 };
2551 2705
2552diff -urNp linux-2.6.29.6/arch/sparc/include/asm/pgtable_32.h linux-2.6.29.6/arch/sparc/include/asm/pgtable_32.h 2706diff -urNp linux-2.6.30.4/arch/sparc/include/asm/pgtable_32.h linux-2.6.30.4/arch/sparc/include/asm/pgtable_32.h
2553--- linux-2.6.29.6/arch/sparc/include/asm/pgtable_32.h 2009-07-02 19:41:20.000000000 -0400 2707--- linux-2.6.30.4/arch/sparc/include/asm/pgtable_32.h 2009-07-24 17:47:51.000000000 -0400
2554+++ linux-2.6.29.6/arch/sparc/include/asm/pgtable_32.h 2009-07-23 17:34:32.048766932 -0400 2708+++ linux-2.6.30.4/arch/sparc/include/asm/pgtable_32.h 2009-07-30 09:48:09.910522181 -0400
2555@@ -43,6 +43,13 @@ BTFIXUPDEF_SIMM13(user_ptrs_per_pgd) 2709@@ -43,6 +43,13 @@ BTFIXUPDEF_SIMM13(user_ptrs_per_pgd)
2556 BTFIXUPDEF_INT(page_none) 2710 BTFIXUPDEF_INT(page_none)
2557 BTFIXUPDEF_INT(page_copy) 2711 BTFIXUPDEF_INT(page_copy)
@@ -2583,9 +2737,9 @@ diff -urNp linux-2.6.29.6/arch/sparc/include/asm/pgtable_32.h linux-2.6.29.6/arc
2583 extern unsigned long page_kernel; 2737 extern unsigned long page_kernel;
2584 2738
2585 #ifdef MODULE 2739 #ifdef MODULE
2586diff -urNp linux-2.6.29.6/arch/sparc/include/asm/pgtsrmmu.h linux-2.6.29.6/arch/sparc/include/asm/pgtsrmmu.h 2740diff -urNp linux-2.6.30.4/arch/sparc/include/asm/pgtsrmmu.h linux-2.6.30.4/arch/sparc/include/asm/pgtsrmmu.h
2587--- linux-2.6.29.6/arch/sparc/include/asm/pgtsrmmu.h 2009-07-02 19:41:20.000000000 -0400 2741--- linux-2.6.30.4/arch/sparc/include/asm/pgtsrmmu.h 2009-07-24 17:47:51.000000000 -0400
2588+++ linux-2.6.29.6/arch/sparc/include/asm/pgtsrmmu.h 2009-07-23 17:34:32.048766932 -0400 2742+++ linux-2.6.30.4/arch/sparc/include/asm/pgtsrmmu.h 2009-07-30 09:48:09.911921584 -0400
2589@@ -115,6 +115,13 @@ 2743@@ -115,6 +115,13 @@
2590 SRMMU_EXEC | SRMMU_REF) 2744 SRMMU_EXEC | SRMMU_REF)
2591 #define SRMMU_PAGE_RDONLY __pgprot(SRMMU_VALID | SRMMU_CACHE | \ 2745 #define SRMMU_PAGE_RDONLY __pgprot(SRMMU_VALID | SRMMU_CACHE | \
@@ -2600,30 +2754,42 @@ diff -urNp linux-2.6.29.6/arch/sparc/include/asm/pgtsrmmu.h linux-2.6.29.6/arch/
2600 #define SRMMU_PAGE_KERNEL __pgprot(SRMMU_VALID | SRMMU_CACHE | SRMMU_PRIV | \ 2754 #define SRMMU_PAGE_KERNEL __pgprot(SRMMU_VALID | SRMMU_CACHE | SRMMU_PRIV | \
2601 SRMMU_DIRTY | SRMMU_REF) 2755 SRMMU_DIRTY | SRMMU_REF)
2602 2756
2603diff -urNp linux-2.6.29.6/arch/sparc/include/asm/uaccess_32.h linux-2.6.29.6/arch/sparc/include/asm/uaccess_32.h 2757diff -urNp linux-2.6.30.4/arch/sparc/include/asm/uaccess_32.h linux-2.6.30.4/arch/sparc/include/asm/uaccess_32.h
2604--- linux-2.6.29.6/arch/sparc/include/asm/uaccess_32.h 2009-07-02 19:41:20.000000000 -0400 2758--- linux-2.6.30.4/arch/sparc/include/asm/uaccess_32.h 2009-07-24 17:47:51.000000000 -0400
2605+++ linux-2.6.29.6/arch/sparc/include/asm/uaccess_32.h 2009-07-23 17:34:32.048766932 -0400 2759+++ linux-2.6.30.4/arch/sparc/include/asm/uaccess_32.h 2009-07-30 09:48:09.911921584 -0400
2606@@ -246,7 +246,7 @@ extern unsigned long __copy_user(void __ 2760@@ -246,6 +246,9 @@ extern unsigned long __copy_user(void __
2607 2761
2608 static inline unsigned long copy_to_user(void __user *to, const void *from, unsigned long n) 2762 static inline unsigned long copy_to_user(void __user *to, const void *from, unsigned long n)
2609 { 2763 {
2610- if (n && __access_ok((unsigned long) to, n)) 2764+ if ((long)n < 0)
2611+ if (((int)n > 0) && __access_ok((unsigned long) to, n)) 2765+ return n;
2766+
2767 if (n && __access_ok((unsigned long) to, n))
2612 return __copy_user(to, (__force void __user *) from, n); 2768 return __copy_user(to, (__force void __user *) from, n);
2613 else 2769 else
2614 return n; 2770@@ -259,6 +262,9 @@ static inline unsigned long __copy_to_us
2615@@ -259,7 +259,7 @@ static inline unsigned long __copy_to_us
2616 2771
2617 static inline unsigned long copy_from_user(void *to, const void __user *from, unsigned long n) 2772 static inline unsigned long copy_from_user(void *to, const void __user *from, unsigned long n)
2618 { 2773 {
2619- if (n && __access_ok((unsigned long) from, n)) 2774+ if ((long)n < 0)
2620+ if (((int)n > 0) && __access_ok((unsigned long) from, n)) 2775+ return n;
2776+
2777 if (n && __access_ok((unsigned long) from, n))
2621 return __copy_user((__force void __user *) to, from, n); 2778 return __copy_user((__force void __user *) to, from, n);
2622 else 2779 else
2623 return n; 2780@@ -267,6 +273,9 @@ static inline unsigned long copy_from_us
2624diff -urNp linux-2.6.29.6/arch/sparc/include/asm/uaccess_64.h linux-2.6.29.6/arch/sparc/include/asm/uaccess_64.h 2781
2625--- linux-2.6.29.6/arch/sparc/include/asm/uaccess_64.h 2009-07-02 19:41:20.000000000 -0400 2782 static inline unsigned long __copy_from_user(void *to, const void __user *from, unsigned long n)
2626+++ linux-2.6.29.6/arch/sparc/include/asm/uaccess_64.h 2009-07-23 17:34:32.048766932 -0400 2783 {
2784+ if ((long)n < 0)
2785+ return n;
2786+
2787 return __copy_user((__force void __user *) to, from, n);
2788 }
2789
2790diff -urNp linux-2.6.30.4/arch/sparc/include/asm/uaccess_64.h linux-2.6.30.4/arch/sparc/include/asm/uaccess_64.h
2791--- linux-2.6.30.4/arch/sparc/include/asm/uaccess_64.h 2009-07-24 17:47:51.000000000 -0400
2792+++ linux-2.6.30.4/arch/sparc/include/asm/uaccess_64.h 2009-07-30 11:10:48.823569054 -0400
2627@@ -212,7 +212,12 @@ extern unsigned long copy_from_user_fixu 2793@@ -212,7 +212,12 @@ extern unsigned long copy_from_user_fixu
2628 static inline unsigned long __must_check 2794 static inline unsigned long __must_check
2629 copy_from_user(void *to, const void __user *from, unsigned long size) 2795 copy_from_user(void *to, const void __user *from, unsigned long size)
@@ -2652,9 +2818,9 @@ diff -urNp linux-2.6.29.6/arch/sparc/include/asm/uaccess_64.h linux-2.6.29.6/arc
2652 2818
2653 if (unlikely(ret)) 2819 if (unlikely(ret))
2654 ret = copy_to_user_fixup(to, from, size); 2820 ret = copy_to_user_fixup(to, from, size);
2655diff -urNp linux-2.6.29.6/arch/sparc/kernel/Makefile linux-2.6.29.6/arch/sparc/kernel/Makefile 2821diff -urNp linux-2.6.30.4/arch/sparc/kernel/Makefile linux-2.6.30.4/arch/sparc/kernel/Makefile
2656--- linux-2.6.29.6/arch/sparc/kernel/Makefile 2009-07-02 19:41:20.000000000 -0400 2822--- linux-2.6.30.4/arch/sparc/kernel/Makefile 2009-07-24 17:47:51.000000000 -0400
2657+++ linux-2.6.29.6/arch/sparc/kernel/Makefile 2009-07-23 17:34:32.049741165 -0400 2823+++ linux-2.6.30.4/arch/sparc/kernel/Makefile 2009-07-30 09:48:09.911921584 -0400
2658@@ -3,7 +3,7 @@ 2824@@ -3,7 +3,7 @@
2659 # 2825 #
2660 2826
@@ -2664,9 +2830,9 @@ diff -urNp linux-2.6.29.6/arch/sparc/kernel/Makefile linux-2.6.29.6/arch/sparc/k
2664 2830
2665 extra-y := head_$(BITS).o 2831 extra-y := head_$(BITS).o
2666 extra-y += init_task.o 2832 extra-y += init_task.o
2667diff -urNp linux-2.6.29.6/arch/sparc/kernel/sys_sparc_32.c linux-2.6.29.6/arch/sparc/kernel/sys_sparc_32.c 2833diff -urNp linux-2.6.30.4/arch/sparc/kernel/sys_sparc_32.c linux-2.6.30.4/arch/sparc/kernel/sys_sparc_32.c
2668--- linux-2.6.29.6/arch/sparc/kernel/sys_sparc_32.c 2009-07-02 19:41:20.000000000 -0400 2834--- linux-2.6.30.4/arch/sparc/kernel/sys_sparc_32.c 2009-07-24 17:47:51.000000000 -0400
2669+++ linux-2.6.29.6/arch/sparc/kernel/sys_sparc_32.c 2009-07-23 17:34:32.049741165 -0400 2835+++ linux-2.6.30.4/arch/sparc/kernel/sys_sparc_32.c 2009-07-30 09:48:09.912653453 -0400
2670@@ -56,7 +56,7 @@ unsigned long arch_get_unmapped_area(str 2836@@ -56,7 +56,7 @@ unsigned long arch_get_unmapped_area(str
2671 if (ARCH_SUN4C && len > 0x20000000) 2837 if (ARCH_SUN4C && len > 0x20000000)
2672 return -ENOMEM; 2838 return -ENOMEM;
@@ -2676,9 +2842,9 @@ diff -urNp linux-2.6.29.6/arch/sparc/kernel/sys_sparc_32.c linux-2.6.29.6/arch/s
2676 2842
2677 if (flags & MAP_SHARED) 2843 if (flags & MAP_SHARED)
2678 addr = COLOUR_ALIGN(addr); 2844 addr = COLOUR_ALIGN(addr);
2679diff -urNp linux-2.6.29.6/arch/sparc/kernel/sys_sparc_64.c linux-2.6.29.6/arch/sparc/kernel/sys_sparc_64.c 2845diff -urNp linux-2.6.30.4/arch/sparc/kernel/sys_sparc_64.c linux-2.6.30.4/arch/sparc/kernel/sys_sparc_64.c
2680--- linux-2.6.29.6/arch/sparc/kernel/sys_sparc_64.c 2009-07-02 19:41:20.000000000 -0400 2846--- linux-2.6.30.4/arch/sparc/kernel/sys_sparc_64.c 2009-07-24 17:47:51.000000000 -0400
2681+++ linux-2.6.29.6/arch/sparc/kernel/sys_sparc_64.c 2009-07-23 17:34:32.049741165 -0400 2847+++ linux-2.6.30.4/arch/sparc/kernel/sys_sparc_64.c 2009-07-30 09:48:09.912653453 -0400
2682@@ -125,7 +125,7 @@ unsigned long arch_get_unmapped_area(str 2848@@ -125,7 +125,7 @@ unsigned long arch_get_unmapped_area(str
2683 /* We do not accept a shared mapping if it would violate 2849 /* We do not accept a shared mapping if it would violate
2684 * cache aliasing constraints. 2850 * cache aliasing constraints.
@@ -2757,9 +2923,9 @@ diff -urNp linux-2.6.29.6/arch/sparc/kernel/sys_sparc_64.c linux-2.6.29.6/arch/s
2757 mm->get_unmapped_area = arch_get_unmapped_area_topdown; 2923 mm->get_unmapped_area = arch_get_unmapped_area_topdown;
2758 mm->unmap_area = arch_unmap_area_topdown; 2924 mm->unmap_area = arch_unmap_area_topdown;
2759 } 2925 }
2760diff -urNp linux-2.6.29.6/arch/sparc/Makefile linux-2.6.29.6/arch/sparc/Makefile 2926diff -urNp linux-2.6.30.4/arch/sparc/Makefile linux-2.6.30.4/arch/sparc/Makefile
2761--- linux-2.6.29.6/arch/sparc/Makefile 2009-07-02 19:41:20.000000000 -0400 2927--- linux-2.6.30.4/arch/sparc/Makefile 2009-07-24 17:47:51.000000000 -0400
2762+++ linux-2.6.29.6/arch/sparc/Makefile 2009-07-23 17:34:32.049741165 -0400 2928+++ linux-2.6.30.4/arch/sparc/Makefile 2009-07-30 11:10:48.852135371 -0400
2763@@ -81,7 +81,7 @@ drivers-$(CONFIG_OPROFILE) += arch/sparc 2929@@ -81,7 +81,7 @@ drivers-$(CONFIG_OPROFILE) += arch/sparc
2764 # Export what is needed by arch/sparc/boot/Makefile 2930 # Export what is needed by arch/sparc/boot/Makefile
2765 export VMLINUX_INIT VMLINUX_MAIN 2931 export VMLINUX_INIT VMLINUX_MAIN
@@ -2769,9 +2935,9 @@ diff -urNp linux-2.6.29.6/arch/sparc/Makefile linux-2.6.29.6/arch/sparc/Makefile
2769 VMLINUX_MAIN += $(patsubst %/, %/lib.a, $(libs-y)) $(libs-y) 2935 VMLINUX_MAIN += $(patsubst %/, %/lib.a, $(libs-y)) $(libs-y)
2770 VMLINUX_MAIN += $(drivers-y) $(net-y) 2936 VMLINUX_MAIN += $(drivers-y) $(net-y)
2771 2937
2772diff -urNp linux-2.6.29.6/arch/sparc/mm/fault_32.c linux-2.6.29.6/arch/sparc/mm/fault_32.c 2938diff -urNp linux-2.6.30.4/arch/sparc/mm/fault_32.c linux-2.6.30.4/arch/sparc/mm/fault_32.c
2773--- linux-2.6.29.6/arch/sparc/mm/fault_32.c 2009-07-02 19:41:20.000000000 -0400 2939--- linux-2.6.30.4/arch/sparc/mm/fault_32.c 2009-07-24 17:47:51.000000000 -0400
2774+++ linux-2.6.29.6/arch/sparc/mm/fault_32.c 2009-07-23 18:40:27.465457938 -0400 2940+++ linux-2.6.30.4/arch/sparc/mm/fault_32.c 2009-07-30 09:48:09.913853340 -0400
2775@@ -21,6 +21,9 @@ 2941@@ -21,6 +21,9 @@
2776 #include <linux/interrupt.h> 2942 #include <linux/interrupt.h>
2777 #include <linux/module.h> 2943 #include <linux/module.h>
@@ -3057,9 +3223,9 @@ diff -urNp linux-2.6.29.6/arch/sparc/mm/fault_32.c linux-2.6.29.6/arch/sparc/mm/
3057 /* Allow reads even for write-only mappings */ 3223 /* Allow reads even for write-only mappings */
3058 if(!(vma->vm_flags & (VM_READ | VM_EXEC))) 3224 if(!(vma->vm_flags & (VM_READ | VM_EXEC)))
3059 goto bad_area; 3225 goto bad_area;
3060diff -urNp linux-2.6.29.6/arch/sparc/mm/fault_64.c linux-2.6.29.6/arch/sparc/mm/fault_64.c 3226diff -urNp linux-2.6.30.4/arch/sparc/mm/fault_64.c linux-2.6.30.4/arch/sparc/mm/fault_64.c
3061--- linux-2.6.29.6/arch/sparc/mm/fault_64.c 2009-07-02 19:41:20.000000000 -0400 3227--- linux-2.6.30.4/arch/sparc/mm/fault_64.c 2009-07-24 17:47:51.000000000 -0400
3062+++ linux-2.6.29.6/arch/sparc/mm/fault_64.c 2009-07-23 18:40:27.466429820 -0400 3228+++ linux-2.6.30.4/arch/sparc/mm/fault_64.c 2009-07-30 09:48:09.913853340 -0400
3063@@ -20,6 +20,9 @@ 3229@@ -20,6 +20,9 @@
3064 #include <linux/kprobes.h> 3230 #include <linux/kprobes.h>
3065 #include <linux/kdebug.h> 3231 #include <linux/kdebug.h>
@@ -3468,9 +3634,9 @@ diff -urNp linux-2.6.29.6/arch/sparc/mm/fault_64.c linux-2.6.29.6/arch/sparc/mm/
3468 /* Pure DTLB misses do not tell us whether the fault causing 3634 /* Pure DTLB misses do not tell us whether the fault causing
3469 * load/store/atomic was a write or not, it only says that there 3635 * load/store/atomic was a write or not, it only says that there
3470 * was no match. So in such a case we (carefully) read the 3636 * was no match. So in such a case we (carefully) read the
3471diff -urNp linux-2.6.29.6/arch/sparc/mm/init_32.c linux-2.6.29.6/arch/sparc/mm/init_32.c 3637diff -urNp linux-2.6.30.4/arch/sparc/mm/init_32.c linux-2.6.30.4/arch/sparc/mm/init_32.c
3472--- linux-2.6.29.6/arch/sparc/mm/init_32.c 2009-07-02 19:41:20.000000000 -0400 3638--- linux-2.6.30.4/arch/sparc/mm/init_32.c 2009-07-24 17:47:51.000000000 -0400
3473+++ linux-2.6.29.6/arch/sparc/mm/init_32.c 2009-07-23 17:34:32.050703291 -0400 3639+++ linux-2.6.30.4/arch/sparc/mm/init_32.c 2009-07-30 09:48:09.914627627 -0400
3474@@ -316,6 +316,9 @@ extern void device_scan(void); 3640@@ -316,6 +316,9 @@ extern void device_scan(void);
3475 pgprot_t PAGE_SHARED __read_mostly; 3641 pgprot_t PAGE_SHARED __read_mostly;
3476 EXPORT_SYMBOL(PAGE_SHARED); 3642 EXPORT_SYMBOL(PAGE_SHARED);
@@ -3505,9 +3671,9 @@ diff -urNp linux-2.6.29.6/arch/sparc/mm/init_32.c linux-2.6.29.6/arch/sparc/mm/i
3505 protection_map[12] = PAGE_READONLY; 3671 protection_map[12] = PAGE_READONLY;
3506 protection_map[13] = PAGE_READONLY; 3672 protection_map[13] = PAGE_READONLY;
3507 protection_map[14] = PAGE_SHARED; 3673 protection_map[14] = PAGE_SHARED;
3508diff -urNp linux-2.6.29.6/arch/sparc/mm/Makefile linux-2.6.29.6/arch/sparc/mm/Makefile 3674diff -urNp linux-2.6.30.4/arch/sparc/mm/Makefile linux-2.6.30.4/arch/sparc/mm/Makefile
3509--- linux-2.6.29.6/arch/sparc/mm/Makefile 2009-07-02 19:41:20.000000000 -0400 3675--- linux-2.6.30.4/arch/sparc/mm/Makefile 2009-07-24 17:47:51.000000000 -0400
3510+++ linux-2.6.29.6/arch/sparc/mm/Makefile 2009-07-23 17:34:32.050703291 -0400 3676+++ linux-2.6.30.4/arch/sparc/mm/Makefile 2009-07-30 09:48:09.912653453 -0400
3511@@ -2,7 +2,7 @@ 3677@@ -2,7 +2,7 @@
3512 # 3678 #
3513 3679
@@ -3517,9 +3683,9 @@ diff -urNp linux-2.6.29.6/arch/sparc/mm/Makefile linux-2.6.29.6/arch/sparc/mm/Ma
3517 3683
3518 obj-$(CONFIG_SPARC64) += ultra.o tlb.o tsb.o 3684 obj-$(CONFIG_SPARC64) += ultra.o tlb.o tsb.o
3519 obj-y += fault_$(BITS).o 3685 obj-y += fault_$(BITS).o
3520diff -urNp linux-2.6.29.6/arch/sparc/mm/srmmu.c linux-2.6.29.6/arch/sparc/mm/srmmu.c 3686diff -urNp linux-2.6.30.4/arch/sparc/mm/srmmu.c linux-2.6.30.4/arch/sparc/mm/srmmu.c
3521--- linux-2.6.29.6/arch/sparc/mm/srmmu.c 2009-07-02 19:41:20.000000000 -0400 3687--- linux-2.6.30.4/arch/sparc/mm/srmmu.c 2009-07-24 17:47:51.000000000 -0400
3522+++ linux-2.6.29.6/arch/sparc/mm/srmmu.c 2009-07-23 17:34:32.051762759 -0400 3688+++ linux-2.6.30.4/arch/sparc/mm/srmmu.c 2009-07-30 09:48:09.914627627 -0400
3523@@ -2148,6 +2148,13 @@ void __init ld_mmu_srmmu(void) 3689@@ -2148,6 +2148,13 @@ void __init ld_mmu_srmmu(void)
3524 PAGE_SHARED = pgprot_val(SRMMU_PAGE_SHARED); 3690 PAGE_SHARED = pgprot_val(SRMMU_PAGE_SHARED);
3525 BTFIXUPSET_INT(page_copy, pgprot_val(SRMMU_PAGE_COPY)); 3691 BTFIXUPSET_INT(page_copy, pgprot_val(SRMMU_PAGE_COPY));
@@ -3534,9 +3700,9 @@ diff -urNp linux-2.6.29.6/arch/sparc/mm/srmmu.c linux-2.6.29.6/arch/sparc/mm/srm
3534 BTFIXUPSET_INT(page_kernel, pgprot_val(SRMMU_PAGE_KERNEL)); 3700 BTFIXUPSET_INT(page_kernel, pgprot_val(SRMMU_PAGE_KERNEL));
3535 page_kernel = pgprot_val(SRMMU_PAGE_KERNEL); 3701 page_kernel = pgprot_val(SRMMU_PAGE_KERNEL);
3536 3702
3537diff -urNp linux-2.6.29.6/arch/um/include/asm/kmap_types.h linux-2.6.29.6/arch/um/include/asm/kmap_types.h 3703diff -urNp linux-2.6.30.4/arch/um/include/asm/kmap_types.h linux-2.6.30.4/arch/um/include/asm/kmap_types.h
3538--- linux-2.6.29.6/arch/um/include/asm/kmap_types.h 2009-07-02 19:41:20.000000000 -0400 3704--- linux-2.6.30.4/arch/um/include/asm/kmap_types.h 2009-07-24 17:47:51.000000000 -0400
3539+++ linux-2.6.29.6/arch/um/include/asm/kmap_types.h 2009-07-23 17:34:32.051762759 -0400 3705+++ linux-2.6.30.4/arch/um/include/asm/kmap_types.h 2009-07-30 09:48:09.914627627 -0400
3540@@ -23,6 +23,7 @@ enum km_type { 3706@@ -23,6 +23,7 @@ enum km_type {
3541 KM_IRQ1, 3707 KM_IRQ1,
3542 KM_SOFTIRQ0, 3708 KM_SOFTIRQ0,
@@ -3545,9 +3711,9 @@ diff -urNp linux-2.6.29.6/arch/um/include/asm/kmap_types.h linux-2.6.29.6/arch/u
3545 KM_TYPE_NR 3711 KM_TYPE_NR
3546 }; 3712 };
3547 3713
3548diff -urNp linux-2.6.29.6/arch/um/include/asm/page.h linux-2.6.29.6/arch/um/include/asm/page.h 3714diff -urNp linux-2.6.30.4/arch/um/include/asm/page.h linux-2.6.30.4/arch/um/include/asm/page.h
3549--- linux-2.6.29.6/arch/um/include/asm/page.h 2009-07-02 19:41:20.000000000 -0400 3715--- linux-2.6.30.4/arch/um/include/asm/page.h 2009-07-24 17:47:51.000000000 -0400
3550+++ linux-2.6.29.6/arch/um/include/asm/page.h 2009-07-23 17:34:32.051762759 -0400 3716+++ linux-2.6.30.4/arch/um/include/asm/page.h 2009-07-30 09:48:09.915798567 -0400
3551@@ -14,6 +14,9 @@ 3717@@ -14,6 +14,9 @@
3552 #define PAGE_SIZE (_AC(1, UL) << PAGE_SHIFT) 3718 #define PAGE_SIZE (_AC(1, UL) << PAGE_SHIFT)
3553 #define PAGE_MASK (~(PAGE_SIZE-1)) 3719 #define PAGE_MASK (~(PAGE_SIZE-1))
@@ -3558,9 +3724,9 @@ diff -urNp linux-2.6.29.6/arch/um/include/asm/page.h linux-2.6.29.6/arch/um/incl
3558 #ifndef __ASSEMBLY__ 3724 #ifndef __ASSEMBLY__
3559 3725
3560 struct page; 3726 struct page;
3561diff -urNp linux-2.6.29.6/arch/um/sys-i386/syscalls.c linux-2.6.29.6/arch/um/sys-i386/syscalls.c 3727diff -urNp linux-2.6.30.4/arch/um/sys-i386/syscalls.c linux-2.6.30.4/arch/um/sys-i386/syscalls.c
3562--- linux-2.6.29.6/arch/um/sys-i386/syscalls.c 2009-07-02 19:41:20.000000000 -0400 3728--- linux-2.6.30.4/arch/um/sys-i386/syscalls.c 2009-07-24 17:47:51.000000000 -0400
3563+++ linux-2.6.29.6/arch/um/sys-i386/syscalls.c 2009-07-23 17:34:32.051762759 -0400 3729+++ linux-2.6.30.4/arch/um/sys-i386/syscalls.c 2009-07-30 09:48:09.915798567 -0400
3564@@ -11,6 +11,21 @@ 3730@@ -11,6 +11,21 @@
3565 #include "asm/uaccess.h" 3731 #include "asm/uaccess.h"
3566 #include "asm/unistd.h" 3732 #include "asm/unistd.h"
@@ -3583,9 +3749,9 @@ diff -urNp linux-2.6.29.6/arch/um/sys-i386/syscalls.c linux-2.6.29.6/arch/um/sys
3583 /* 3749 /*
3584 * Perform the select(nd, in, out, ex, tv) and mmap() system 3750 * Perform the select(nd, in, out, ex, tv) and mmap() system
3585 * calls. Linux/i386 didn't use to be able to handle more than 3751 * calls. Linux/i386 didn't use to be able to handle more than
3586diff -urNp linux-2.6.29.6/arch/x86/boot/bitops.h linux-2.6.29.6/arch/x86/boot/bitops.h 3752diff -urNp linux-2.6.30.4/arch/x86/boot/bitops.h linux-2.6.30.4/arch/x86/boot/bitops.h
3587--- linux-2.6.29.6/arch/x86/boot/bitops.h 2009-07-02 19:41:20.000000000 -0400 3753--- linux-2.6.30.4/arch/x86/boot/bitops.h 2009-07-24 17:47:51.000000000 -0400
3588+++ linux-2.6.29.6/arch/x86/boot/bitops.h 2009-07-23 17:34:32.052702854 -0400 3754+++ linux-2.6.30.4/arch/x86/boot/bitops.h 2009-07-30 09:48:09.917626356 -0400
3589@@ -26,7 +26,7 @@ static inline int variable_test_bit(int 3755@@ -26,7 +26,7 @@ static inline int variable_test_bit(int
3590 u8 v; 3756 u8 v;
3591 const u32 *p = (const u32 *)addr; 3757 const u32 *p = (const u32 *)addr;
@@ -3604,9 +3770,9 @@ diff -urNp linux-2.6.29.6/arch/x86/boot/bitops.h linux-2.6.29.6/arch/x86/boot/bi
3604 } 3770 }
3605 3771
3606 #endif /* BOOT_BITOPS_H */ 3772 #endif /* BOOT_BITOPS_H */
3607diff -urNp linux-2.6.29.6/arch/x86/boot/boot.h linux-2.6.29.6/arch/x86/boot/boot.h 3773diff -urNp linux-2.6.30.4/arch/x86/boot/boot.h linux-2.6.30.4/arch/x86/boot/boot.h
3608--- linux-2.6.29.6/arch/x86/boot/boot.h 2009-07-02 19:41:20.000000000 -0400 3774--- linux-2.6.30.4/arch/x86/boot/boot.h 2009-07-24 17:47:51.000000000 -0400
3609+++ linux-2.6.29.6/arch/x86/boot/boot.h 2009-07-23 17:34:32.052702854 -0400 3775+++ linux-2.6.30.4/arch/x86/boot/boot.h 2009-07-30 09:48:09.917626356 -0400
3610@@ -80,7 +80,7 @@ static inline void io_delay(void) 3776@@ -80,7 +80,7 @@ static inline void io_delay(void)
3611 static inline u16 ds(void) 3777 static inline u16 ds(void)
3612 { 3778 {
@@ -3625,10 +3791,10 @@ diff -urNp linux-2.6.29.6/arch/x86/boot/boot.h linux-2.6.29.6/arch/x86/boot/boot
3625 : "=qm" (diff), "+D" (s1), "+S" (s2), "+c" (len)); 3791 : "=qm" (diff), "+D" (s1), "+S" (s2), "+c" (len));
3626 return diff; 3792 return diff;
3627 } 3793 }
3628diff -urNp linux-2.6.29.6/arch/x86/boot/compressed/head_32.S linux-2.6.29.6/arch/x86/boot/compressed/head_32.S 3794diff -urNp linux-2.6.30.4/arch/x86/boot/compressed/head_32.S linux-2.6.30.4/arch/x86/boot/compressed/head_32.S
3629--- linux-2.6.29.6/arch/x86/boot/compressed/head_32.S 2009-07-02 19:41:20.000000000 -0400 3795--- linux-2.6.30.4/arch/x86/boot/compressed/head_32.S 2009-07-24 17:47:51.000000000 -0400
3630+++ linux-2.6.29.6/arch/x86/boot/compressed/head_32.S 2009-07-23 17:34:32.052702854 -0400 3796+++ linux-2.6.30.4/arch/x86/boot/compressed/head_32.S 2009-07-30 09:48:09.917626356 -0400
3631@@ -70,7 +70,7 @@ startup_32: 3797@@ -68,7 +68,7 @@ ENTRY(startup_32)
3632 addl $(CONFIG_PHYSICAL_ALIGN - 1), %ebx 3798 addl $(CONFIG_PHYSICAL_ALIGN - 1), %ebx
3633 andl $(~(CONFIG_PHYSICAL_ALIGN - 1)), %ebx 3799 andl $(~(CONFIG_PHYSICAL_ALIGN - 1)), %ebx
3634 #else 3800 #else
@@ -3637,7 +3803,7 @@ diff -urNp linux-2.6.29.6/arch/x86/boot/compressed/head_32.S linux-2.6.29.6/arch
3637 #endif 3803 #endif
3638 3804
3639 /* Replace the compressed data size with the uncompressed size */ 3805 /* Replace the compressed data size with the uncompressed size */
3640@@ -80,8 +80,8 @@ startup_32: 3806@@ -78,8 +78,8 @@ ENTRY(startup_32)
3641 /* Add 8 bytes for every 32K input block */ 3807 /* Add 8 bytes for every 32K input block */
3642 shrl $12, %eax 3808 shrl $12, %eax
3643 addl %eax, %ebx 3809 addl %eax, %ebx
@@ -3648,7 +3814,7 @@ diff -urNp linux-2.6.29.6/arch/x86/boot/compressed/head_32.S linux-2.6.29.6/arch
3648 /* Align on a 4K boundary */ 3814 /* Align on a 4K boundary */
3649 addl $4095, %ebx 3815 addl $4095, %ebx
3650 andl $~4095, %ebx 3816 andl $~4095, %ebx
3651@@ -105,7 +105,7 @@ startup_32: 3817@@ -103,7 +103,7 @@ ENTRY(startup_32)
3652 addl $(CONFIG_PHYSICAL_ALIGN - 1), %ebp 3818 addl $(CONFIG_PHYSICAL_ALIGN - 1), %ebp
3653 andl $(~(CONFIG_PHYSICAL_ALIGN - 1)), %ebp 3819 andl $(~(CONFIG_PHYSICAL_ALIGN - 1)), %ebp
3654 #else 3820 #else
@@ -3677,10 +3843,10 @@ diff -urNp linux-2.6.29.6/arch/x86/boot/compressed/head_32.S linux-2.6.29.6/arch
3677 addl %ebx, -__PAGE_OFFSET(%ebx, %ecx) 3843 addl %ebx, -__PAGE_OFFSET(%ebx, %ecx)
3678 jmp 1b 3844 jmp 1b
3679 2: 3845 2:
3680diff -urNp linux-2.6.29.6/arch/x86/boot/compressed/misc.c linux-2.6.29.6/arch/x86/boot/compressed/misc.c 3846diff -urNp linux-2.6.30.4/arch/x86/boot/compressed/misc.c linux-2.6.30.4/arch/x86/boot/compressed/misc.c
3681--- linux-2.6.29.6/arch/x86/boot/compressed/misc.c 2009-07-02 19:41:20.000000000 -0400 3847--- linux-2.6.30.4/arch/x86/boot/compressed/misc.c 2009-07-24 17:47:51.000000000 -0400
3682+++ linux-2.6.29.6/arch/x86/boot/compressed/misc.c 2009-07-23 17:34:32.052702854 -0400 3848+++ linux-2.6.30.4/arch/x86/boot/compressed/misc.c 2009-07-30 09:48:09.917626356 -0400
3683@@ -373,7 +373,7 @@ static void parse_elf(void *output) 3849@@ -288,7 +288,7 @@ static void parse_elf(void *output)
3684 case PT_LOAD: 3850 case PT_LOAD:
3685 #ifdef CONFIG_RELOCATABLE 3851 #ifdef CONFIG_RELOCATABLE
3686 dest = output; 3852 dest = output;
@@ -3689,7 +3855,7 @@ diff -urNp linux-2.6.29.6/arch/x86/boot/compressed/misc.c linux-2.6.29.6/arch/x8
3689 #else 3855 #else
3690 dest = (void *)(phdr->p_paddr); 3856 dest = (void *)(phdr->p_paddr);
3691 #endif 3857 #endif
3692@@ -425,7 +425,7 @@ asmlinkage void decompress_kernel(void * 3858@@ -336,7 +336,7 @@ asmlinkage void decompress_kernel(void *
3693 if (heap > ((-__PAGE_OFFSET-(512<<20)-1) & 0x7fffffff)) 3859 if (heap > ((-__PAGE_OFFSET-(512<<20)-1) & 0x7fffffff))
3694 error("Destination address too large"); 3860 error("Destination address too large");
3695 #ifndef CONFIG_RELOCATABLE 3861 #ifndef CONFIG_RELOCATABLE
@@ -3698,9 +3864,9 @@ diff -urNp linux-2.6.29.6/arch/x86/boot/compressed/misc.c linux-2.6.29.6/arch/x8
3698 error("Wrong destination address"); 3864 error("Wrong destination address");
3699 #endif 3865 #endif
3700 #endif 3866 #endif
3701diff -urNp linux-2.6.29.6/arch/x86/boot/compressed/relocs.c linux-2.6.29.6/arch/x86/boot/compressed/relocs.c 3867diff -urNp linux-2.6.30.4/arch/x86/boot/compressed/relocs.c linux-2.6.30.4/arch/x86/boot/compressed/relocs.c
3702--- linux-2.6.29.6/arch/x86/boot/compressed/relocs.c 2009-07-02 19:41:20.000000000 -0400 3868--- linux-2.6.30.4/arch/x86/boot/compressed/relocs.c 2009-07-24 17:47:51.000000000 -0400
3703+++ linux-2.6.29.6/arch/x86/boot/compressed/relocs.c 2009-07-23 17:34:32.052702854 -0400 3869+++ linux-2.6.30.4/arch/x86/boot/compressed/relocs.c 2009-07-30 09:48:09.918715361 -0400
3704@@ -10,8 +10,11 @@ 3870@@ -10,8 +10,11 @@
3705 #define USE_BSD 3871 #define USE_BSD
3706 #include <endian.h> 3872 #include <endian.h>
@@ -3784,7 +3950,7 @@ diff -urNp linux-2.6.29.6/arch/x86/boot/compressed/relocs.c linux-2.6.29.6/arch/
3784 continue; 3950 continue;
3785 } 3951 }
3786+ /* Don't relocate actual per-cpu variables, they are absolute indices, not addresses */ 3952+ /* Don't relocate actual per-cpu variables, they are absolute indices, not addresses */
3787+ if (!strcmp(sec_name(sym->st_shndx), ".data.percpu") && strncmp(sym_name(sym_strtab, sym), "__per_cpu_", 10)) 3953+ if (!strcmp(sec_name(sym->st_shndx), ".data.percpu") && strcmp(sym_name(sym_strtab, sym), "__per_cpu_load"))
3788+ continue; 3954+ continue;
3789+#if defined(CONFIG_PAX_KERNEXEC) && defined(CONFIG_X86_32) 3955+#if defined(CONFIG_PAX_KERNEXEC) && defined(CONFIG_X86_32)
3790+ /* Don't relocate actual code, they are relocated implicitly by the base address of KERNEL_CS */ 3956+ /* Don't relocate actual code, they are relocated implicitly by the base address of KERNEL_CS */
@@ -3800,10 +3966,10 @@ diff -urNp linux-2.6.29.6/arch/x86/boot/compressed/relocs.c linux-2.6.29.6/arch/
3800+ if (!strcmp(sec_name(sym->st_shndx), ".text")) 3966+ if (!strcmp(sec_name(sym->st_shndx), ".text"))
3801+ continue; 3967+ continue;
3802+#endif 3968+#endif
3803 if (r_type == R_386_PC32) { 3969 if (r_type == R_386_NONE || r_type == R_386_PC32) {
3804 /* PC relative relocations don't need to be adjusted */ 3970 /*
3805 } 3971 * NONE can be ignored and and PC relative
3806@@ -631,6 +692,7 @@ int main(int argc, char **argv) 3972@@ -634,6 +695,7 @@ int main(int argc, char **argv)
3807 fname, strerror(errno)); 3973 fname, strerror(errno));
3808 } 3974 }
3809 read_ehdr(fp); 3975 read_ehdr(fp);
@@ -3811,9 +3977,9 @@ diff -urNp linux-2.6.29.6/arch/x86/boot/compressed/relocs.c linux-2.6.29.6/arch/
3811 read_shdrs(fp); 3977 read_shdrs(fp);
3812 read_strtabs(fp); 3978 read_strtabs(fp);
3813 read_symtabs(fp); 3979 read_symtabs(fp);
3814diff -urNp linux-2.6.29.6/arch/x86/boot/cpucheck.c linux-2.6.29.6/arch/x86/boot/cpucheck.c 3980diff -urNp linux-2.6.30.4/arch/x86/boot/cpucheck.c linux-2.6.30.4/arch/x86/boot/cpucheck.c
3815--- linux-2.6.29.6/arch/x86/boot/cpucheck.c 2009-07-02 19:41:20.000000000 -0400 3981--- linux-2.6.30.4/arch/x86/boot/cpucheck.c 2009-07-24 17:47:51.000000000 -0400
3816+++ linux-2.6.29.6/arch/x86/boot/cpucheck.c 2009-07-23 17:34:32.052702854 -0400 3982+++ linux-2.6.30.4/arch/x86/boot/cpucheck.c 2009-07-30 09:48:09.918715361 -0400
3817@@ -74,7 +74,7 @@ static int has_fpu(void) 3983@@ -74,7 +74,7 @@ static int has_fpu(void)
3818 u16 fcw = -1, fsw = -1; 3984 u16 fcw = -1, fsw = -1;
3819 u32 cr0; 3985 u32 cr0;
@@ -3909,9 +4075,9 @@ diff -urNp linux-2.6.29.6/arch/x86/boot/cpucheck.c linux-2.6.29.6/arch/x86/boot/
3909 4075
3910 err = check_flags(); 4076 err = check_flags();
3911 } 4077 }
3912diff -urNp linux-2.6.29.6/arch/x86/boot/edd.c linux-2.6.29.6/arch/x86/boot/edd.c 4078diff -urNp linux-2.6.30.4/arch/x86/boot/edd.c linux-2.6.30.4/arch/x86/boot/edd.c
3913--- linux-2.6.29.6/arch/x86/boot/edd.c 2009-07-02 19:41:20.000000000 -0400 4079--- linux-2.6.30.4/arch/x86/boot/edd.c 2009-07-24 17:47:51.000000000 -0400
3914+++ linux-2.6.29.6/arch/x86/boot/edd.c 2009-07-23 17:34:32.053815554 -0400 4080+++ linux-2.6.30.4/arch/x86/boot/edd.c 2009-07-30 09:48:09.919627263 -0400
3915@@ -81,7 +81,7 @@ static int get_edd_info(u8 devno, struct 4081@@ -81,7 +81,7 @@ static int get_edd_info(u8 devno, struct
3916 ax = 0x4100; 4082 ax = 0x4100;
3917 bx = EDDMAGIC1; 4083 bx = EDDMAGIC1;
@@ -3939,9 +4105,9 @@ diff -urNp linux-2.6.29.6/arch/x86/boot/edd.c linux-2.6.29.6/arch/x86/boot/edd.c
3939 "movw %%di,%%es; " 4105 "movw %%di,%%es; "
3940 "pushfl; stc; int $0x13; setc %%al; popfl; " 4106 "pushfl; stc; int $0x13; setc %%al; popfl; "
3941 "popw %%es" 4107 "popw %%es"
3942diff -urNp linux-2.6.29.6/arch/x86/boot/main.c linux-2.6.29.6/arch/x86/boot/main.c 4108diff -urNp linux-2.6.30.4/arch/x86/boot/main.c linux-2.6.30.4/arch/x86/boot/main.c
3943--- linux-2.6.29.6/arch/x86/boot/main.c 2009-07-02 19:41:20.000000000 -0400 4109--- linux-2.6.30.4/arch/x86/boot/main.c 2009-07-24 17:47:51.000000000 -0400
3944+++ linux-2.6.29.6/arch/x86/boot/main.c 2009-07-23 17:34:32.053815554 -0400 4110+++ linux-2.6.30.4/arch/x86/boot/main.c 2009-07-30 09:48:09.919627263 -0400
3945@@ -78,7 +78,7 @@ static void query_ist(void) 4111@@ -78,7 +78,7 @@ static void query_ist(void)
3946 if (cpu.level < 6) 4112 if (cpu.level < 6)
3947 return; 4113 return;
@@ -3951,9 +4117,9 @@ diff -urNp linux-2.6.29.6/arch/x86/boot/main.c linux-2.6.29.6/arch/x86/boot/main
3951 : "=a" (boot_params.ist_info.signature), 4117 : "=a" (boot_params.ist_info.signature),
3952 "=b" (boot_params.ist_info.command), 4118 "=b" (boot_params.ist_info.command),
3953 "=c" (boot_params.ist_info.event), 4119 "=c" (boot_params.ist_info.event),
3954diff -urNp linux-2.6.29.6/arch/x86/boot/mca.c linux-2.6.29.6/arch/x86/boot/mca.c 4120diff -urNp linux-2.6.30.4/arch/x86/boot/mca.c linux-2.6.30.4/arch/x86/boot/mca.c
3955--- linux-2.6.29.6/arch/x86/boot/mca.c 2009-07-02 19:41:20.000000000 -0400 4121--- linux-2.6.30.4/arch/x86/boot/mca.c 2009-07-24 17:47:51.000000000 -0400
3956+++ linux-2.6.29.6/arch/x86/boot/mca.c 2009-07-23 17:34:32.053815554 -0400 4122+++ linux-2.6.30.4/arch/x86/boot/mca.c 2009-07-30 09:48:09.919627263 -0400
3957@@ -19,7 +19,7 @@ int query_mca(void) 4123@@ -19,7 +19,7 @@ int query_mca(void)
3958 u8 err; 4124 u8 err;
3959 u16 es, bx, len; 4125 u16 es, bx, len;
@@ -3963,19 +4129,19 @@ diff -urNp linux-2.6.29.6/arch/x86/boot/mca.c linux-2.6.29.6/arch/x86/boot/mca.c
3963 "int $0x15 ; " 4129 "int $0x15 ; "
3964 "setc %0 ; " 4130 "setc %0 ; "
3965 "movw %%es, %1 ; " 4131 "movw %%es, %1 ; "
3966diff -urNp linux-2.6.29.6/arch/x86/boot/memory.c linux-2.6.29.6/arch/x86/boot/memory.c 4132diff -urNp linux-2.6.30.4/arch/x86/boot/memory.c linux-2.6.30.4/arch/x86/boot/memory.c
3967--- linux-2.6.29.6/arch/x86/boot/memory.c 2009-07-02 19:41:20.000000000 -0400 4133--- linux-2.6.30.4/arch/x86/boot/memory.c 2009-07-24 17:47:51.000000000 -0400
3968+++ linux-2.6.29.6/arch/x86/boot/memory.c 2009-07-23 17:34:32.053815554 -0400 4134+++ linux-2.6.30.4/arch/x86/boot/memory.c 2009-07-30 09:48:09.919627263 -0400
3969@@ -30,7 +30,7 @@ static int detect_memory_e820(void) 4135@@ -47,7 +47,7 @@ static int detect_memory_e820(void)
3970 /* Important: %edx and %esi are clobbered by some BIOSes,
3971 so they must be either used for the error output 4136 so they must be either used for the error output
3972 or explicitly marked clobbered. */ 4137 or explicitly marked clobbered. Given that, assume there
3973- asm("int $0x15; setc %0" 4138 is something out there clobbering %ebp and %edi, too. */
3974+ asm volatile("int $0x15; setc %0" 4139- asm("pushl %%ebp; int $0x15; popl %%ebp; setc %0"
4140+ asm volatile("pushl %%ebp; int $0x15; popl %%ebp; setc %0"
3975 : "=d" (err), "+b" (next), "=a" (id), "+c" (size), 4141 : "=d" (err), "+b" (next), "=a" (id), "+c" (size),
3976 "=m" (*desc) 4142 "=D" (edi), "+m" (buf)
3977 : "D" (desc), "d" (SMAP), "a" (0xe820) 4143 : "D" (&buf), "d" (SMAP), "a" (0xe820)
3978@@ -66,7 +66,7 @@ static int detect_memory_e801(void) 4144@@ -83,7 +83,7 @@ static int detect_memory_e801(void)
3979 4145
3980 bx = cx = dx = 0; 4146 bx = cx = dx = 0;
3981 ax = 0xe801; 4147 ax = 0xe801;
@@ -3984,7 +4150,7 @@ diff -urNp linux-2.6.29.6/arch/x86/boot/memory.c linux-2.6.29.6/arch/x86/boot/me
3984 : "=m" (err), "+a" (ax), "+b" (bx), "+c" (cx), "+d" (dx)); 4150 : "=m" (err), "+a" (ax), "+b" (bx), "+c" (cx), "+d" (dx));
3985 4151
3986 if (err) 4152 if (err)
3987@@ -96,7 +96,7 @@ static int detect_memory_88(void) 4153@@ -113,7 +113,7 @@ static int detect_memory_88(void)
3988 u8 err; 4154 u8 err;
3989 4155
3990 ax = 0x8800; 4156 ax = 0x8800;
@@ -3993,9 +4159,9 @@ diff -urNp linux-2.6.29.6/arch/x86/boot/memory.c linux-2.6.29.6/arch/x86/boot/me
3993 4159
3994 boot_params.screen_info.ext_mem_k = ax; 4160 boot_params.screen_info.ext_mem_k = ax;
3995 4161
3996diff -urNp linux-2.6.29.6/arch/x86/boot/video.c linux-2.6.29.6/arch/x86/boot/video.c 4162diff -urNp linux-2.6.30.4/arch/x86/boot/video.c linux-2.6.30.4/arch/x86/boot/video.c
3997--- linux-2.6.29.6/arch/x86/boot/video.c 2009-07-02 19:41:20.000000000 -0400 4163--- linux-2.6.30.4/arch/x86/boot/video.c 2009-07-24 17:47:51.000000000 -0400
3998+++ linux-2.6.29.6/arch/x86/boot/video.c 2009-07-23 17:34:32.053815554 -0400 4164+++ linux-2.6.30.4/arch/x86/boot/video.c 2009-07-30 09:48:09.920627513 -0400
3999@@ -23,7 +23,7 @@ static void store_cursor_position(void) 4165@@ -23,7 +23,7 @@ static void store_cursor_position(void)
4000 4166
4001 ax = 0x0300; 4167 ax = 0x0300;
@@ -4014,9 +4180,9 @@ diff -urNp linux-2.6.29.6/arch/x86/boot/video.c linux-2.6.29.6/arch/x86/boot/vid
4014 : "+a" (ax), "=b" (page) 4180 : "+a" (ax), "=b" (page)
4015 : : "ecx", "edx", "esi", "edi"); 4181 : : "ecx", "edx", "esi", "edi");
4016 4182
4017diff -urNp linux-2.6.29.6/arch/x86/boot/video-vesa.c linux-2.6.29.6/arch/x86/boot/video-vesa.c 4183diff -urNp linux-2.6.30.4/arch/x86/boot/video-vesa.c linux-2.6.30.4/arch/x86/boot/video-vesa.c
4018--- linux-2.6.29.6/arch/x86/boot/video-vesa.c 2009-07-02 19:41:20.000000000 -0400 4184--- linux-2.6.30.4/arch/x86/boot/video-vesa.c 2009-07-24 17:47:51.000000000 -0400
4019+++ linux-2.6.29.6/arch/x86/boot/video-vesa.c 2009-07-23 17:34:32.053815554 -0400 4185+++ linux-2.6.30.4/arch/x86/boot/video-vesa.c 2009-07-30 09:48:09.920627513 -0400
4020@@ -41,7 +41,7 @@ static int vesa_probe(void) 4186@@ -41,7 +41,7 @@ static int vesa_probe(void)
4021 4187
4022 ax = 0x4f00; 4188 ax = 0x4f00;
@@ -4088,19 +4254,19 @@ diff -urNp linux-2.6.29.6/arch/x86/boot/video-vesa.c linux-2.6.29.6/arch/x86/boo
4088 : "+a" (ax), "+b" (bx), "+d" (dx), "=m" (boot_params.edid_info), 4254 : "+a" (ax), "+b" (bx), "+d" (dx), "=m" (boot_params.edid_info),
4089 "+c" (cx), "+D" (di) 4255 "+c" (cx), "+D" (di)
4090 : : "esi"); 4256 : : "esi");
4091diff -urNp linux-2.6.29.6/arch/x86/boot/video-vga.c linux-2.6.29.6/arch/x86/boot/video-vga.c 4257diff -urNp linux-2.6.30.4/arch/x86/boot/video-vga.c linux-2.6.30.4/arch/x86/boot/video-vga.c
4092--- linux-2.6.29.6/arch/x86/boot/video-vga.c 2009-07-02 19:41:20.000000000 -0400 4258--- linux-2.6.30.4/arch/x86/boot/video-vga.c 2009-07-30 20:32:40.362766121 -0400
4093+++ linux-2.6.29.6/arch/x86/boot/video-vga.c 2009-07-23 17:34:32.054707168 -0400 4259+++ linux-2.6.30.4/arch/x86/boot/video-vga.c 2009-07-30 20:35:05.409914191 -0400
4094@@ -225,7 +225,7 @@ static int vga_probe(void) 4260@@ -260,7 +260,7 @@ static int vga_probe(void)
4095 };
4096 u8 vga_flag; 4261 u8 vga_flag;
4097 4262
4263 ax = 0x1200;
4098- asm(INT10 4264- asm(INT10
4099+ asm volatile(INT10 4265+ asm volatile(INT10
4100 : "=b" (ega_bx) 4266 : "+a" (ax), "=b" (ega_bx)
4101 : "a" (0x1200), "b" (0x10) /* Check EGA/VGA */ 4267 : "b" (0x10) /* Check EGA/VGA */
4102 : "ecx", "edx", "esi", "edi"); 4268 : "ecx", "edx", "esi", "edi");
4103@@ -237,7 +237,7 @@ static int vga_probe(void) 4269@@ -272,7 +272,7 @@ static int vga_probe(void)
4104 /* If we have MDA/CGA/HGC then BL will be unchanged at 0x10 */ 4270 /* If we have MDA/CGA/HGC then BL will be unchanged at 0x10 */
4105 if ((u8)ega_bx != 0x10) { 4271 if ((u8)ega_bx != 0x10) {
4106 /* EGA/VGA */ 4272 /* EGA/VGA */
@@ -4109,22 +4275,10 @@ diff -urNp linux-2.6.29.6/arch/x86/boot/video-vga.c linux-2.6.29.6/arch/x86/boot
4109 : "=a" (vga_flag) 4275 : "=a" (vga_flag)
4110 : "a" (0x1a00) 4276 : "a" (0x1a00)
4111 : "ebx", "ecx", "edx", "esi", "edi"); 4277 : "ebx", "ecx", "edx", "esi", "edi");
4112diff -urNp linux-2.6.29.6/arch/x86/boot/voyager.c linux-2.6.29.6/arch/x86/boot/voyager.c 4278diff -urNp linux-2.6.30.4/arch/x86/ia32/ia32_signal.c linux-2.6.30.4/arch/x86/ia32/ia32_signal.c
4113--- linux-2.6.29.6/arch/x86/boot/voyager.c 2009-07-02 19:41:20.000000000 -0400 4279--- linux-2.6.30.4/arch/x86/ia32/ia32_signal.c 2009-07-24 17:47:51.000000000 -0400
4114+++ linux-2.6.29.6/arch/x86/boot/voyager.c 2009-07-23 17:34:32.054707168 -0400 4280+++ linux-2.6.30.4/arch/x86/ia32/ia32_signal.c 2009-07-30 09:48:09.921498916 -0400
4115@@ -23,7 +23,7 @@ int query_voyager(void) 4281@@ -403,7 +403,7 @@ static void __user *get_sigframe(struct
4116
4117 data_ptr[0] = 0xff; /* Flag on config not found(?) */
4118
4119- asm("pushw %%es ; "
4120+ asm volatile("pushw %%es ; "
4121 "int $0x15 ; "
4122 "setc %0 ; "
4123 "movw %%es, %1 ; "
4124diff -urNp linux-2.6.29.6/arch/x86/ia32/ia32_signal.c linux-2.6.29.6/arch/x86/ia32/ia32_signal.c
4125--- linux-2.6.29.6/arch/x86/ia32/ia32_signal.c 2009-07-02 19:41:20.000000000 -0400
4126+++ linux-2.6.29.6/arch/x86/ia32/ia32_signal.c 2009-07-23 17:34:32.054707168 -0400
4127@@ -387,7 +387,7 @@ static void __user *get_sigframe(struct
4128 sp -= frame_size; 4282 sp -= frame_size;
4129 /* Align the stack pointer according to the i386 ABI, 4283 /* Align the stack pointer according to the i386 ABI,
4130 * i.e. so that on function entry ((sp + 4) & 15) == 0. */ 4284 * i.e. so that on function entry ((sp + 4) & 15) == 0. */
@@ -4133,16 +4287,7 @@ diff -urNp linux-2.6.29.6/arch/x86/ia32/ia32_signal.c linux-2.6.29.6/arch/x86/ia
4133 return (void __user *) sp; 4287 return (void __user *) sp;
4134 } 4288 }
4135 4289
4136@@ -464,7 +464,7 @@ int ia32_setup_frame(int sig, struct k_s 4290@@ -503,7 +503,7 @@ int ia32_setup_rt_frame(int sig, struct
4137
4138 #if DEBUG_SIG
4139 printk(KERN_DEBUG "SIG deliver (%s:%d): sp=%p pc=%lx ra=%u\n",
4140- current->comm, current->pid, frame, regs->ip, frame->pretcode);
4141+ current->comm, task_pid_nr(current), frame, regs->ip, frame->pretcode);
4142 #endif
4143
4144 return 0;
4145@@ -488,7 +488,7 @@ int ia32_setup_rt_frame(int sig, struct
4146 0xb8, 4291 0xb8,
4147 __NR_ia32_rt_sigreturn, 4292 __NR_ia32_rt_sigreturn,
4148 0x80cd, 4293 0x80cd,
@@ -4151,18 +4296,9 @@ diff -urNp linux-2.6.29.6/arch/x86/ia32/ia32_signal.c linux-2.6.29.6/arch/x86/ia
4151 }; 4296 };
4152 4297
4153 frame = get_sigframe(ka, regs, sizeof(*frame), &fpstate); 4298 frame = get_sigframe(ka, regs, sizeof(*frame), &fpstate);
4154@@ -551,7 +551,7 @@ int ia32_setup_rt_frame(int sig, struct 4299diff -urNp linux-2.6.30.4/arch/x86/include/asm/alternative.h linux-2.6.30.4/arch/x86/include/asm/alternative.h
4155 4300--- linux-2.6.30.4/arch/x86/include/asm/alternative.h 2009-07-24 17:47:51.000000000 -0400
4156 #if DEBUG_SIG 4301+++ linux-2.6.30.4/arch/x86/include/asm/alternative.h 2009-07-30 09:48:09.921498916 -0400
4157 printk(KERN_DEBUG "SIG deliver (%s:%d): sp=%p pc=%lx ra=%u\n",
4158- current->comm, current->pid, frame, regs->ip, frame->pretcode);
4159+ current->comm, task_pid_nr(current), frame, regs->ip, frame->pretcode);
4160 #endif
4161
4162 return 0;
4163diff -urNp linux-2.6.29.6/arch/x86/include/asm/alternative.h linux-2.6.29.6/arch/x86/include/asm/alternative.h
4164--- linux-2.6.29.6/arch/x86/include/asm/alternative.h 2009-07-02 19:41:20.000000000 -0400
4165+++ linux-2.6.29.6/arch/x86/include/asm/alternative.h 2009-07-23 17:34:32.054707168 -0400
4166@@ -96,7 +96,7 @@ const unsigned char *const *find_nop_tab 4302@@ -96,7 +96,7 @@ const unsigned char *const *find_nop_tab
4167 " .byte 662b-661b\n" /* sourcelen */ \ 4303 " .byte 662b-661b\n" /* sourcelen */ \
4168 " .byte 664f-663f\n" /* replacementlen */ \ 4304 " .byte 664f-663f\n" /* replacementlen */ \
@@ -4190,9 +4326,30 @@ diff -urNp linux-2.6.29.6/arch/x86/include/asm/alternative.h linux-2.6.29.6/arch
4190 "663:\n\t" newinstr "\n664:\n" /* replacement */ \ 4326 "663:\n\t" newinstr "\n664:\n" /* replacement */ \
4191 ".previous" : output : [feat] "i" (feature), ##input) 4327 ".previous" : output : [feat] "i" (feature), ##input)
4192 4328
4193diff -urNp linux-2.6.29.6/arch/x86/include/asm/atomic_32.h linux-2.6.29.6/arch/x86/include/asm/atomic_32.h 4329diff -urNp linux-2.6.30.4/arch/x86/include/asm/apm.h linux-2.6.30.4/arch/x86/include/asm/apm.h
4194--- linux-2.6.29.6/arch/x86/include/asm/atomic_32.h 2009-07-02 19:41:20.000000000 -0400 4330--- linux-2.6.30.4/arch/x86/include/asm/apm.h 2009-07-24 17:47:51.000000000 -0400
4195+++ linux-2.6.29.6/arch/x86/include/asm/atomic_32.h 2009-07-23 17:34:32.054707168 -0400 4331+++ linux-2.6.30.4/arch/x86/include/asm/apm.h 2009-07-30 09:48:09.921498916 -0400
4332@@ -34,7 +34,7 @@ static inline void apm_bios_call_asm(u32
4333 __asm__ __volatile__(APM_DO_ZERO_SEGS
4334 "pushl %%edi\n\t"
4335 "pushl %%ebp\n\t"
4336- "lcall *%%cs:apm_bios_entry\n\t"
4337+ "lcall *%%ss:apm_bios_entry\n\t"
4338 "setc %%al\n\t"
4339 "popl %%ebp\n\t"
4340 "popl %%edi\n\t"
4341@@ -58,7 +58,7 @@ static inline u8 apm_bios_call_simple_as
4342 __asm__ __volatile__(APM_DO_ZERO_SEGS
4343 "pushl %%edi\n\t"
4344 "pushl %%ebp\n\t"
4345- "lcall *%%cs:apm_bios_entry\n\t"
4346+ "lcall *%%ss:apm_bios_entry\n\t"
4347 "setc %%bl\n\t"
4348 "popl %%ebp\n\t"
4349 "popl %%edi\n\t"
4350diff -urNp linux-2.6.30.4/arch/x86/include/asm/atomic_32.h linux-2.6.30.4/arch/x86/include/asm/atomic_32.h
4351--- linux-2.6.30.4/arch/x86/include/asm/atomic_32.h 2009-07-24 17:47:51.000000000 -0400
4352+++ linux-2.6.30.4/arch/x86/include/asm/atomic_32.h 2009-07-30 09:48:09.921498916 -0400
4196@@ -39,7 +39,29 @@ 4353@@ -39,7 +39,29 @@
4197 */ 4354 */
4198 static inline void atomic_add(int i, atomic_t *v) 4355 static inline void atomic_add(int i, atomic_t *v)
@@ -4435,9 +4592,9 @@ diff -urNp linux-2.6.29.6/arch/x86/include/asm/atomic_32.h linux-2.6.29.6/arch/x
4435 } 4592 }
4436 4593
4437 #define atomic_inc_not_zero(v) atomic_add_unless((v), 1, 0) 4594 #define atomic_inc_not_zero(v) atomic_add_unless((v), 1, 0)
4438diff -urNp linux-2.6.29.6/arch/x86/include/asm/atomic_64.h linux-2.6.29.6/arch/x86/include/asm/atomic_64.h 4595diff -urNp linux-2.6.30.4/arch/x86/include/asm/atomic_64.h linux-2.6.30.4/arch/x86/include/asm/atomic_64.h
4439--- linux-2.6.29.6/arch/x86/include/asm/atomic_64.h 2009-07-02 19:41:20.000000000 -0400 4596--- linux-2.6.30.4/arch/x86/include/asm/atomic_64.h 2009-07-24 17:47:51.000000000 -0400
4440+++ linux-2.6.29.6/arch/x86/include/asm/atomic_64.h 2009-07-23 17:34:32.054707168 -0400 4597+++ linux-2.6.30.4/arch/x86/include/asm/atomic_64.h 2009-07-30 09:48:09.922664908 -0400
4441@@ -38,7 +38,29 @@ 4598@@ -38,7 +38,29 @@
4442 */ 4599 */
4443 static inline void atomic_add(int i, atomic_t *v) 4600 static inline void atomic_add(int i, atomic_t *v)
@@ -4893,11 +5050,11 @@ diff -urNp linux-2.6.29.6/arch/x86/include/asm/atomic_64.h linux-2.6.29.6/arch/x
4893 } 5050 }
4894 5051
4895 /** 5052 /**
4896diff -urNp linux-2.6.29.6/arch/x86/include/asm/boot.h linux-2.6.29.6/arch/x86/include/asm/boot.h 5053diff -urNp linux-2.6.30.4/arch/x86/include/asm/boot.h linux-2.6.30.4/arch/x86/include/asm/boot.h
4897--- linux-2.6.29.6/arch/x86/include/asm/boot.h 2009-07-02 19:41:20.000000000 -0400 5054--- linux-2.6.30.4/arch/x86/include/asm/boot.h 2009-07-24 17:47:51.000000000 -0400
4898+++ linux-2.6.29.6/arch/x86/include/asm/boot.h 2009-07-23 17:34:32.055953640 -0400 5055+++ linux-2.6.30.4/arch/x86/include/asm/boot.h 2009-07-30 09:48:09.922664908 -0400
4899@@ -11,10 +11,15 @@ 5056@@ -9,10 +9,15 @@
4900 #define ASK_VGA 0xfffd /* ask for it at bootup */ 5057 #ifdef __KERNEL__
4901 5058
4902 /* Physical address where kernel should be loaded. */ 5059 /* Physical address where kernel should be loaded. */
4903-#define LOAD_PHYSICAL_ADDR ((CONFIG_PHYSICAL_START \ 5060-#define LOAD_PHYSICAL_ADDR ((CONFIG_PHYSICAL_START \
@@ -4910,12 +5067,12 @@ diff -urNp linux-2.6.29.6/arch/x86/include/asm/boot.h linux-2.6.29.6/arch/x86/in
4910+#define LOAD_PHYSICAL_ADDR ((unsigned long)__LOAD_PHYSICAL_ADDR) 5067+#define LOAD_PHYSICAL_ADDR ((unsigned long)__LOAD_PHYSICAL_ADDR)
4911+#endif 5068+#endif
4912+ 5069+
4913 #ifdef CONFIG_X86_64 5070 #ifdef CONFIG_KERNEL_BZIP2
4914 #define BOOT_HEAP_SIZE 0x7000 5071 #define BOOT_HEAP_SIZE 0x400000
4915 #define BOOT_STACK_SIZE 0x4000 5072 #else /* !CONFIG_KERNEL_BZIP2 */
4916diff -urNp linux-2.6.29.6/arch/x86/include/asm/cache.h linux-2.6.29.6/arch/x86/include/asm/cache.h 5073diff -urNp linux-2.6.30.4/arch/x86/include/asm/cache.h linux-2.6.30.4/arch/x86/include/asm/cache.h
4917--- linux-2.6.29.6/arch/x86/include/asm/cache.h 2009-07-02 19:41:20.000000000 -0400 5074--- linux-2.6.30.4/arch/x86/include/asm/cache.h 2009-07-24 17:47:51.000000000 -0400
4918+++ linux-2.6.29.6/arch/x86/include/asm/cache.h 2009-07-23 17:34:32.055953640 -0400 5075+++ linux-2.6.30.4/arch/x86/include/asm/cache.h 2009-07-30 09:48:09.923412137 -0400
4919@@ -6,6 +6,7 @@ 5076@@ -6,6 +6,7 @@
4920 #define L1_CACHE_BYTES (1 << L1_CACHE_SHIFT) 5077 #define L1_CACHE_BYTES (1 << L1_CACHE_SHIFT)
4921 5078
@@ -4924,9 +5081,9 @@ diff -urNp linux-2.6.29.6/arch/x86/include/asm/cache.h linux-2.6.29.6/arch/x86/i
4924 5081
4925 #ifdef CONFIG_X86_VSMP 5082 #ifdef CONFIG_X86_VSMP
4926 /* vSMP Internode cacheline shift */ 5083 /* vSMP Internode cacheline shift */
4927diff -urNp linux-2.6.29.6/arch/x86/include/asm/checksum_32.h linux-2.6.29.6/arch/x86/include/asm/checksum_32.h 5084diff -urNp linux-2.6.30.4/arch/x86/include/asm/checksum_32.h linux-2.6.30.4/arch/x86/include/asm/checksum_32.h
4928--- linux-2.6.29.6/arch/x86/include/asm/checksum_32.h 2009-07-02 19:41:20.000000000 -0400 5085--- linux-2.6.30.4/arch/x86/include/asm/checksum_32.h 2009-07-24 17:47:51.000000000 -0400
4929+++ linux-2.6.29.6/arch/x86/include/asm/checksum_32.h 2009-07-23 17:34:32.055953640 -0400 5086+++ linux-2.6.30.4/arch/x86/include/asm/checksum_32.h 2009-07-30 09:48:09.923412137 -0400
4930@@ -31,6 +31,14 @@ asmlinkage __wsum csum_partial_copy_gene 5087@@ -31,6 +31,14 @@ asmlinkage __wsum csum_partial_copy_gene
4931 int len, __wsum sum, 5088 int len, __wsum sum,
4932 int *src_err_ptr, int *dst_err_ptr); 5089 int *src_err_ptr, int *dst_err_ptr);
@@ -4960,9 +5117,9 @@ diff -urNp linux-2.6.29.6/arch/x86/include/asm/checksum_32.h linux-2.6.29.6/arch
4960 len, sum, NULL, err_ptr); 5117 len, sum, NULL, err_ptr);
4961 5118
4962 if (len) 5119 if (len)
4963diff -urNp linux-2.6.29.6/arch/x86/include/asm/desc.h linux-2.6.29.6/arch/x86/include/asm/desc.h 5120diff -urNp linux-2.6.30.4/arch/x86/include/asm/desc.h linux-2.6.30.4/arch/x86/include/asm/desc.h
4964--- linux-2.6.29.6/arch/x86/include/asm/desc.h 2009-07-02 19:41:20.000000000 -0400 5121--- linux-2.6.30.4/arch/x86/include/asm/desc.h 2009-07-24 17:47:51.000000000 -0400
4965+++ linux-2.6.29.6/arch/x86/include/asm/desc.h 2009-07-23 17:34:32.055953640 -0400 5122+++ linux-2.6.30.4/arch/x86/include/asm/desc.h 2009-07-30 09:48:09.923412137 -0400
4966@@ -16,6 +16,7 @@ static inline void fill_ldt(struct desc_ 5123@@ -16,6 +16,7 @@ static inline void fill_ldt(struct desc_
4967 desc->base1 = (info->base_addr & 0x00ff0000) >> 16; 5124 desc->base1 = (info->base_addr & 0x00ff0000) >> 16;
4968 desc->type = (info->read_exec_only ^ 1) << 1; 5125 desc->type = (info->read_exec_only ^ 1) << 1;
@@ -4980,7 +5137,7 @@ diff -urNp linux-2.6.29.6/arch/x86/include/asm/desc.h linux-2.6.29.6/arch/x86/in
4980-struct gdt_page { 5137-struct gdt_page {
4981- struct desc_struct gdt[GDT_ENTRIES]; 5138- struct desc_struct gdt[GDT_ENTRIES];
4982-} __attribute__((aligned(PAGE_SIZE))); 5139-} __attribute__((aligned(PAGE_SIZE)));
4983-DECLARE_PER_CPU(struct gdt_page, gdt_page); 5140-DECLARE_PER_CPU_PAGE_ALIGNED(struct gdt_page, gdt_page);
4984+extern gate_desc idt_table[256]; 5141+extern gate_desc idt_table[256];
4985 5142
4986+extern struct desc_struct cpu_gdt_table[NR_CPUS][PAGE_SIZE / sizeof(struct desc_struct)]; 5143+extern struct desc_struct cpu_gdt_table[NR_CPUS][PAGE_SIZE / sizeof(struct desc_struct)];
@@ -4991,7 +5148,7 @@ diff -urNp linux-2.6.29.6/arch/x86/include/asm/desc.h linux-2.6.29.6/arch/x86/in
4991 } 5148 }
4992 5149
4993 #ifdef CONFIG_X86_64 5150 #ifdef CONFIG_X86_64
4994@@ -115,19 +112,48 @@ static inline void paravirt_free_ldt(str 5151@@ -116,19 +113,48 @@ static inline void paravirt_free_ldt(str
4995 static inline void native_write_idt_entry(gate_desc *idt, int entry, 5152 static inline void native_write_idt_entry(gate_desc *idt, int entry,
4996 const gate_desc *gate) 5153 const gate_desc *gate)
4997 { 5154 {
@@ -5040,7 +5197,7 @@ diff -urNp linux-2.6.29.6/arch/x86/include/asm/desc.h linux-2.6.29.6/arch/x86/in
5040 switch (type) { 5197 switch (type) {
5041 case DESC_TSS: 5198 case DESC_TSS:
5042 size = sizeof(tss_desc); 5199 size = sizeof(tss_desc);
5043@@ -139,7 +165,17 @@ static inline void native_write_gdt_entr 5200@@ -140,7 +166,17 @@ static inline void native_write_gdt_entr
5044 size = sizeof(struct desc_struct); 5201 size = sizeof(struct desc_struct);
5045 break; 5202 break;
5046 } 5203 }
@@ -5058,7 +5215,7 @@ diff -urNp linux-2.6.29.6/arch/x86/include/asm/desc.h linux-2.6.29.6/arch/x86/in
5058 } 5215 }
5059 5216
5060 static inline void pack_descriptor(struct desc_struct *desc, unsigned long base, 5217 static inline void pack_descriptor(struct desc_struct *desc, unsigned long base,
5061@@ -211,7 +247,19 @@ static inline void native_set_ldt(const 5218@@ -212,7 +248,19 @@ static inline void native_set_ldt(const
5062 5219
5063 static inline void native_load_tr_desc(void) 5220 static inline void native_load_tr_desc(void)
5064 { 5221 {
@@ -5078,7 +5235,7 @@ diff -urNp linux-2.6.29.6/arch/x86/include/asm/desc.h linux-2.6.29.6/arch/x86/in
5078 } 5235 }
5079 5236
5080 static inline void native_load_gdt(const struct desc_ptr *dtr) 5237 static inline void native_load_gdt(const struct desc_ptr *dtr)
5081@@ -246,8 +294,19 @@ static inline void native_load_tls(struc 5238@@ -247,8 +295,19 @@ static inline void native_load_tls(struc
5082 unsigned int i; 5239 unsigned int i;
5083 struct desc_struct *gdt = get_cpu_gdt_table(cpu); 5240 struct desc_struct *gdt = get_cpu_gdt_table(cpu);
5084 5241
@@ -5098,7 +5255,7 @@ diff -urNp linux-2.6.29.6/arch/x86/include/asm/desc.h linux-2.6.29.6/arch/x86/in
5098 } 5255 }
5099 5256
5100 #define _LDT_empty(info) \ 5257 #define _LDT_empty(info) \
5101@@ -379,6 +438,18 @@ static inline void set_system_intr_gate_ 5258@@ -380,6 +439,18 @@ static inline void set_system_intr_gate_
5102 _set_gate(n, GATE_INTERRUPT, addr, 0x3, ist, __KERNEL_CS); 5259 _set_gate(n, GATE_INTERRUPT, addr, 0x3, ist, __KERNEL_CS);
5103 } 5260 }
5104 5261
@@ -5117,9 +5274,9 @@ diff -urNp linux-2.6.29.6/arch/x86/include/asm/desc.h linux-2.6.29.6/arch/x86/in
5117 #else 5274 #else
5118 /* 5275 /*
5119 * GET_DESC_BASE reads the descriptor base of the specified segment. 5276 * GET_DESC_BASE reads the descriptor base of the specified segment.
5120diff -urNp linux-2.6.29.6/arch/x86/include/asm/e820.h linux-2.6.29.6/arch/x86/include/asm/e820.h 5277diff -urNp linux-2.6.30.4/arch/x86/include/asm/e820.h linux-2.6.30.4/arch/x86/include/asm/e820.h
5121--- linux-2.6.29.6/arch/x86/include/asm/e820.h 2009-07-02 19:41:20.000000000 -0400 5278--- linux-2.6.30.4/arch/x86/include/asm/e820.h 2009-07-24 17:47:51.000000000 -0400
5122+++ linux-2.6.29.6/arch/x86/include/asm/e820.h 2009-07-23 17:34:32.055953640 -0400 5279+++ linux-2.6.30.4/arch/x86/include/asm/e820.h 2009-07-30 09:48:09.924429298 -0400
5123@@ -135,7 +135,7 @@ extern char *memory_setup(void); 5280@@ -135,7 +135,7 @@ extern char *memory_setup(void);
5124 #define ISA_END_ADDRESS 0x100000 5281 #define ISA_END_ADDRESS 0x100000
5125 #define is_ISA_range(s, e) ((s) >= ISA_START_ADDRESS && (e) < ISA_END_ADDRESS) 5282 #define is_ISA_range(s, e) ((s) >= ISA_START_ADDRESS && (e) < ISA_END_ADDRESS)
@@ -5129,10 +5286,10 @@ diff -urNp linux-2.6.29.6/arch/x86/include/asm/e820.h linux-2.6.29.6/arch/x86/in
5129 #define BIOS_END 0x00100000 5286 #define BIOS_END 0x00100000
5130 5287
5131 #ifdef __KERNEL__ 5288 #ifdef __KERNEL__
5132diff -urNp linux-2.6.29.6/arch/x86/include/asm/elf.h linux-2.6.29.6/arch/x86/include/asm/elf.h 5289diff -urNp linux-2.6.30.4/arch/x86/include/asm/elf.h linux-2.6.30.4/arch/x86/include/asm/elf.h
5133--- linux-2.6.29.6/arch/x86/include/asm/elf.h 2009-07-02 19:41:20.000000000 -0400 5290--- linux-2.6.30.4/arch/x86/include/asm/elf.h 2009-07-24 17:47:51.000000000 -0400
5134+++ linux-2.6.29.6/arch/x86/include/asm/elf.h 2009-07-23 17:34:32.056803140 -0400 5291+++ linux-2.6.30.4/arch/x86/include/asm/elf.h 2009-07-30 09:48:09.927602624 -0400
5135@@ -252,7 +252,25 @@ extern int force_personality32; 5292@@ -263,7 +263,25 @@ extern int force_personality32;
5136 the loader. We need to make sure that it is out of the way of the program 5293 the loader. We need to make sure that it is out of the way of the program
5137 that it will "exec", and that there is sufficient room for the brk. */ 5294 that it will "exec", and that there is sufficient room for the brk. */
5138 5295
@@ -5158,7 +5315,7 @@ diff -urNp linux-2.6.29.6/arch/x86/include/asm/elf.h linux-2.6.29.6/arch/x86/inc
5158 5315
5159 /* This yields a mask that user programs can use to figure out what 5316 /* This yields a mask that user programs can use to figure out what
5160 instruction set this CPU supports. This could be done in user space, 5317 instruction set this CPU supports. This could be done in user space,
5161@@ -304,8 +322,7 @@ do { \ 5318@@ -315,8 +333,7 @@ do { \
5162 #define ARCH_DLINFO \ 5319 #define ARCH_DLINFO \
5163 do { \ 5320 do { \
5164 if (vdso_enabled) \ 5321 if (vdso_enabled) \
@@ -5168,7 +5325,7 @@ diff -urNp linux-2.6.29.6/arch/x86/include/asm/elf.h linux-2.6.29.6/arch/x86/inc
5168 } while (0) 5325 } while (0)
5169 5326
5170 #define AT_SYSINFO 32 5327 #define AT_SYSINFO 32
5171@@ -316,7 +333,7 @@ do { \ 5328@@ -327,7 +344,7 @@ do { \
5172 5329
5173 #endif /* !CONFIG_X86_32 */ 5330 #endif /* !CONFIG_X86_32 */
5174 5331
@@ -5177,7 +5334,7 @@ diff -urNp linux-2.6.29.6/arch/x86/include/asm/elf.h linux-2.6.29.6/arch/x86/inc
5177 5334
5178 #define VDSO_ENTRY \ 5335 #define VDSO_ENTRY \
5179 ((unsigned long)VDSO32_SYMBOL(VDSO_CURRENT_BASE, vsyscall)) 5336 ((unsigned long)VDSO32_SYMBOL(VDSO_CURRENT_BASE, vsyscall))
5180@@ -330,7 +347,4 @@ extern int arch_setup_additional_pages(s 5337@@ -341,7 +358,4 @@ extern int arch_setup_additional_pages(s
5181 extern int syscall32_setup_pages(struct linux_binprm *, int exstack); 5338 extern int syscall32_setup_pages(struct linux_binprm *, int exstack);
5182 #define compat_arch_setup_additional_pages syscall32_setup_pages 5339 #define compat_arch_setup_additional_pages syscall32_setup_pages
5183 5340
@@ -5185,9 +5342,9 @@ diff -urNp linux-2.6.29.6/arch/x86/include/asm/elf.h linux-2.6.29.6/arch/x86/inc
5185-#define arch_randomize_brk arch_randomize_brk 5342-#define arch_randomize_brk arch_randomize_brk
5186- 5343-
5187 #endif /* _ASM_X86_ELF_H */ 5344 #endif /* _ASM_X86_ELF_H */
5188diff -urNp linux-2.6.29.6/arch/x86/include/asm/futex.h linux-2.6.29.6/arch/x86/include/asm/futex.h 5345diff -urNp linux-2.6.30.4/arch/x86/include/asm/futex.h linux-2.6.30.4/arch/x86/include/asm/futex.h
5189--- linux-2.6.29.6/arch/x86/include/asm/futex.h 2009-07-02 19:41:20.000000000 -0400 5346--- linux-2.6.30.4/arch/x86/include/asm/futex.h 2009-07-24 17:47:51.000000000 -0400
5190+++ linux-2.6.29.6/arch/x86/include/asm/futex.h 2009-07-23 17:34:32.056803140 -0400 5347+++ linux-2.6.30.4/arch/x86/include/asm/futex.h 2009-07-30 09:48:09.927602624 -0400
5191@@ -11,6 +11,40 @@ 5348@@ -11,6 +11,40 @@
5192 #include <asm/processor.h> 5349 #include <asm/processor.h>
5193 #include <asm/system.h> 5350 #include <asm/system.h>
@@ -5299,9 +5456,9 @@ diff -urNp linux-2.6.29.6/arch/x86/include/asm/futex.h linux-2.6.29.6/arch/x86/i
5299 : "memory" 5456 : "memory"
5300 ); 5457 );
5301 5458
5302diff -urNp linux-2.6.29.6/arch/x86/include/asm/i387.h linux-2.6.29.6/arch/x86/include/asm/i387.h 5459diff -urNp linux-2.6.30.4/arch/x86/include/asm/i387.h linux-2.6.30.4/arch/x86/include/asm/i387.h
5303--- linux-2.6.29.6/arch/x86/include/asm/i387.h 2009-07-02 19:41:20.000000000 -0400 5460--- linux-2.6.30.4/arch/x86/include/asm/i387.h 2009-07-24 17:47:51.000000000 -0400
5304+++ linux-2.6.29.6/arch/x86/include/asm/i387.h 2009-07-23 17:34:32.056803140 -0400 5461+++ linux-2.6.30.4/arch/x86/include/asm/i387.h 2009-07-30 09:48:09.927602624 -0400
5305@@ -203,13 +203,8 @@ static inline void restore_fpu(struct ta 5462@@ -203,13 +203,8 @@ static inline void restore_fpu(struct ta
5306 } 5463 }
5307 5464
@@ -5318,12 +5475,12 @@ diff -urNp linux-2.6.29.6/arch/x86/include/asm/i387.h linux-2.6.29.6/arch/x86/in
5318 5475
5319 /* 5476 /*
5320 * These must be called with preempt disabled 5477 * These must be called with preempt disabled
5321diff -urNp linux-2.6.29.6/arch/x86/include/asm/io_64.h linux-2.6.29.6/arch/x86/include/asm/io_64.h 5478diff -urNp linux-2.6.30.4/arch/x86/include/asm/io_64.h linux-2.6.30.4/arch/x86/include/asm/io_64.h
5322--- linux-2.6.29.6/arch/x86/include/asm/io_64.h 2009-07-02 19:41:20.000000000 -0400 5479--- linux-2.6.30.4/arch/x86/include/asm/io_64.h 2009-07-24 17:47:51.000000000 -0400
5323+++ linux-2.6.29.6/arch/x86/include/asm/io_64.h 2009-07-23 17:34:32.056803140 -0400 5480+++ linux-2.6.30.4/arch/x86/include/asm/io_64.h 2009-07-30 09:48:09.927602624 -0400
5324@@ -158,6 +158,17 @@ static inline void *phys_to_virt(unsigne 5481@@ -140,6 +140,17 @@ __OUTS(l)
5325 } 5482
5326 #endif 5483 #include <linux/vmalloc.h>
5327 5484
5328+#define ARCH_HAS_VALID_PHYS_ADDR_RANGE 5485+#define ARCH_HAS_VALID_PHYS_ADDR_RANGE
5329+static inline int valid_phys_addr_range (unsigned long addr, size_t count) 5486+static inline int valid_phys_addr_range (unsigned long addr, size_t count)
@@ -5336,12 +5493,12 @@ diff -urNp linux-2.6.29.6/arch/x86/include/asm/io_64.h linux-2.6.29.6/arch/x86/i
5336+ return (pfn + (count >> PAGE_SHIFT)) < (1 << (boot_cpu_data.x86_phys_bits - PAGE_SHIFT)) ? 1 : 0; 5493+ return (pfn + (count >> PAGE_SHIFT)) < (1 << (boot_cpu_data.x86_phys_bits - PAGE_SHIFT)) ? 1 : 0;
5337+} 5494+}
5338+ 5495+
5339 /* 5496 #include <asm-generic/iomap.h>
5340 * Change "struct page" to physical address. 5497
5341 */ 5498 void __memcpy_fromio(void *, unsigned long, unsigned);
5342diff -urNp linux-2.6.29.6/arch/x86/include/asm/irqflags.h linux-2.6.29.6/arch/x86/include/asm/irqflags.h 5499diff -urNp linux-2.6.30.4/arch/x86/include/asm/irqflags.h linux-2.6.30.4/arch/x86/include/asm/irqflags.h
5343--- linux-2.6.29.6/arch/x86/include/asm/irqflags.h 2009-07-02 19:41:20.000000000 -0400 5500--- linux-2.6.30.4/arch/x86/include/asm/irqflags.h 2009-07-24 17:47:51.000000000 -0400
5344+++ linux-2.6.29.6/arch/x86/include/asm/irqflags.h 2009-07-23 17:34:32.056803140 -0400 5501+++ linux-2.6.30.4/arch/x86/include/asm/irqflags.h 2009-07-30 09:48:09.928623877 -0400
5345@@ -141,6 +141,8 @@ static inline unsigned long __raw_local_ 5502@@ -141,6 +141,8 @@ static inline unsigned long __raw_local_
5346 #define INTERRUPT_RETURN iret 5503 #define INTERRUPT_RETURN iret
5347 #define ENABLE_INTERRUPTS_SYSEXIT sti; sysexit 5504 #define ENABLE_INTERRUPTS_SYSEXIT sti; sysexit
@@ -5351,9 +5508,9 @@ diff -urNp linux-2.6.29.6/arch/x86/include/asm/irqflags.h linux-2.6.29.6/arch/x8
5351 #endif 5508 #endif
5352 5509
5353 5510
5354diff -urNp linux-2.6.29.6/arch/x86/include/asm/kmap_types.h linux-2.6.29.6/arch/x86/include/asm/kmap_types.h 5511diff -urNp linux-2.6.30.4/arch/x86/include/asm/kmap_types.h linux-2.6.30.4/arch/x86/include/asm/kmap_types.h
5355--- linux-2.6.29.6/arch/x86/include/asm/kmap_types.h 2009-07-02 19:41:20.000000000 -0400 5512--- linux-2.6.30.4/arch/x86/include/asm/kmap_types.h 2009-07-24 17:47:51.000000000 -0400
5356+++ linux-2.6.29.6/arch/x86/include/asm/kmap_types.h 2009-07-23 17:34:32.056803140 -0400 5513+++ linux-2.6.30.4/arch/x86/include/asm/kmap_types.h 2009-07-30 09:48:09.928623877 -0400
5357@@ -21,7 +21,8 @@ D(9) KM_IRQ0, 5514@@ -21,7 +21,8 @@ D(9) KM_IRQ0,
5358 D(10) KM_IRQ1, 5515 D(10) KM_IRQ1,
5359 D(11) KM_SOFTIRQ0, 5516 D(11) KM_SOFTIRQ0,
@@ -5364,10 +5521,10 @@ diff -urNp linux-2.6.29.6/arch/x86/include/asm/kmap_types.h linux-2.6.29.6/arch/
5364 }; 5521 };
5365 5522
5366 #undef D 5523 #undef D
5367diff -urNp linux-2.6.29.6/arch/x86/include/asm/kvm_host.h linux-2.6.29.6/arch/x86/include/asm/kvm_host.h 5524diff -urNp linux-2.6.30.4/arch/x86/include/asm/kvm_host.h linux-2.6.30.4/arch/x86/include/asm/kvm_host.h
5368--- linux-2.6.29.6/arch/x86/include/asm/kvm_host.h 2009-07-02 19:41:20.000000000 -0400 5525--- linux-2.6.30.4/arch/x86/include/asm/kvm_host.h 2009-07-24 17:47:51.000000000 -0400
5369+++ linux-2.6.29.6/arch/x86/include/asm/kvm_host.h 2009-07-23 17:34:32.057848214 -0400 5526+++ linux-2.6.30.4/arch/x86/include/asm/kvm_host.h 2009-07-30 09:48:09.928623877 -0400
5370@@ -494,7 +494,7 @@ struct kvm_x86_ops { 5527@@ -529,7 +529,7 @@ struct kvm_x86_ops {
5371 int (*get_mt_mask_shift)(void); 5528 int (*get_mt_mask_shift)(void);
5372 }; 5529 };
5373 5530
@@ -5376,36 +5533,9 @@ diff -urNp linux-2.6.29.6/arch/x86/include/asm/kvm_host.h linux-2.6.29.6/arch/x8
5376 5533
5377 int kvm_mmu_module_init(void); 5534 int kvm_mmu_module_init(void);
5378 void kvm_mmu_module_exit(void); 5535 void kvm_mmu_module_exit(void);
5379diff -urNp linux-2.6.29.6/arch/x86/include/asm/linkage.h linux-2.6.29.6/arch/x86/include/asm/linkage.h 5536diff -urNp linux-2.6.30.4/arch/x86/include/asm/local.h linux-2.6.30.4/arch/x86/include/asm/local.h
5380--- linux-2.6.29.6/arch/x86/include/asm/linkage.h 2009-07-02 19:41:20.000000000 -0400 5537--- linux-2.6.30.4/arch/x86/include/asm/local.h 2009-07-24 17:47:51.000000000 -0400
5381+++ linux-2.6.29.6/arch/x86/include/asm/linkage.h 2009-07-23 17:34:32.057848214 -0400 5538+++ linux-2.6.30.4/arch/x86/include/asm/local.h 2009-07-30 09:48:09.929617473 -0400
5382@@ -7,6 +7,11 @@
5383 #ifdef CONFIG_X86_64
5384 #define __ALIGN .p2align 4,,15
5385 #define __ALIGN_STR ".p2align 4,,15"
5386+#else
5387+#ifdef CONFIG_X86_ALIGNMENT_16
5388+#define __ALIGN .align 16,0x90
5389+#define __ALIGN_STR ".align 16,0x90"
5390+#endif
5391 #endif
5392
5393 #ifdef CONFIG_X86_32
5394@@ -52,11 +57,6 @@
5395
5396 #endif
5397
5398-#ifdef CONFIG_X86_ALIGNMENT_16
5399-#define __ALIGN .align 16,0x90
5400-#define __ALIGN_STR ".align 16,0x90"
5401-#endif
5402-
5403 /*
5404 * to check ENTRY_X86/END_X86 and
5405 * KPROBE_ENTRY_X86/KPROBE_END_X86
5406diff -urNp linux-2.6.29.6/arch/x86/include/asm/local.h linux-2.6.29.6/arch/x86/include/asm/local.h
5407--- linux-2.6.29.6/arch/x86/include/asm/local.h 2009-07-02 19:41:20.000000000 -0400
5408+++ linux-2.6.29.6/arch/x86/include/asm/local.h 2009-07-23 17:34:32.057848214 -0400
5409@@ -18,26 +18,90 @@ typedef struct { 5539@@ -18,26 +18,90 @@ typedef struct {
5410 5540
5411 static inline void local_inc(local_t *l) 5541 static inline void local_inc(local_t *l)
@@ -5630,30 +5760,9 @@ diff -urNp linux-2.6.29.6/arch/x86/include/asm/local.h linux-2.6.29.6/arch/x86/i
5630 : "+r" (i), "+m" (l->a.counter) 5760 : "+r" (i), "+m" (l->a.counter)
5631 : : "memory"); 5761 : : "memory");
5632 return i + __i; 5762 return i + __i;
5633diff -urNp linux-2.6.29.6/arch/x86/include/asm/mach-default/apm.h linux-2.6.29.6/arch/x86/include/asm/mach-default/apm.h 5763diff -urNp linux-2.6.30.4/arch/x86/include/asm/mman.h linux-2.6.30.4/arch/x86/include/asm/mman.h
5634--- linux-2.6.29.6/arch/x86/include/asm/mach-default/apm.h 2009-07-02 19:41:20.000000000 -0400 5764--- linux-2.6.30.4/arch/x86/include/asm/mman.h 2009-07-24 17:47:51.000000000 -0400
5635+++ linux-2.6.29.6/arch/x86/include/asm/mach-default/apm.h 2009-07-23 17:34:32.057848214 -0400 5765+++ linux-2.6.30.4/arch/x86/include/asm/mman.h 2009-07-30 09:48:09.929617473 -0400
5636@@ -34,7 +34,7 @@ static inline void apm_bios_call_asm(u32
5637 __asm__ __volatile__(APM_DO_ZERO_SEGS
5638 "pushl %%edi\n\t"
5639 "pushl %%ebp\n\t"
5640- "lcall *%%cs:apm_bios_entry\n\t"
5641+ "lcall *%%ss:apm_bios_entry\n\t"
5642 "setc %%al\n\t"
5643 "popl %%ebp\n\t"
5644 "popl %%edi\n\t"
5645@@ -58,7 +58,7 @@ static inline u8 apm_bios_call_simple_as
5646 __asm__ __volatile__(APM_DO_ZERO_SEGS
5647 "pushl %%edi\n\t"
5648 "pushl %%ebp\n\t"
5649- "lcall *%%cs:apm_bios_entry\n\t"
5650+ "lcall *%%ss:apm_bios_entry\n\t"
5651 "setc %%bl\n\t"
5652 "popl %%ebp\n\t"
5653 "popl %%edi\n\t"
5654diff -urNp linux-2.6.29.6/arch/x86/include/asm/mman.h linux-2.6.29.6/arch/x86/include/asm/mman.h
5655--- linux-2.6.29.6/arch/x86/include/asm/mman.h 2009-07-02 19:41:20.000000000 -0400
5656+++ linux-2.6.29.6/arch/x86/include/asm/mman.h 2009-07-23 17:34:32.058713430 -0400
5657@@ -17,4 +17,14 @@ 5766@@ -17,4 +17,14 @@
5658 #define MCL_CURRENT 1 /* lock all current mappings */ 5767 #define MCL_CURRENT 1 /* lock all current mappings */
5659 #define MCL_FUTURE 2 /* lock all future mappings */ 5768 #define MCL_FUTURE 2 /* lock all future mappings */
@@ -5669,14 +5778,14 @@ diff -urNp linux-2.6.29.6/arch/x86/include/asm/mman.h linux-2.6.29.6/arch/x86/in
5669+#endif 5778+#endif
5670+ 5779+
5671 #endif /* _ASM_X86_MMAN_H */ 5780 #endif /* _ASM_X86_MMAN_H */
5672diff -urNp linux-2.6.29.6/arch/x86/include/asm/mmu_context_32.h linux-2.6.29.6/arch/x86/include/asm/mmu_context_32.h 5781diff -urNp linux-2.6.30.4/arch/x86/include/asm/mmu_context.h linux-2.6.30.4/arch/x86/include/asm/mmu_context.h
5673--- linux-2.6.29.6/arch/x86/include/asm/mmu_context_32.h 2009-07-02 19:41:20.000000000 -0400 5782--- linux-2.6.30.4/arch/x86/include/asm/mmu_context.h 2009-07-24 17:47:51.000000000 -0400
5674+++ linux-2.6.29.6/arch/x86/include/asm/mmu_context_32.h 2009-07-23 17:34:32.058713430 -0400 5783+++ linux-2.6.30.4/arch/x86/include/asm/mmu_context.h 2009-07-30 09:48:09.929617473 -0400
5675@@ -14,11 +14,15 @@ static inline void switch_mm(struct mm_s 5784@@ -34,11 +34,17 @@ static inline void switch_mm(struct mm_s
5676 struct task_struct *tsk) 5785 struct task_struct *tsk)
5677 { 5786 {
5678 int cpu = smp_processor_id(); 5787 unsigned cpu = smp_processor_id();
5679+#ifdef CONFIG_SMP 5788+#if defined(CONFIG_X86_32) && defined(CONFIG_SMP)
5680+ int tlbstate = TLBSTATE_OK; 5789+ int tlbstate = TLBSTATE_OK;
5681+#endif 5790+#endif
5682 5791
@@ -5684,16 +5793,18 @@ diff -urNp linux-2.6.29.6/arch/x86/include/asm/mmu_context_32.h linux-2.6.29.6/a
5684 /* stop flush ipis for the previous mm */ 5793 /* stop flush ipis for the previous mm */
5685 cpu_clear(cpu, prev->cpu_vm_mask); 5794 cpu_clear(cpu, prev->cpu_vm_mask);
5686 #ifdef CONFIG_SMP 5795 #ifdef CONFIG_SMP
5687+ tlbstate = x86_read_percpu(cpu_tlbstate.state); 5796+#ifdef CONFIG_X86_32
5688 x86_write_percpu(cpu_tlbstate.state, TLBSTATE_OK); 5797+ tlbstate = percpu_read(cpu_tlbstate.state);
5689 x86_write_percpu(cpu_tlbstate.active_mm, next); 5798+#endif
5799 percpu_write(cpu_tlbstate.state, TLBSTATE_OK);
5800 percpu_write(cpu_tlbstate.active_mm, next);
5690 #endif 5801 #endif
5691@@ -32,6 +36,26 @@ static inline void switch_mm(struct mm_s 5802@@ -52,6 +58,26 @@ static inline void switch_mm(struct mm_s
5692 */ 5803 */
5693 if (unlikely(prev->context.ldt != next->context.ldt)) 5804 if (unlikely(prev->context.ldt != next->context.ldt))
5694 load_LDT_nolock(&next->context); 5805 load_LDT_nolock(&next->context);
5695+ 5806+
5696+#if defined(CONFIG_PAX_PAGEEXEC) && defined(CONFIG_SMP) 5807+#if defined(CONFIG_X86_32) && defined(CONFIG_PAX_PAGEEXEC) && defined(CONFIG_SMP)
5697+ if (!nx_enabled) { 5808+ if (!nx_enabled) {
5698+ smp_mb__before_clear_bit(); 5809+ smp_mb__before_clear_bit();
5699+ cpu_clear(cpu, prev->context.cpu_user_cs_mask); 5810+ cpu_clear(cpu, prev->context.cpu_user_cs_mask);
@@ -5702,7 +5813,7 @@ diff -urNp linux-2.6.29.6/arch/x86/include/asm/mmu_context_32.h linux-2.6.29.6/a
5702+ } 5813+ }
5703+#endif 5814+#endif
5704+ 5815+
5705+#if defined(CONFIG_PAX_PAGEEXEC) || defined(CONFIG_PAX_SEGMEXEC) 5816+#if defined(CONFIG_X86_32) && (defined(CONFIG_PAX_PAGEEXEC) || defined(CONFIG_PAX_SEGMEXEC))
5706+ if (unlikely(prev->context.user_cs_base != next->context.user_cs_base || 5817+ if (unlikely(prev->context.user_cs_base != next->context.user_cs_base ||
5707+ prev->context.user_cs_limit != next->context.user_cs_limit 5818+ prev->context.user_cs_limit != next->context.user_cs_limit
5708+#ifdef CONFIG_SMP 5819+#ifdef CONFIG_SMP
@@ -5715,17 +5826,17 @@ diff -urNp linux-2.6.29.6/arch/x86/include/asm/mmu_context_32.h linux-2.6.29.6/a
5715 } 5826 }
5716 #ifdef CONFIG_SMP 5827 #ifdef CONFIG_SMP
5717 else { 5828 else {
5718@@ -44,6 +68,19 @@ static inline void switch_mm(struct mm_s 5829@@ -65,6 +91,19 @@ static inline void switch_mm(struct mm_s
5719 */ 5830 */
5720 load_cr3(next->pgd); 5831 load_cr3(next->pgd);
5721 load_LDT_nolock(&next->context); 5832 load_LDT_nolock(&next->context);
5722+ 5833+
5723+#ifdef CONFIG_PAX_PAGEEXEC 5834+#if defined(CONFIG_X86_32) && defined(CONFIG_PAX_PAGEEXEC)
5724+ if (!nx_enabled) 5835+ if (!nx_enabled)
5725+ cpu_set(cpu, next->context.cpu_user_cs_mask); 5836+ cpu_set(cpu, next->context.cpu_user_cs_mask);
5726+#endif 5837+#endif
5727+ 5838+
5728+#if defined(CONFIG_PAX_PAGEEXEC) || defined(CONFIG_PAX_SEGMEXEC) 5839+#if defined(CONFIG_X86_32) && (defined(CONFIG_PAX_PAGEEXEC) || defined(CONFIG_PAX_SEGMEXEC))
5729+#ifdef CONFIG_PAX_PAGEEXEC 5840+#ifdef CONFIG_PAX_PAGEEXEC
5730+ if (!((next->pax_flags & MF_PAX_PAGEEXEC) && nx_enabled)) 5841+ if (!((next->pax_flags & MF_PAX_PAGEEXEC) && nx_enabled))
5731+#endif 5842+#endif
@@ -5735,9 +5846,9 @@ diff -urNp linux-2.6.29.6/arch/x86/include/asm/mmu_context_32.h linux-2.6.29.6/a
5735 } 5846 }
5736 } 5847 }
5737 #endif 5848 #endif
5738diff -urNp linux-2.6.29.6/arch/x86/include/asm/mmu.h linux-2.6.29.6/arch/x86/include/asm/mmu.h 5849diff -urNp linux-2.6.30.4/arch/x86/include/asm/mmu.h linux-2.6.30.4/arch/x86/include/asm/mmu.h
5739--- linux-2.6.29.6/arch/x86/include/asm/mmu.h 2009-07-02 19:41:20.000000000 -0400 5850--- linux-2.6.30.4/arch/x86/include/asm/mmu.h 2009-07-24 17:47:51.000000000 -0400
5740+++ linux-2.6.29.6/arch/x86/include/asm/mmu.h 2009-07-23 17:34:32.058713430 -0400 5851+++ linux-2.6.30.4/arch/x86/include/asm/mmu.h 2009-07-30 09:48:09.929617473 -0400
5741@@ -9,10 +9,23 @@ 5852@@ -9,10 +9,23 @@
5742 * we put the segment information here. 5853 * we put the segment information here.
5743 */ 5854 */
@@ -5764,9 +5875,9 @@ diff -urNp linux-2.6.29.6/arch/x86/include/asm/mmu.h linux-2.6.29.6/arch/x86/inc
5764 } mm_context_t; 5875 } mm_context_t;
5765 5876
5766 #ifdef CONFIG_SMP 5877 #ifdef CONFIG_SMP
5767diff -urNp linux-2.6.29.6/arch/x86/include/asm/module.h linux-2.6.29.6/arch/x86/include/asm/module.h 5878diff -urNp linux-2.6.30.4/arch/x86/include/asm/module.h linux-2.6.30.4/arch/x86/include/asm/module.h
5768--- linux-2.6.29.6/arch/x86/include/asm/module.h 2009-07-02 19:41:20.000000000 -0400 5879--- linux-2.6.30.4/arch/x86/include/asm/module.h 2009-07-24 17:47:51.000000000 -0400
5769+++ linux-2.6.29.6/arch/x86/include/asm/module.h 2009-07-23 17:34:32.058713430 -0400 5880+++ linux-2.6.30.4/arch/x86/include/asm/module.h 2009-07-30 11:10:48.877547128 -0400
5770@@ -74,7 +74,12 @@ struct mod_arch_specific {}; 5881@@ -74,7 +74,12 @@ struct mod_arch_specific {};
5771 # else 5882 # else
5772 # define MODULE_STACKSIZE "" 5883 # define MODULE_STACKSIZE ""
@@ -5781,10 +5892,10 @@ diff -urNp linux-2.6.29.6/arch/x86/include/asm/module.h linux-2.6.29.6/arch/x86/
5781 #endif 5892 #endif
5782 5893
5783 #endif /* _ASM_X86_MODULE_H */ 5894 #endif /* _ASM_X86_MODULE_H */
5784diff -urNp linux-2.6.29.6/arch/x86/include/asm/page_32.h linux-2.6.29.6/arch/x86/include/asm/page_32.h 5895diff -urNp linux-2.6.30.4/arch/x86/include/asm/page_32_types.h linux-2.6.30.4/arch/x86/include/asm/page_32_types.h
5785--- linux-2.6.29.6/arch/x86/include/asm/page_32.h 2009-07-02 19:41:20.000000000 -0400 5896--- linux-2.6.30.4/arch/x86/include/asm/page_32_types.h 2009-07-24 17:47:51.000000000 -0400
5786+++ linux-2.6.29.6/arch/x86/include/asm/page_32.h 2009-07-23 17:34:32.058713430 -0400 5897+++ linux-2.6.30.4/arch/x86/include/asm/page_32_types.h 2009-07-30 09:48:09.930625879 -0400
5787@@ -13,6 +13,23 @@ 5898@@ -15,6 +15,23 @@
5788 */ 5899 */
5789 #define __PAGE_OFFSET _AC(CONFIG_PAGE_OFFSET, UL) 5900 #define __PAGE_OFFSET _AC(CONFIG_PAGE_OFFSET, UL)
5790 5901
@@ -5808,10 +5919,10 @@ diff -urNp linux-2.6.29.6/arch/x86/include/asm/page_32.h linux-2.6.29.6/arch/x86
5808 #ifdef CONFIG_4KSTACKS 5919 #ifdef CONFIG_4KSTACKS
5809 #define THREAD_ORDER 0 5920 #define THREAD_ORDER 0
5810 #else 5921 #else
5811diff -urNp linux-2.6.29.6/arch/x86/include/asm/page_64.h linux-2.6.29.6/arch/x86/include/asm/page_64.h 5922diff -urNp linux-2.6.30.4/arch/x86/include/asm/page_64_types.h linux-2.6.30.4/arch/x86/include/asm/page_64_types.h
5812--- linux-2.6.29.6/arch/x86/include/asm/page_64.h 2009-07-02 19:41:20.000000000 -0400 5923--- linux-2.6.30.4/arch/x86/include/asm/page_64_types.h 2009-07-24 17:47:51.000000000 -0400
5813+++ linux-2.6.29.6/arch/x86/include/asm/page_64.h 2009-07-23 17:34:32.058713430 -0400 5924+++ linux-2.6.30.4/arch/x86/include/asm/page_64_types.h 2009-07-30 09:48:09.930625879 -0400
5814@@ -49,6 +49,9 @@ 5925@@ -47,6 +47,9 @@
5815 #define __START_KERNEL (__START_KERNEL_map + __PHYSICAL_START) 5926 #define __START_KERNEL (__START_KERNEL_map + __PHYSICAL_START)
5816 #define __START_KERNEL_map _AC(0xffffffff80000000, UL) 5927 #define __START_KERNEL_map _AC(0xffffffff80000000, UL)
5817 5928
@@ -5821,18 +5932,11 @@ diff -urNp linux-2.6.29.6/arch/x86/include/asm/page_64.h linux-2.6.29.6/arch/x86
5821 /* See Documentation/x86_64/mm.txt for a description of the memory map. */ 5932 /* See Documentation/x86_64/mm.txt for a description of the memory map. */
5822 #define __PHYSICAL_MASK_SHIFT 46 5933 #define __PHYSICAL_MASK_SHIFT 46
5823 #define __VIRTUAL_MASK_SHIFT 48 5934 #define __VIRTUAL_MASK_SHIFT 48
5824@@ -101,5 +104,6 @@ extern void init_extra_mapping_wb(unsign 5935diff -urNp linux-2.6.30.4/arch/x86/include/asm/paravirt.h linux-2.6.30.4/arch/x86/include/asm/paravirt.h
5825 #define pfn_valid(pfn) ((pfn) < max_pfn) 5936--- linux-2.6.30.4/arch/x86/include/asm/paravirt.h 2009-07-24 17:47:51.000000000 -0400
5826 #endif 5937+++ linux-2.6.30.4/arch/x86/include/asm/paravirt.h 2009-07-30 09:48:09.931536832 -0400
5938@@ -1688,7 +1688,7 @@ static inline unsigned long __raw_local_
5827 5939
5828+#define nx_enabled (1)
5829
5830 #endif /* _ASM_X86_PAGE_64_H */
5831diff -urNp linux-2.6.29.6/arch/x86/include/asm/paravirt.h linux-2.6.29.6/arch/x86/include/asm/paravirt.h
5832--- linux-2.6.29.6/arch/x86/include/asm/paravirt.h 2009-07-02 19:41:20.000000000 -0400
5833+++ linux-2.6.29.6/arch/x86/include/asm/paravirt.h 2009-07-23 17:34:32.058713430 -0400
5834@@ -1558,7 +1558,7 @@ static inline unsigned long __raw_local_
5835 #define PV_RESTORE_REGS popl %edx; popl %ecx; popl %edi; popl %eax
5836 #define PARA_PATCH(struct, off) ((PARAVIRT_PATCH_##struct + (off)) / 4) 5940 #define PARA_PATCH(struct, off) ((PARAVIRT_PATCH_##struct + (off)) / 4)
5837 #define PARA_SITE(ptype, clobbers, ops) _PVSITE(ptype, clobbers, ops, .long, 4) 5941 #define PARA_SITE(ptype, clobbers, ops) _PVSITE(ptype, clobbers, ops, .long, 4)
5838-#define PARA_INDIRECT(addr) *%cs:addr 5942-#define PARA_INDIRECT(addr) *%cs:addr
@@ -5840,40 +5944,9 @@ diff -urNp linux-2.6.29.6/arch/x86/include/asm/paravirt.h linux-2.6.29.6/arch/x8
5840 #endif 5944 #endif
5841 5945
5842 #define INTERRUPT_RETURN \ 5946 #define INTERRUPT_RETURN \
5843diff -urNp linux-2.6.29.6/arch/x86/include/asm/pda.h linux-2.6.29.6/arch/x86/include/asm/pda.h 5947diff -urNp linux-2.6.30.4/arch/x86/include/asm/pgalloc.h linux-2.6.30.4/arch/x86/include/asm/pgalloc.h
5844--- linux-2.6.29.6/arch/x86/include/asm/pda.h 2009-07-02 19:41:20.000000000 -0400 5948--- linux-2.6.30.4/arch/x86/include/asm/pgalloc.h 2009-07-24 17:47:51.000000000 -0400
5845+++ linux-2.6.29.6/arch/x86/include/asm/pda.h 2009-07-23 17:34:32.059930875 -0400 5949+++ linux-2.6.30.4/arch/x86/include/asm/pgalloc.h 2009-07-30 09:48:09.931536832 -0400
5846@@ -16,11 +16,9 @@ struct x8664_pda {
5847 unsigned long oldrsp; /* 24 user rsp for system call */
5848 int irqcount; /* 32 Irq nesting counter. Starts -1 */
5849 unsigned int cpunumber; /* 36 Logical CPU number */
5850-#ifdef CONFIG_CC_STACKPROTECTOR
5851 unsigned long stack_canary; /* 40 stack canary value */
5852 /* gcc-ABI: this canary MUST be at
5853 offset 40!!! */
5854-#endif
5855 char *irqstackptr;
5856 short nodenumber; /* number of current node (32k max) */
5857 short in_bootmem; /* pda lives in bootmem */
5858diff -urNp linux-2.6.29.6/arch/x86/include/asm/percpu.h linux-2.6.29.6/arch/x86/include/asm/percpu.h
5859--- linux-2.6.29.6/arch/x86/include/asm/percpu.h 2009-07-02 19:41:20.000000000 -0400
5860+++ linux-2.6.29.6/arch/x86/include/asm/percpu.h 2009-07-23 17:34:32.059930875 -0400
5861@@ -93,6 +93,12 @@ DECLARE_PER_CPU(struct x8664_pda, pda);
5862
5863 #define __my_cpu_offset x86_read_percpu(this_cpu_off)
5864
5865+#include <asm-generic/sections.h>
5866+#include <linux/threads.h>
5867+#define __per_cpu_offset __per_cpu_offset
5868+extern unsigned long __per_cpu_offset[NR_CPUS];
5869+#define per_cpu_offset(x) (__per_cpu_offset[x] + (unsigned long)__per_cpu_start)
5870+
5871 /* fs segment starts at (positive) offset == __per_cpu_offset[cpu] */
5872 #define __percpu_seg "%%fs:"
5873
5874diff -urNp linux-2.6.29.6/arch/x86/include/asm/pgalloc.h linux-2.6.29.6/arch/x86/include/asm/pgalloc.h
5875--- linux-2.6.29.6/arch/x86/include/asm/pgalloc.h 2009-07-02 19:41:20.000000000 -0400
5876+++ linux-2.6.29.6/arch/x86/include/asm/pgalloc.h 2009-07-23 17:34:32.059930875 -0400
5877@@ -52,7 +52,7 @@ static inline void pmd_populate_kernel(s 5950@@ -52,7 +52,7 @@ static inline void pmd_populate_kernel(s
5878 pmd_t *pmd, pte_t *pte) 5951 pmd_t *pmd, pte_t *pte)
5879 { 5952 {
@@ -5883,9 +5956,9 @@ diff -urNp linux-2.6.29.6/arch/x86/include/asm/pgalloc.h linux-2.6.29.6/arch/x86
5883 } 5956 }
5884 5957
5885 static inline void pmd_populate(struct mm_struct *mm, pmd_t *pmd, 5958 static inline void pmd_populate(struct mm_struct *mm, pmd_t *pmd,
5886diff -urNp linux-2.6.29.6/arch/x86/include/asm/pgtable-2level.h linux-2.6.29.6/arch/x86/include/asm/pgtable-2level.h 5959diff -urNp linux-2.6.30.4/arch/x86/include/asm/pgtable-2level.h linux-2.6.30.4/arch/x86/include/asm/pgtable-2level.h
5887--- linux-2.6.29.6/arch/x86/include/asm/pgtable-2level.h 2009-07-02 19:41:20.000000000 -0400 5960--- linux-2.6.30.4/arch/x86/include/asm/pgtable-2level.h 2009-07-24 17:47:51.000000000 -0400
5888+++ linux-2.6.29.6/arch/x86/include/asm/pgtable-2level.h 2009-07-23 17:34:32.059930875 -0400 5961+++ linux-2.6.30.4/arch/x86/include/asm/pgtable-2level.h 2009-07-30 09:48:09.931536832 -0400
5889@@ -18,7 +18,19 @@ static inline void native_set_pte(pte_t 5962@@ -18,7 +18,19 @@ static inline void native_set_pte(pte_t
5890 5963
5891 static inline void native_set_pmd(pmd_t *pmdp, pmd_t pmd) 5964 static inline void native_set_pmd(pmd_t *pmdp, pmd_t pmd)
@@ -5906,10 +5979,10 @@ diff -urNp linux-2.6.29.6/arch/x86/include/asm/pgtable-2level.h linux-2.6.29.6/a
5906 } 5979 }
5907 5980
5908 static inline void native_set_pte_atomic(pte_t *ptep, pte_t pte) 5981 static inline void native_set_pte_atomic(pte_t *ptep, pte_t pte)
5909diff -urNp linux-2.6.29.6/arch/x86/include/asm/pgtable_32.h linux-2.6.29.6/arch/x86/include/asm/pgtable_32.h 5982diff -urNp linux-2.6.30.4/arch/x86/include/asm/pgtable_32.h linux-2.6.30.4/arch/x86/include/asm/pgtable_32.h
5910--- linux-2.6.29.6/arch/x86/include/asm/pgtable_32.h 2009-07-02 19:41:20.000000000 -0400 5983--- linux-2.6.30.4/arch/x86/include/asm/pgtable_32.h 2009-07-24 17:47:51.000000000 -0400
5911+++ linux-2.6.29.6/arch/x86/include/asm/pgtable_32.h 2009-07-23 17:34:37.457730203 -0400 5984+++ linux-2.6.30.4/arch/x86/include/asm/pgtable_32.h 2009-07-30 09:48:09.932929020 -0400
5912@@ -25,8 +25,6 @@ 5985@@ -26,8 +26,6 @@
5913 struct mm_struct; 5986 struct mm_struct;
5914 struct vm_area_struct; 5987 struct vm_area_struct;
5915 5988
@@ -5918,8 +5991,8 @@ diff -urNp linux-2.6.29.6/arch/x86/include/asm/pgtable_32.h linux-2.6.29.6/arch/
5918 static inline void pgtable_cache_init(void) { } 5991 static inline void pgtable_cache_init(void) { }
5919 static inline void check_pgt_cache(void) { } 5992 static inline void check_pgt_cache(void) { }
5920 void paging_init(void); 5993 void paging_init(void);
5921@@ -46,6 +44,12 @@ extern void set_pmd_pfn(unsigned long, u 5994@@ -48,6 +46,12 @@ extern void set_pmd_pfn(unsigned long, u
5922 # include <asm/pgtable-2level-defs.h> 5995 # include <asm/pgtable-2level.h>
5923 #endif 5996 #endif
5924 5997
5925+extern pgd_t swapper_pg_dir[PTRS_PER_PGD]; 5998+extern pgd_t swapper_pg_dir[PTRS_PER_PGD];
@@ -5928,19 +6001,10 @@ diff -urNp linux-2.6.29.6/arch/x86/include/asm/pgtable_32.h linux-2.6.29.6/arch/
5928+#endif 6001+#endif
5929+extern pte_t swapper_pg_fixmap[PTRS_PER_PMD]; 6002+extern pte_t swapper_pg_fixmap[PTRS_PER_PMD];
5930+ 6003+
5931 #define PGDIR_SIZE (1UL << PGDIR_SHIFT) 6004 #if defined(CONFIG_HIGHPTE)
5932 #define PGDIR_MASK (~(PGDIR_SIZE - 1)) 6005 #define pte_offset_map(dir, address) \
5933 6006 ((pte_t *)kmap_atomic_pte(pmd_page(*(dir)), KM_PTE0) + \
5934@@ -83,7 +87,7 @@ extern void set_pmd_pfn(unsigned long, u 6007@@ -80,6 +84,9 @@ do { \
5935 #undef TEST_ACCESS_OK
5936
5937 /* The boot page tables (all created as a single array) */
5938-extern unsigned long pg0[];
5939+extern pte_t pg0[];
5940
5941 #define pte_present(x) ((x).pte_low & (_PAGE_PRESENT | _PAGE_PROTNONE))
5942
5943@@ -166,6 +170,9 @@ do { \
5944 6008
5945 #endif /* !__ASSEMBLY__ */ 6009 #endif /* !__ASSEMBLY__ */
5946 6010
@@ -5950,10 +6014,10 @@ diff -urNp linux-2.6.29.6/arch/x86/include/asm/pgtable_32.h linux-2.6.29.6/arch/
5950 /* 6014 /*
5951 * kern_addr_valid() is (1) for FLATMEM and (0) for 6015 * kern_addr_valid() is (1) for FLATMEM and (0) for
5952 * SPARSEMEM and DISCONTIGMEM 6016 * SPARSEMEM and DISCONTIGMEM
5953diff -urNp linux-2.6.29.6/arch/x86/include/asm/pgtable-3level.h linux-2.6.29.6/arch/x86/include/asm/pgtable-3level.h 6017diff -urNp linux-2.6.30.4/arch/x86/include/asm/pgtable-3level.h linux-2.6.30.4/arch/x86/include/asm/pgtable-3level.h
5954--- linux-2.6.29.6/arch/x86/include/asm/pgtable-3level.h 2009-07-02 19:41:20.000000000 -0400 6018--- linux-2.6.30.4/arch/x86/include/asm/pgtable-3level.h 2009-07-24 17:47:51.000000000 -0400
5955+++ linux-2.6.29.6/arch/x86/include/asm/pgtable-3level.h 2009-07-23 17:34:32.060764502 -0400 6019+++ linux-2.6.30.4/arch/x86/include/asm/pgtable-3level.h 2009-07-30 09:48:09.931536832 -0400
5956@@ -70,12 +70,36 @@ static inline void native_set_pte_atomic 6020@@ -38,12 +38,36 @@ static inline void native_set_pte_atomic
5957 6021
5958 static inline void native_set_pmd(pmd_t *pmdp, pmd_t pmd) 6022 static inline void native_set_pmd(pmd_t *pmdp, pmd_t pmd)
5959 { 6023 {
@@ -5990,10 +6054,10 @@ diff -urNp linux-2.6.29.6/arch/x86/include/asm/pgtable-3level.h linux-2.6.29.6/a
5990 } 6054 }
5991 6055
5992 /* 6056 /*
5993diff -urNp linux-2.6.29.6/arch/x86/include/asm/pgtable_64.h linux-2.6.29.6/arch/x86/include/asm/pgtable_64.h 6057diff -urNp linux-2.6.30.4/arch/x86/include/asm/pgtable_64.h linux-2.6.30.4/arch/x86/include/asm/pgtable_64.h
5994--- linux-2.6.29.6/arch/x86/include/asm/pgtable_64.h 2009-07-02 19:41:20.000000000 -0400 6058--- linux-2.6.30.4/arch/x86/include/asm/pgtable_64.h 2009-07-24 17:47:51.000000000 -0400
5995+++ linux-2.6.29.6/arch/x86/include/asm/pgtable_64.h 2009-07-23 17:34:32.060764502 -0400 6059+++ linux-2.6.30.4/arch/x86/include/asm/pgtable_64.h 2009-07-30 09:48:09.932929020 -0400
5996@@ -15,9 +15,12 @@ 6060@@ -16,9 +16,12 @@
5997 6061
5998 extern pud_t level3_kernel_pgt[512]; 6062 extern pud_t level3_kernel_pgt[512];
5999 extern pud_t level3_ident_pgt[512]; 6063 extern pud_t level3_ident_pgt[512];
@@ -6007,7 +6071,7 @@ diff -urNp linux-2.6.29.6/arch/x86/include/asm/pgtable_64.h linux-2.6.29.6/arch/
6007 extern pgd_t init_level4_pgt[]; 6071 extern pgd_t init_level4_pgt[];
6008 6072
6009 #define swapper_pg_dir init_level4_pgt 6073 #define swapper_pg_dir init_level4_pgt
6010@@ -106,7 +109,19 @@ static inline pte_t native_ptep_get_and_ 6074@@ -78,7 +81,19 @@ static inline pte_t native_ptep_get_and_
6011 6075
6012 static inline void native_set_pmd(pmd_t *pmdp, pmd_t pmd) 6076 static inline void native_set_pmd(pmd_t *pmdp, pmd_t pmd)
6013 { 6077 {
@@ -6027,31 +6091,86 @@ diff -urNp linux-2.6.29.6/arch/x86/include/asm/pgtable_64.h linux-2.6.29.6/arch/
6027 } 6091 }
6028 6092
6029 static inline void native_pmd_clear(pmd_t *pmd) 6093 static inline void native_pmd_clear(pmd_t *pmd)
6030@@ -158,17 +173,17 @@ static inline void native_pgd_clear(pgd_ 6094diff -urNp linux-2.6.30.4/arch/x86/include/asm/pgtable.h linux-2.6.30.4/arch/x86/include/asm/pgtable.h
6095--- linux-2.6.30.4/arch/x86/include/asm/pgtable.h 2009-07-24 17:47:51.000000000 -0400
6096+++ linux-2.6.30.4/arch/x86/include/asm/pgtable.h 2009-07-30 09:48:09.932929020 -0400
6097@@ -87,6 +87,11 @@ static inline void __init paravirt_paget
6098 * The following only work if pte_present() is true.
6099 * Undefined behaviour if not..
6100 */
6101+static inline int pte_user(pte_t pte)
6102+{
6103+ return pte_val(pte) & _PAGE_USER;
6104+}
6105+
6106 static inline int pte_dirty(pte_t pte)
6107 {
6108 return pte_flags(pte) & _PAGE_DIRTY;
6109@@ -169,9 +174,29 @@ static inline pte_t pte_wrprotect(pte_t
6110 return pte_clear_flags(pte, _PAGE_RW);
6111 }
6031 6112
6032 static inline int pgd_bad(pgd_t pgd) 6113+static inline pte_t pte_mkread(pte_t pte)
6114+{
6115+ return __pte(pte_val(pte) | _PAGE_USER);
6116+}
6117+
6118 static inline pte_t pte_mkexec(pte_t pte)
6033 { 6119 {
6034- return (pgd_val(pgd) & ~(PTE_PFN_MASK | _PAGE_USER)) != _KERNPG_TABLE; 6120- return pte_clear_flags(pte, _PAGE_NX);
6035+ return (pgd_val(pgd) & ~(PTE_PFN_MASK | _PAGE_USER | _PAGE_NX)) != _KERNPG_TABLE; 6121+#ifdef CONFIG_X86_PAE
6122+ if (__supported_pte_mask & _PAGE_NX)
6123+ return pte_clear_flags(pte, _PAGE_NX);
6124+ else
6125+#endif
6126+ return pte_set_flags(pte, _PAGE_USER);
6127+}
6128+
6129+static inline pte_t pte_exprotect(pte_t pte)
6130+{
6131+#ifdef CONFIG_X86_PAE
6132+ if (__supported_pte_mask & _PAGE_NX)
6133+ return pte_set_flags(pte, _PAGE_NX);
6134+ else
6135+#endif
6136+ return pte_clear_flags(pte, _PAGE_USER);
6036 } 6137 }
6037 6138
6038 static inline int pud_bad(pud_t pud) 6139 static inline pte_t pte_mkdirty(pte_t pte)
6140@@ -467,7 +492,7 @@ static inline pud_t *pud_offset(pgd_t *p
6141
6142 static inline int pgd_bad(pgd_t pgd)
6039 { 6143 {
6040- return (pud_val(pud) & ~(PTE_PFN_MASK | _PAGE_USER)) != _KERNPG_TABLE; 6144- return (pgd_flags(pgd) & ~_PAGE_USER) != _KERNPG_TABLE;
6041+ return (pud_val(pud) & ~(PTE_PFN_MASK | _PAGE_USER | _PAGE_NX)) != _KERNPG_TABLE; 6145+ return (pgd_flags(pgd) & ~(_PAGE_USER | _PAGE_NX)) != _KERNPG_TABLE;
6042 } 6146 }
6043 6147
6044 static inline int pmd_bad(pmd_t pmd) 6148 static inline int pgd_none(pgd_t pgd)
6149@@ -606,7 +631,19 @@ static inline void ptep_set_wrprotect(st
6150 */
6151 static inline void clone_pgd_range(pgd_t *dst, pgd_t *src, int count)
6045 { 6152 {
6046- return (pmd_val(pmd) & ~(PTE_PFN_MASK | _PAGE_USER)) != _KERNPG_TABLE; 6153- memcpy(dst, src, count * sizeof(pgd_t));
6047+ return (pmd_val(pmd) & ~(PTE_PFN_MASK | _PAGE_USER | _PAGE_NX)) != _KERNPG_TABLE; 6154+
6155+#ifdef CONFIG_PAX_KERNEXEC
6156+ unsigned long cr0;
6157+
6158+ pax_open_kernel(cr0);
6159+#endif
6160+
6161+ memcpy(dst, src, count * sizeof(pgd_t));
6162+
6163+#ifdef CONFIG_PAX_KERNEXEC
6164+ pax_close_kernel(cr0);
6165+#endif
6166+
6048 } 6167 }
6049 6168
6050 #define pte_none(x) (!pte_val((x))) 6169
6051diff -urNp linux-2.6.29.6/arch/x86/include/asm/pgtable.h linux-2.6.29.6/arch/x86/include/asm/pgtable.h 6170diff -urNp linux-2.6.30.4/arch/x86/include/asm/pgtable_types.h linux-2.6.30.4/arch/x86/include/asm/pgtable_types.h
6052--- linux-2.6.29.6/arch/x86/include/asm/pgtable.h 2009-07-02 19:41:20.000000000 -0400 6171--- linux-2.6.30.4/arch/x86/include/asm/pgtable_types.h 2009-07-24 17:47:51.000000000 -0400
6053+++ linux-2.6.29.6/arch/x86/include/asm/pgtable.h 2009-07-23 17:35:05.043783588 -0400 6172+++ linux-2.6.30.4/arch/x86/include/asm/pgtable_types.h 2009-07-30 19:56:23.227966500 -0400
6054@@ -13,12 +13,11 @@ 6173@@ -16,12 +16,11 @@
6055 #define _PAGE_BIT_PSE 7 /* 4 MB (or 2MB) page */ 6174 #define _PAGE_BIT_PSE 7 /* 4 MB (or 2MB) page */
6056 #define _PAGE_BIT_PAT 7 /* on 4KB pages */ 6175 #define _PAGE_BIT_PAT 7 /* on 4KB pages */
6057 #define _PAGE_BIT_GLOBAL 8 /* Global TLB entry PPro+ */ 6176 #define _PAGE_BIT_GLOBAL 8 /* Global TLB entry PPro+ */
@@ -6066,7 +6185,7 @@ diff -urNp linux-2.6.29.6/arch/x86/include/asm/pgtable.h linux-2.6.29.6/arch/x86
6066 #define _PAGE_BIT_NX 63 /* No execute: only valid after cpuid check */ 6185 #define _PAGE_BIT_NX 63 /* No execute: only valid after cpuid check */
6067 6186
6068 /* If _PAGE_BIT_PRESENT is clear, we use these: */ 6187 /* If _PAGE_BIT_PRESENT is clear, we use these: */
6069@@ -36,7 +35,6 @@ 6188@@ -39,7 +38,6 @@
6070 #define _PAGE_DIRTY (_AT(pteval_t, 1) << _PAGE_BIT_DIRTY) 6189 #define _PAGE_DIRTY (_AT(pteval_t, 1) << _PAGE_BIT_DIRTY)
6071 #define _PAGE_PSE (_AT(pteval_t, 1) << _PAGE_BIT_PSE) 6190 #define _PAGE_PSE (_AT(pteval_t, 1) << _PAGE_BIT_PSE)
6072 #define _PAGE_GLOBAL (_AT(pteval_t, 1) << _PAGE_BIT_GLOBAL) 6191 #define _PAGE_GLOBAL (_AT(pteval_t, 1) << _PAGE_BIT_GLOBAL)
@@ -6074,7 +6193,7 @@ diff -urNp linux-2.6.29.6/arch/x86/include/asm/pgtable.h linux-2.6.29.6/arch/x86
6074 #define _PAGE_IOMAP (_AT(pteval_t, 1) << _PAGE_BIT_IOMAP) 6193 #define _PAGE_IOMAP (_AT(pteval_t, 1) << _PAGE_BIT_IOMAP)
6075 #define _PAGE_UNUSED3 (_AT(pteval_t, 1) << _PAGE_BIT_UNUSED3) 6194 #define _PAGE_UNUSED3 (_AT(pteval_t, 1) << _PAGE_BIT_UNUSED3)
6076 #define _PAGE_PAT (_AT(pteval_t, 1) << _PAGE_BIT_PAT) 6195 #define _PAGE_PAT (_AT(pteval_t, 1) << _PAGE_BIT_PAT)
6077@@ -48,7 +46,7 @@ 6196@@ -51,7 +49,7 @@
6078 #if defined(CONFIG_X86_64) || defined(CONFIG_X86_PAE) 6197 #if defined(CONFIG_X86_64) || defined(CONFIG_X86_PAE)
6079 #define _PAGE_NX (_AT(pteval_t, 1) << _PAGE_BIT_NX) 6198 #define _PAGE_NX (_AT(pteval_t, 1) << _PAGE_BIT_NX)
6080 #else 6199 #else
@@ -6083,7 +6202,7 @@ diff -urNp linux-2.6.29.6/arch/x86/include/asm/pgtable.h linux-2.6.29.6/arch/x86
6083 #endif 6202 #endif
6084 6203
6085 #define _PAGE_FILE (_AT(pteval_t, 1) << _PAGE_BIT_FILE) 6204 #define _PAGE_FILE (_AT(pteval_t, 1) << _PAGE_BIT_FILE)
6086@@ -85,6 +83,9 @@ 6205@@ -88,6 +86,9 @@
6087 #define PAGE_READONLY_EXEC __pgprot(_PAGE_PRESENT | _PAGE_USER | \ 6206 #define PAGE_READONLY_EXEC __pgprot(_PAGE_PRESENT | _PAGE_USER | \
6088 _PAGE_ACCESSED) 6207 _PAGE_ACCESSED)
6089 6208
@@ -6093,7 +6212,7 @@ diff -urNp linux-2.6.29.6/arch/x86/include/asm/pgtable.h linux-2.6.29.6/arch/x86
6093 #define __PAGE_KERNEL_EXEC \ 6212 #define __PAGE_KERNEL_EXEC \
6094 (_PAGE_PRESENT | _PAGE_RW | _PAGE_DIRTY | _PAGE_ACCESSED | _PAGE_GLOBAL) 6213 (_PAGE_PRESENT | _PAGE_RW | _PAGE_DIRTY | _PAGE_ACCESSED | _PAGE_GLOBAL)
6095 #define __PAGE_KERNEL (__PAGE_KERNEL_EXEC | _PAGE_NX) 6214 #define __PAGE_KERNEL (__PAGE_KERNEL_EXEC | _PAGE_NX)
6096@@ -95,8 +96,8 @@ 6215@@ -98,8 +99,8 @@
6097 #define __PAGE_KERNEL_WC (__PAGE_KERNEL | _PAGE_CACHE_WC) 6216 #define __PAGE_KERNEL_WC (__PAGE_KERNEL | _PAGE_CACHE_WC)
6098 #define __PAGE_KERNEL_NOCACHE (__PAGE_KERNEL | _PAGE_PCD | _PAGE_PWT) 6217 #define __PAGE_KERNEL_NOCACHE (__PAGE_KERNEL | _PAGE_PCD | _PAGE_PWT)
6099 #define __PAGE_KERNEL_UC_MINUS (__PAGE_KERNEL | _PAGE_PCD) 6218 #define __PAGE_KERNEL_UC_MINUS (__PAGE_KERNEL | _PAGE_PCD)
@@ -6104,7 +6223,7 @@ diff -urNp linux-2.6.29.6/arch/x86/include/asm/pgtable.h linux-2.6.29.6/arch/x86
6104 #define __PAGE_KERNEL_LARGE (__PAGE_KERNEL | _PAGE_PSE) 6223 #define __PAGE_KERNEL_LARGE (__PAGE_KERNEL | _PAGE_PSE)
6105 #define __PAGE_KERNEL_LARGE_NOCACHE (__PAGE_KERNEL | _PAGE_CACHE_UC | _PAGE_PSE) 6224 #define __PAGE_KERNEL_LARGE_NOCACHE (__PAGE_KERNEL | _PAGE_CACHE_UC | _PAGE_PSE)
6106 #define __PAGE_KERNEL_LARGE_EXEC (__PAGE_KERNEL_EXEC | _PAGE_PSE) 6225 #define __PAGE_KERNEL_LARGE_EXEC (__PAGE_KERNEL_EXEC | _PAGE_PSE)
6107@@ -155,8 +156,8 @@ 6226@@ -158,8 +159,8 @@
6108 * bits are combined, this will alow user to access the high address mapped 6227 * bits are combined, this will alow user to access the high address mapped
6109 * VDSO in the presence of CONFIG_COMPAT_VDSO 6228 * VDSO in the presence of CONFIG_COMPAT_VDSO
6110 */ 6229 */
@@ -6115,101 +6234,34 @@ diff -urNp linux-2.6.29.6/arch/x86/include/asm/pgtable.h linux-2.6.29.6/arch/x86
6115 #define PGD_IDENT_ATTR 0x001 /* PRESENT (no other attributes) */ 6234 #define PGD_IDENT_ATTR 0x001 /* PRESENT (no other attributes) */
6116 #endif 6235 #endif
6117 6236
6118@@ -183,10 +184,17 @@ extern unsigned long empty_zero_page[PAG 6237@@ -272,7 +273,11 @@ static inline pteval_t pte_flags(pte_t p
6119 extern spinlock_t pgd_lock; 6238 typedef struct page *pgtable_t;
6120 extern struct list_head pgd_list;
6121
6122+extern pteval_t __supported_pte_mask;
6123+
6124 /*
6125 * The following only work if pte_present() is true.
6126 * Undefined behaviour if not..
6127 */
6128+static inline int pte_user(pte_t pte)
6129+{
6130+ return pte_val(pte) & _PAGE_USER;
6131+}
6132+
6133 static inline int pte_dirty(pte_t pte)
6134 {
6135 return pte_flags(pte) & _PAGE_DIRTY;
6136@@ -255,9 +263,29 @@ static inline pte_t pte_wrprotect(pte_t
6137 return __pte(pte_val(pte) & ~_PAGE_RW);
6138 }
6139 6239
6140+static inline pte_t pte_mkread(pte_t pte) 6240 extern pteval_t __supported_pte_mask;
6141+{ 6241+#ifdef CONFIG_X86_32
6142+ return __pte(pte_val(pte) | _PAGE_USER); 6242 extern int nx_enabled;
6143+} 6243+#else
6144+ 6244+#define nx_enabled (1)
6145 static inline pte_t pte_mkexec(pte_t pte)
6146 {
6147- return __pte(pte_val(pte) & ~_PAGE_NX);
6148+#ifdef CONFIG_X86_PAE
6149+ if (__supported_pte_mask & _PAGE_NX)
6150+ return __pte(pte_val(pte) & ~(pteval_t)_PAGE_NX);
6151+ else
6152+#endif
6153+ return __pte(pte_val(pte) | _PAGE_USER);
6154+}
6155+
6156+static inline pte_t pte_exprotect(pte_t pte)
6157+{
6158+#ifdef CONFIG_X86_PAE
6159+ if (__supported_pte_mask & _PAGE_NX)
6160+ return __pte(pte_val(pte) | _PAGE_NX);
6161+ else
6162+#endif
6163+ return __pte(pte_val(pte) & ~_PAGE_USER);
6164 }
6165
6166 static inline pte_t pte_mkdirty(pte_t pte)
6167@@ -300,8 +328,6 @@ static inline pte_t pte_mkspecial(pte_t
6168 return __pte(pte_val(pte) | _PAGE_SPECIAL);
6169 }
6170
6171-extern pteval_t __supported_pte_mask;
6172-
6173 /*
6174 * Mask out unsupported bits in a present pgprot. Non-present pgprots
6175 * can use those bits for other purposes, so leave them be.
6176@@ -601,7 +627,19 @@ static inline void ptep_set_wrprotect(st
6177 */
6178 static inline void clone_pgd_range(pgd_t *dst, pgd_t *src, int count)
6179 {
6180- memcpy(dst, src, count * sizeof(pgd_t));
6181+
6182+#ifdef CONFIG_PAX_KERNEXEC
6183+ unsigned long cr0;
6184+
6185+ pax_open_kernel(cr0);
6186+#endif
6187+
6188+ memcpy(dst, src, count * sizeof(pgd_t));
6189+
6190+#ifdef CONFIG_PAX_KERNEXEC
6191+ pax_close_kernel(cr0);
6192+#endif 6245+#endif
6193+ 6246 extern void set_nx(void);
6194 }
6195
6196 6247
6197diff -urNp linux-2.6.29.6/arch/x86/include/asm/processor.h linux-2.6.29.6/arch/x86/include/asm/processor.h 6248 #define pgprot_writecombine pgprot_writecombine
6198--- linux-2.6.29.6/arch/x86/include/asm/processor.h 2009-07-02 19:41:20.000000000 -0400 6249diff -urNp linux-2.6.30.4/arch/x86/include/asm/processor.h linux-2.6.30.4/arch/x86/include/asm/processor.h
6199+++ linux-2.6.29.6/arch/x86/include/asm/processor.h 2009-07-23 17:34:32.060764502 -0400 6250--- linux-2.6.30.4/arch/x86/include/asm/processor.h 2009-07-24 17:47:51.000000000 -0400
6200@@ -275,7 +275,7 @@ struct tss_struct { 6251+++ linux-2.6.30.4/arch/x86/include/asm/processor.h 2009-07-30 09:48:09.933533479 -0400
6252@@ -270,7 +270,7 @@ struct tss_struct {
6201 6253
6202 } ____cacheline_aligned; 6254 } ____cacheline_aligned;
6203 6255
6204-DECLARE_PER_CPU(struct tss_struct, init_tss); 6256-DECLARE_PER_CPU_SHARED_ALIGNED(struct tss_struct, init_tss);
6205+extern struct tss_struct init_tss[NR_CPUS]; 6257+extern struct tss_struct init_tss[NR_CPUS];
6206 6258
6207 /* 6259 /*
6208 * Save the original ist values for checking stack pointers during debugging 6260 * Save the original ist values for checking stack pointers during debugging
6209@@ -839,11 +839,20 @@ static inline void spin_lock_prefetch(co 6261@@ -866,8 +866,17 @@ static inline void spin_lock_prefetch(co
6210 * User space process size: 3GB (default).
6211 */ 6262 */
6212 #define TASK_SIZE PAGE_OFFSET 6263 #define TASK_SIZE PAGE_OFFSET
6264 #define TASK_SIZE_MAX TASK_SIZE
6213+ 6265+
6214+#ifdef CONFIG_PAX_SEGMEXEC 6266+#ifdef CONFIG_PAX_SEGMEXEC
6215+#define SEGMEXEC_TASK_SIZE (TASK_SIZE / 2) 6267+#define SEGMEXEC_TASK_SIZE (TASK_SIZE / 2)
@@ -6224,12 +6276,8 @@ diff -urNp linux-2.6.29.6/arch/x86/include/asm/processor.h linux-2.6.29.6/arch/x
6224+#define STACK_TOP_MAX TASK_SIZE 6276+#define STACK_TOP_MAX TASK_SIZE
6225 6277
6226 #define INIT_THREAD { \ 6278 #define INIT_THREAD { \
6227- .sp0 = sizeof(init_stack) + (long)&init_stack, \ 6279 .sp0 = sizeof(init_stack) + (long)&init_stack, \
6228+ .sp0 = sizeof(init_stack) + (long)&init_stack - 8, \ 6280@@ -885,7 +894,7 @@ static inline void spin_lock_prefetch(co
6229 .vm86_info = NULL, \
6230 .sysenter_cs = __KERNEL_CS, \
6231 .io_bitmap_ptr = NULL, \
6232@@ -858,7 +867,7 @@ static inline void spin_lock_prefetch(co
6233 */ 6281 */
6234 #define INIT_TSS { \ 6282 #define INIT_TSS { \
6235 .x86_tss = { \ 6283 .x86_tss = { \
@@ -6238,7 +6286,7 @@ diff -urNp linux-2.6.29.6/arch/x86/include/asm/processor.h linux-2.6.29.6/arch/x
6238 .ss0 = __KERNEL_DS, \ 6286 .ss0 = __KERNEL_DS, \
6239 .ss1 = __KERNEL_CS, \ 6287 .ss1 = __KERNEL_CS, \
6240 .io_bitmap_base = INVALID_IO_BITMAP_OFFSET, \ 6288 .io_bitmap_base = INVALID_IO_BITMAP_OFFSET, \
6241@@ -869,11 +878,7 @@ static inline void spin_lock_prefetch(co 6289@@ -896,11 +905,7 @@ static inline void spin_lock_prefetch(co
6242 extern unsigned long thread_saved_pc(struct task_struct *tsk); 6290 extern unsigned long thread_saved_pc(struct task_struct *tsk);
6243 6291
6244 #define THREAD_SIZE_LONGS (THREAD_SIZE/sizeof(unsigned long)) 6292 #define THREAD_SIZE_LONGS (THREAD_SIZE/sizeof(unsigned long))
@@ -6251,7 +6299,7 @@ diff -urNp linux-2.6.29.6/arch/x86/include/asm/processor.h linux-2.6.29.6/arch/x
6251 6299
6252 /* 6300 /*
6253 * The below -8 is to reserve 8 bytes on top of the ring0 stack. 6301 * The below -8 is to reserve 8 bytes on top of the ring0 stack.
6254@@ -888,7 +893,7 @@ extern unsigned long thread_saved_pc(str 6302@@ -915,7 +920,7 @@ extern unsigned long thread_saved_pc(str
6255 #define task_pt_regs(task) \ 6303 #define task_pt_regs(task) \
6256 ({ \ 6304 ({ \
6257 struct pt_regs *__regs__; \ 6305 struct pt_regs *__regs__; \
@@ -6260,7 +6308,7 @@ diff -urNp linux-2.6.29.6/arch/x86/include/asm/processor.h linux-2.6.29.6/arch/x
6260 __regs__ - 1; \ 6308 __regs__ - 1; \
6261 }) 6309 })
6262 6310
6263@@ -904,7 +909,7 @@ extern unsigned long thread_saved_pc(str 6311@@ -931,7 +936,7 @@ extern unsigned long thread_saved_pc(str
6264 * space during mmap's. 6312 * space during mmap's.
6265 */ 6313 */
6266 #define IA32_PAGE_OFFSET ((current->personality & ADDR_LIMIT_3GB) ? \ 6314 #define IA32_PAGE_OFFSET ((current->personality & ADDR_LIMIT_3GB) ? \
@@ -6268,8 +6316,8 @@ diff -urNp linux-2.6.29.6/arch/x86/include/asm/processor.h linux-2.6.29.6/arch/x
6268+ 0xc0000000 : 0xFFFFf000) 6316+ 0xc0000000 : 0xFFFFf000)
6269 6317
6270 #define TASK_SIZE (test_thread_flag(TIF_IA32) ? \ 6318 #define TASK_SIZE (test_thread_flag(TIF_IA32) ? \
6271 IA32_PAGE_OFFSET : TASK_SIZE64) 6319 IA32_PAGE_OFFSET : TASK_SIZE_MAX)
6272@@ -941,6 +946,10 @@ extern void start_thread(struct pt_regs 6320@@ -968,6 +973,10 @@ extern void start_thread(struct pt_regs
6273 */ 6321 */
6274 #define TASK_UNMAPPED_BASE (PAGE_ALIGN(TASK_SIZE / 3)) 6322 #define TASK_UNMAPPED_BASE (PAGE_ALIGN(TASK_SIZE / 3))
6275 6323
@@ -6280,9 +6328,9 @@ diff -urNp linux-2.6.29.6/arch/x86/include/asm/processor.h linux-2.6.29.6/arch/x
6280 #define KSTK_EIP(task) (task_pt_regs(task)->ip) 6328 #define KSTK_EIP(task) (task_pt_regs(task)->ip)
6281 6329
6282 /* Get/set a process' ability to use the timestamp counter instruction */ 6330 /* Get/set a process' ability to use the timestamp counter instruction */
6283diff -urNp linux-2.6.29.6/arch/x86/include/asm/ptrace.h linux-2.6.29.6/arch/x86/include/asm/ptrace.h 6331diff -urNp linux-2.6.30.4/arch/x86/include/asm/ptrace.h linux-2.6.30.4/arch/x86/include/asm/ptrace.h
6284--- linux-2.6.29.6/arch/x86/include/asm/ptrace.h 2009-07-02 19:41:20.000000000 -0400 6332--- linux-2.6.30.4/arch/x86/include/asm/ptrace.h 2009-07-24 17:47:51.000000000 -0400
6285+++ linux-2.6.29.6/arch/x86/include/asm/ptrace.h 2009-07-23 17:34:32.060764502 -0400 6333+++ linux-2.6.30.4/arch/x86/include/asm/ptrace.h 2009-07-30 09:48:09.933533479 -0400
6286@@ -151,28 +151,29 @@ static inline unsigned long regs_return_ 6334@@ -151,28 +151,29 @@ static inline unsigned long regs_return_
6287 } 6335 }
6288 6336
@@ -6319,9 +6367,9 @@ diff -urNp linux-2.6.29.6/arch/x86/include/asm/ptrace.h linux-2.6.29.6/arch/x86/
6319 #endif 6367 #endif
6320 } 6368 }
6321 6369
6322diff -urNp linux-2.6.29.6/arch/x86/include/asm/reboot.h linux-2.6.29.6/arch/x86/include/asm/reboot.h 6370diff -urNp linux-2.6.30.4/arch/x86/include/asm/reboot.h linux-2.6.30.4/arch/x86/include/asm/reboot.h
6323--- linux-2.6.29.6/arch/x86/include/asm/reboot.h 2009-07-02 19:41:20.000000000 -0400 6371--- linux-2.6.30.4/arch/x86/include/asm/reboot.h 2009-07-24 17:47:51.000000000 -0400
6324+++ linux-2.6.29.6/arch/x86/include/asm/reboot.h 2009-07-23 17:34:32.060764502 -0400 6372+++ linux-2.6.30.4/arch/x86/include/asm/reboot.h 2009-07-30 09:48:09.933533479 -0400
6325@@ -18,7 +18,7 @@ extern struct machine_ops machine_ops; 6373@@ -18,7 +18,7 @@ extern struct machine_ops machine_ops;
6326 6374
6327 void native_machine_crash_shutdown(struct pt_regs *regs); 6375 void native_machine_crash_shutdown(struct pt_regs *regs);
@@ -6331,9 +6379,9 @@ diff -urNp linux-2.6.29.6/arch/x86/include/asm/reboot.h linux-2.6.29.6/arch/x86/
6331 6379
6332 typedef void (*nmi_shootdown_cb)(int, struct die_args*); 6380 typedef void (*nmi_shootdown_cb)(int, struct die_args*);
6333 void nmi_shootdown_cpus(nmi_shootdown_cb callback); 6381 void nmi_shootdown_cpus(nmi_shootdown_cb callback);
6334diff -urNp linux-2.6.29.6/arch/x86/include/asm/rwsem.h linux-2.6.29.6/arch/x86/include/asm/rwsem.h 6382diff -urNp linux-2.6.30.4/arch/x86/include/asm/rwsem.h linux-2.6.30.4/arch/x86/include/asm/rwsem.h
6335--- linux-2.6.29.6/arch/x86/include/asm/rwsem.h 2009-07-02 19:41:20.000000000 -0400 6383--- linux-2.6.30.4/arch/x86/include/asm/rwsem.h 2009-07-24 17:47:51.000000000 -0400
6336+++ linux-2.6.29.6/arch/x86/include/asm/rwsem.h 2009-07-23 17:34:32.061944075 -0400 6384+++ linux-2.6.30.4/arch/x86/include/asm/rwsem.h 2009-07-30 09:48:09.934667198 -0400
6337@@ -106,10 +106,26 @@ static inline void __down_read(struct rw 6385@@ -106,10 +106,26 @@ static inline void __down_read(struct rw
6338 { 6386 {
6339 asm volatile("# beginning down_read\n\t" 6387 asm volatile("# beginning down_read\n\t"
@@ -6566,10 +6614,10 @@ diff -urNp linux-2.6.29.6/arch/x86/include/asm/rwsem.h linux-2.6.29.6/arch/x86/i
6566 : "+r" (tmp), "+m" (sem->count) 6614 : "+r" (tmp), "+m" (sem->count)
6567 : : "memory"); 6615 : : "memory");
6568 6616
6569diff -urNp linux-2.6.29.6/arch/x86/include/asm/segment.h linux-2.6.29.6/arch/x86/include/asm/segment.h 6617diff -urNp linux-2.6.30.4/arch/x86/include/asm/segment.h linux-2.6.30.4/arch/x86/include/asm/segment.h
6570--- linux-2.6.29.6/arch/x86/include/asm/segment.h 2009-07-02 19:41:20.000000000 -0400 6618--- linux-2.6.30.4/arch/x86/include/asm/segment.h 2009-07-24 17:47:51.000000000 -0400
6571+++ linux-2.6.29.6/arch/x86/include/asm/segment.h 2009-07-23 17:34:32.061944075 -0400 6619+++ linux-2.6.30.4/arch/x86/include/asm/segment.h 2009-07-30 09:48:09.934667198 -0400
6572@@ -88,13 +88,19 @@ 6620@@ -88,7 +88,7 @@
6573 #define GDT_ENTRY_ESPFIX_SS (GDT_ENTRY_KERNEL_BASE + 14) 6621 #define GDT_ENTRY_ESPFIX_SS (GDT_ENTRY_KERNEL_BASE + 14)
6574 #define __ESPFIX_SS (GDT_ENTRY_ESPFIX_SS * 8) 6622 #define __ESPFIX_SS (GDT_ENTRY_ESPFIX_SS * 8)
6575 6623
@@ -6578,19 +6626,20 @@ diff -urNp linux-2.6.29.6/arch/x86/include/asm/segment.h linux-2.6.29.6/arch/x86
6578 #ifdef CONFIG_SMP 6626 #ifdef CONFIG_SMP
6579 #define __KERNEL_PERCPU (GDT_ENTRY_PERCPU * 8) 6627 #define __KERNEL_PERCPU (GDT_ENTRY_PERCPU * 8)
6580 #else 6628 #else
6581 #define __KERNEL_PERCPU 0 6629@@ -102,6 +102,12 @@
6630 #define __KERNEL_STACK_CANARY 0
6582 #endif 6631 #endif
6583 6632
6584+#define GDT_ENTRY_PCIBIOS_CS (GDT_ENTRY_KERNEL_BASE + 16) 6633+#define GDT_ENTRY_PCIBIOS_CS (GDT_ENTRY_KERNEL_BASE + 17)
6585+#define __PCIBIOS_CS (GDT_ENTRY_PCIBIOS_CS * 8) 6634+#define __PCIBIOS_CS (GDT_ENTRY_PCIBIOS_CS * 8)
6586+ 6635+
6587+#define GDT_ENTRY_PCIBIOS_DS (GDT_ENTRY_KERNEL_BASE + 17) 6636+#define GDT_ENTRY_PCIBIOS_DS (GDT_ENTRY_KERNEL_BASE + 18)
6588+#define __PCIBIOS_DS (GDT_ENTRY_PCIBIOS_DS * 8) 6637+#define __PCIBIOS_DS (GDT_ENTRY_PCIBIOS_DS * 8)
6589+ 6638+
6590 #define GDT_ENTRY_DOUBLEFAULT_TSS 31 6639 #define GDT_ENTRY_DOUBLEFAULT_TSS 31
6591 6640
6592 /* 6641 /*
6593@@ -132,7 +138,7 @@ 6642@@ -139,7 +145,7 @@
6594 */ 6643 */
6595 6644
6596 /* Matches PNP_CS32 and PNP_CS16 (they must be consecutive) */ 6645 /* Matches PNP_CS32 and PNP_CS16 (they must be consecutive) */
@@ -6599,10 +6648,10 @@ diff -urNp linux-2.6.29.6/arch/x86/include/asm/segment.h linux-2.6.29.6/arch/x86
6599 6648
6600 6649
6601 #else 6650 #else
6602diff -urNp linux-2.6.29.6/arch/x86/include/asm/spinlock.h linux-2.6.29.6/arch/x86/include/asm/spinlock.h 6651diff -urNp linux-2.6.30.4/arch/x86/include/asm/spinlock.h linux-2.6.30.4/arch/x86/include/asm/spinlock.h
6603--- linux-2.6.29.6/arch/x86/include/asm/spinlock.h 2009-07-02 19:41:20.000000000 -0400 6652--- linux-2.6.30.4/arch/x86/include/asm/spinlock.h 2009-07-24 17:47:51.000000000 -0400
6604+++ linux-2.6.29.6/arch/x86/include/asm/spinlock.h 2009-07-23 17:34:32.061944075 -0400 6653+++ linux-2.6.30.4/arch/x86/include/asm/spinlock.h 2009-07-30 09:48:09.934667198 -0400
6605@@ -311,18 +311,50 @@ static inline int __raw_write_can_lock(r 6654@@ -249,18 +249,50 @@ static inline int __raw_write_can_lock(r
6606 static inline void __raw_read_lock(raw_rwlock_t *rw) 6655 static inline void __raw_read_lock(raw_rwlock_t *rw)
6607 { 6656 {
6608 asm volatile(LOCK_PREFIX " subl $1,(%0)\n\t" 6657 asm volatile(LOCK_PREFIX " subl $1,(%0)\n\t"
@@ -6657,7 +6706,7 @@ diff -urNp linux-2.6.29.6/arch/x86/include/asm/spinlock.h linux-2.6.29.6/arch/x8
6657 ::LOCK_PTR_REG (rw), "i" (RW_LOCK_BIAS) : "memory"); 6706 ::LOCK_PTR_REG (rw), "i" (RW_LOCK_BIAS) : "memory");
6658 } 6707 }
6659 6708
6660@@ -349,12 +381,45 @@ static inline int __raw_write_trylock(ra 6709@@ -286,12 +318,45 @@ static inline int __raw_write_trylock(ra
6661 6710
6662 static inline void __raw_read_unlock(raw_rwlock_t *rw) 6711 static inline void __raw_read_unlock(raw_rwlock_t *rw)
6663 { 6712 {
@@ -6705,30 +6754,10 @@ diff -urNp linux-2.6.29.6/arch/x86/include/asm/spinlock.h linux-2.6.29.6/arch/x8
6705 : "+m" (rw->lock) : "i" (RW_LOCK_BIAS) : "memory"); 6754 : "+m" (rw->lock) : "i" (RW_LOCK_BIAS) : "memory");
6706 } 6755 }
6707 6756
6708diff -urNp linux-2.6.29.6/arch/x86/include/asm/system.h linux-2.6.29.6/arch/x86/include/asm/system.h 6757diff -urNp linux-2.6.30.4/arch/x86/include/asm/system.h linux-2.6.30.4/arch/x86/include/asm/system.h
6709--- linux-2.6.29.6/arch/x86/include/asm/system.h 2009-07-02 19:41:20.000000000 -0400 6758--- linux-2.6.30.4/arch/x86/include/asm/system.h 2009-07-24 17:47:51.000000000 -0400
6710+++ linux-2.6.29.6/arch/x86/include/asm/system.h 2009-07-23 17:34:37.457730203 -0400 6759+++ linux-2.6.30.4/arch/x86/include/asm/system.h 2009-07-30 09:48:09.935636803 -0400
6711@@ -95,6 +95,8 @@ do { \ 6760@@ -227,7 +227,7 @@ static inline unsigned long get_limit(un
6712 ".globl thread_return\n" \
6713 "thread_return:\n\t" \
6714 "movq %%gs:%P[pda_pcurrent],%%rsi\n\t" \
6715+ "movq %P[task_canary](%%rsi),%%r8\n\t" \
6716+ "movq %%r8,%%gs:%P[pda_canary]\n\t" \
6717 "movq %P[thread_info](%%rsi),%%r8\n\t" \
6718 LOCK_PREFIX "btr %[tif_fork],%P[ti_flags](%%r8)\n\t" \
6719 "movq %%rax,%%rdi\n\t" \
6720@@ -106,7 +108,9 @@ do { \
6721 [ti_flags] "i" (offsetof(struct thread_info, flags)), \
6722 [tif_fork] "i" (TIF_FORK), \
6723 [thread_info] "i" (offsetof(struct task_struct, stack)), \
6724- [pda_pcurrent] "i" (offsetof(struct x8664_pda, pcurrent)) \
6725+ [task_canary] "i" (offsetof(struct task_struct, stack_canary)), \
6726+ [pda_pcurrent] "i" (offsetof(struct x8664_pda, pcurrent)), \
6727+ [pda_canary] "i" (offsetof(struct x8664_pda, stack_canary))\
6728 : "memory", "cc" __EXTRA_CLOBBER)
6729 #endif
6730
6731@@ -169,7 +173,7 @@ static inline unsigned long get_limit(un
6732 { 6761 {
6733 unsigned long __limit; 6762 unsigned long __limit;
6734 asm("lsll %1,%0" : "=r" (__limit) : "r" (segment)); 6763 asm("lsll %1,%0" : "=r" (__limit) : "r" (segment));
@@ -6737,7 +6766,7 @@ diff -urNp linux-2.6.29.6/arch/x86/include/asm/system.h linux-2.6.29.6/arch/x86/
6737 } 6766 }
6738 6767
6739 static inline void native_clts(void) 6768 static inline void native_clts(void)
6740@@ -295,6 +299,23 @@ static inline void native_wbinvd(void) 6769@@ -353,6 +353,23 @@ static inline void native_wbinvd(void)
6741 6770
6742 #define stts() write_cr0(read_cr0() | X86_CR0_TS) 6771 #define stts() write_cr0(read_cr0() | X86_CR0_TS)
6743 6772
@@ -6761,7 +6790,7 @@ diff -urNp linux-2.6.29.6/arch/x86/include/asm/system.h linux-2.6.29.6/arch/x86/
6761 #endif /* __KERNEL__ */ 6790 #endif /* __KERNEL__ */
6762 6791
6763 static inline void clflush(volatile void *__p) 6792 static inline void clflush(volatile void *__p)
6764@@ -309,7 +330,7 @@ void enable_hlt(void); 6793@@ -367,7 +384,7 @@ void enable_hlt(void);
6765 6794
6766 void cpu_idle_wait(void); 6795 void cpu_idle_wait(void);
6767 6796
@@ -6770,10 +6799,20 @@ diff -urNp linux-2.6.29.6/arch/x86/include/asm/system.h linux-2.6.29.6/arch/x86/
6770 extern void free_init_pages(char *what, unsigned long begin, unsigned long end); 6799 extern void free_init_pages(char *what, unsigned long begin, unsigned long end);
6771 6800
6772 void default_idle(void); 6801 void default_idle(void);
6773diff -urNp linux-2.6.29.6/arch/x86/include/asm/uaccess_32.h linux-2.6.29.6/arch/x86/include/asm/uaccess_32.h 6802diff -urNp linux-2.6.30.4/arch/x86/include/asm/uaccess_32.h linux-2.6.30.4/arch/x86/include/asm/uaccess_32.h
6774--- linux-2.6.29.6/arch/x86/include/asm/uaccess_32.h 2009-07-02 19:41:20.000000000 -0400 6803--- linux-2.6.30.4/arch/x86/include/asm/uaccess_32.h 2009-07-24 17:47:51.000000000 -0400
6775+++ linux-2.6.29.6/arch/x86/include/asm/uaccess_32.h 2009-07-23 17:34:32.062941291 -0400 6804+++ linux-2.6.30.4/arch/x86/include/asm/uaccess_32.h 2009-07-30 09:48:09.936413079 -0400
6776@@ -62,6 +62,8 @@ __copy_to_user_inatomic(void __user *to, 6805@@ -44,6 +44,9 @@ unsigned long __must_check __copy_from_u
6806 static __always_inline unsigned long __must_check
6807 __copy_to_user_inatomic(void __user *to, const void *from, unsigned long n)
6808 {
6809+ if ((long)n < 0)
6810+ return n;
6811+
6812 if (__builtin_constant_p(n)) {
6813 unsigned long ret;
6814
6815@@ -62,6 +65,8 @@ __copy_to_user_inatomic(void __user *to,
6777 return ret; 6816 return ret;
6778 } 6817 }
6779 } 6818 }
@@ -6782,7 +6821,28 @@ diff -urNp linux-2.6.29.6/arch/x86/include/asm/uaccess_32.h linux-2.6.29.6/arch/
6782 return __copy_to_user_ll(to, from, n); 6821 return __copy_to_user_ll(to, from, n);
6783 } 6822 }
6784 6823
6785@@ -153,6 +155,8 @@ __copy_from_user(void *to, const void __ 6824@@ -89,6 +94,9 @@ __copy_to_user(void __user *to, const vo
6825 static __always_inline unsigned long
6826 __copy_from_user_inatomic(void *to, const void __user *from, unsigned long n)
6827 {
6828+ if ((long)n < 0)
6829+ return n;
6830+
6831 /* Avoid zeroing the tail if the copy fails..
6832 * If 'n' is constant and 1, 2, or 4, we do still zero on a failure,
6833 * but as the zeroing behaviour is only significant when n is not
6834@@ -138,6 +146,10 @@ static __always_inline unsigned long
6835 __copy_from_user(void *to, const void __user *from, unsigned long n)
6836 {
6837 might_fault();
6838+
6839+ if ((long)n < 0)
6840+ return n;
6841+
6842 if (__builtin_constant_p(n)) {
6843 unsigned long ret;
6844
6845@@ -153,6 +165,8 @@ __copy_from_user(void *to, const void __
6786 return ret; 6846 return ret;
6787 } 6847 }
6788 } 6848 }
@@ -6791,15 +6851,28 @@ diff -urNp linux-2.6.29.6/arch/x86/include/asm/uaccess_32.h linux-2.6.29.6/arch/
6791 return __copy_from_user_ll(to, from, n); 6851 return __copy_from_user_ll(to, from, n);
6792 } 6852 }
6793 6853
6794@@ -185,11 +189,56 @@ __copy_from_user_inatomic_nocache(void * 6854@@ -160,6 +174,10 @@ static __always_inline unsigned long __c
6795 return __copy_from_user_ll_nocache_nozero(to, from, n); 6855 const void __user *from, unsigned long n)
6796 } 6856 {
6857 might_fault();
6858+
6859+ if ((long)n < 0)
6860+ return n;
6861+
6862 if (__builtin_constant_p(n)) {
6863 unsigned long ret;
6797 6864
6798-unsigned long __must_check copy_to_user(void __user *to, 6865@@ -182,14 +200,62 @@ static __always_inline unsigned long
6799- const void *from, unsigned long n); 6866 __copy_from_user_inatomic_nocache(void *to, const void __user *from,
6800-unsigned long __must_check copy_from_user(void *to, 6867 unsigned long n)
6801- const void __user *from, 6868 {
6802- unsigned long n); 6869- return __copy_from_user_ll_nocache_nozero(to, from, n);
6870+ if ((long)n < 0)
6871+ return n;
6872+
6873+ return __copy_from_user_ll_nocache_nozero(to, from, n);
6874+}
6875+
6803+/** 6876+/**
6804+ * copy_to_user: - Copy a block of data into user space. 6877+ * copy_to_user: - Copy a block of data into user space.
6805+ * @to: Destination address, in user space. 6878+ * @to: Destination address, in user space.
@@ -6848,14 +6921,19 @@ diff -urNp linux-2.6.29.6/arch/x86/include/asm/uaccess_32.h linux-2.6.29.6/arch/
6848+ memset(to, 0, n); 6921+ memset(to, 0, n);
6849+ } 6922+ }
6850+ return n; 6923+ return n;
6851+} 6924 }
6852+ 6925
6926-unsigned long __must_check copy_to_user(void __user *to,
6927- const void *from, unsigned long n);
6928-unsigned long __must_check copy_from_user(void *to,
6929- const void __user *from,
6930- unsigned long n);
6853 long __must_check strncpy_from_user(char *dst, const char __user *src, 6931 long __must_check strncpy_from_user(char *dst, const char __user *src,
6854 long count); 6932 long count);
6855 long __must_check __strncpy_from_user(char *dst, 6933 long __must_check __strncpy_from_user(char *dst,
6856diff -urNp linux-2.6.29.6/arch/x86/include/asm/uaccess_64.h linux-2.6.29.6/arch/x86/include/asm/uaccess_64.h 6934diff -urNp linux-2.6.30.4/arch/x86/include/asm/uaccess_64.h linux-2.6.30.4/arch/x86/include/asm/uaccess_64.h
6857--- linux-2.6.29.6/arch/x86/include/asm/uaccess_64.h 2009-07-02 19:41:20.000000000 -0400 6935--- linux-2.6.30.4/arch/x86/include/asm/uaccess_64.h 2009-07-30 20:32:40.365617606 -0400
6858+++ linux-2.6.29.6/arch/x86/include/asm/uaccess_64.h 2009-07-23 17:34:32.062941291 -0400 6936+++ linux-2.6.30.4/arch/x86/include/asm/uaccess_64.h 2009-07-30 20:32:47.927601167 -0400
6859@@ -10,6 +10,8 @@ 6937@@ -10,6 +10,8 @@
6860 #include <linux/lockdep.h> 6938 #include <linux/lockdep.h>
6861 #include <asm/page.h> 6939 #include <asm/page.h>
@@ -6865,7 +6943,7 @@ diff -urNp linux-2.6.29.6/arch/x86/include/asm/uaccess_64.h linux-2.6.29.6/arch/
6865 /* 6943 /*
6866 * Copy To/From Userspace 6944 * Copy To/From Userspace
6867 */ 6945 */
6868@@ -19,20 +21,18 @@ __must_check unsigned long 6946@@ -19,20 +21,22 @@ __must_check unsigned long
6869 copy_user_generic(void *to, const void *from, unsigned len); 6947 copy_user_generic(void *to, const void *from, unsigned len);
6870 6948
6871 __must_check unsigned long 6949 __must_check unsigned long
@@ -6884,6 +6962,10 @@ diff -urNp linux-2.6.29.6/arch/x86/include/asm/uaccess_64.h linux-2.6.29.6/arch/
6884 6962
6885 might_fault(); 6963 might_fault();
6886- if (!__builtin_constant_p(size)) 6964- if (!__builtin_constant_p(size))
6965+
6966+ if ((int)size < 0)
6967+ return size;
6968+
6887+ if (!__builtin_constant_p(size)) { 6969+ if (!__builtin_constant_p(size)) {
6888+ check_object_size(dst, size, false); 6970+ check_object_size(dst, size, false);
6889 return copy_user_generic(dst, (__force void *)src, size); 6971 return copy_user_generic(dst, (__force void *)src, size);
@@ -6891,7 +6973,7 @@ diff -urNp linux-2.6.29.6/arch/x86/include/asm/uaccess_64.h linux-2.6.29.6/arch/
6891 switch (size) { 6973 switch (size) {
6892 case 1:__get_user_asm(*(u8 *)dst, (u8 __user *)src, 6974 case 1:__get_user_asm(*(u8 *)dst, (u8 __user *)src,
6893 ret, "b", "b", "=q", 1); 6975 ret, "b", "b", "=q", 1);
6894@@ -70,13 +70,15 @@ int __copy_from_user(void *dst, const vo 6976@@ -70,13 +74,19 @@ int __copy_from_user(void *dst, const vo
6895 } 6977 }
6896 6978
6897 static __always_inline __must_check 6979 static __always_inline __must_check
@@ -6903,6 +6985,10 @@ diff -urNp linux-2.6.29.6/arch/x86/include/asm/uaccess_64.h linux-2.6.29.6/arch/
6903 6985
6904 might_fault(); 6986 might_fault();
6905- if (!__builtin_constant_p(size)) 6987- if (!__builtin_constant_p(size))
6988+
6989+ if ((int)size < 0)
6990+ return size;
6991+
6906+ if (!__builtin_constant_p(size)) { 6992+ if (!__builtin_constant_p(size)) {
6907+ check_object_size(src, size, true); 6993+ check_object_size(src, size, true);
6908 return copy_user_generic((__force void *)dst, src, size); 6994 return copy_user_generic((__force void *)dst, src, size);
@@ -6910,13 +6996,14 @@ diff -urNp linux-2.6.29.6/arch/x86/include/asm/uaccess_64.h linux-2.6.29.6/arch/
6910 switch (size) { 6996 switch (size) {
6911 case 1:__put_user_asm(*(u8 *)src, (u8 __user *)dst, 6997 case 1:__put_user_asm(*(u8 *)src, (u8 __user *)dst,
6912 ret, "b", "b", "iq", 1); 6998 ret, "b", "b", "iq", 1);
6913@@ -114,9 +116,30 @@ int __copy_to_user(void __user *dst, con 6999@@ -114,11 +124,39 @@ int __copy_to_user(void __user *dst, con
6914 } 7000 }
6915 7001
6916 static __always_inline __must_check 7002 static __always_inline __must_check
6917-int __copy_in_user(void __user *dst, const void __user *src, unsigned size) 7003-int __copy_in_user(void __user *dst, const void __user *src, unsigned size)
6918+unsigned long copy_to_user(void __user *to, const void *from, unsigned len) 7004+unsigned long copy_to_user(void __user *to, const void *from, unsigned len)
6919+{ 7005 {
7006- int ret = 0;
6920+ if (access_ok(VERIFY_WRITE, to, len)) 7007+ if (access_ok(VERIFY_WRITE, to, len))
6921+ len = __copy_to_user(to, from, len); 7008+ len = __copy_to_user(to, from, len);
6922+ return len; 7009+ return len;
@@ -6925,6 +7012,9 @@ diff -urNp linux-2.6.29.6/arch/x86/include/asm/uaccess_64.h linux-2.6.29.6/arch/
6925+static __always_inline __must_check 7012+static __always_inline __must_check
6926+unsigned long copy_from_user(void *to, const void __user *from, unsigned len) 7013+unsigned long copy_from_user(void *to, const void __user *from, unsigned len)
6927+{ 7014+{
7015+ if ((int)len < 0)
7016+ return len;
7017+
6928+ if (access_ok(VERIFY_READ, from, len)) 7018+ if (access_ok(VERIFY_READ, from, len))
6929+ len = __copy_from_user(to, from, len); 7019+ len = __copy_from_user(to, from, len);
6930+ else if ((int)len > 0) { 7020+ else if ((int)len > 0) {
@@ -6937,13 +7027,18 @@ diff -urNp linux-2.6.29.6/arch/x86/include/asm/uaccess_64.h linux-2.6.29.6/arch/
6937+ 7027+
6938+static __always_inline __must_check 7028+static __always_inline __must_check
6939+unsigned long __copy_in_user(void __user *dst, const void __user *src, unsigned size) 7029+unsigned long __copy_in_user(void __user *dst, const void __user *src, unsigned size)
6940 { 7030+{
6941- int ret = 0;
6942+ unsigned ret = 0; 7031+ unsigned ret = 0;
6943 7032
6944 might_fault(); 7033 might_fault();
7034+
7035+ if ((int)size < 0)
7036+ return size;
7037+
6945 if (!__builtin_constant_p(size)) 7038 if (!__builtin_constant_p(size))
6946@@ -179,30 +202,30 @@ __must_check unsigned long __clear_user( 7039 return copy_user_generic((__force void *)dst,
7040 (__force void *)src, size);
7041@@ -179,30 +217,38 @@ __must_check unsigned long __clear_user(
6947 __must_check long __copy_from_user_inatomic(void *dst, const void __user *src, 7042 __must_check long __copy_from_user_inatomic(void *dst, const void __user *src,
6948 unsigned size); 7043 unsigned size);
6949 7044
@@ -6951,6 +7046,9 @@ diff -urNp linux-2.6.29.6/arch/x86/include/asm/uaccess_64.h linux-2.6.29.6/arch/
6951+static __must_check __always_inline unsigned long 7046+static __must_check __always_inline unsigned long
6952 __copy_to_user_inatomic(void __user *dst, const void *src, unsigned size) 7047 __copy_to_user_inatomic(void __user *dst, const void *src, unsigned size)
6953 { 7048 {
7049+ if ((int)size < 0)
7050+ return size;
7051+
6954 return copy_user_generic((__force void *)dst, src, size); 7052 return copy_user_generic((__force void *)dst, src, size);
6955 } 7053 }
6956 7054
@@ -6958,19 +7056,26 @@ diff -urNp linux-2.6.29.6/arch/x86/include/asm/uaccess_64.h linux-2.6.29.6/arch/
6958+extern unsigned long __copy_user_nocache(void *dst, const void __user *src, 7056+extern unsigned long __copy_user_nocache(void *dst, const void __user *src,
6959 unsigned size, int zerorest); 7057 unsigned size, int zerorest);
6960 7058
6961-static inline int __copy_from_user_nocache(void *dst, const void __user *src, 7059-static inline int
6962+static inline unsigned long __copy_from_user_nocache(void *dst, const void __user *src, 7060-__copy_from_user_nocache(void *dst, const void __user *src, unsigned size)
6963 unsigned size) 7061+static inline unsigned long __copy_from_user_nocache(void *dst, const void __user *src, unsigned size)
6964 { 7062 {
6965 might_sleep(); 7063 might_sleep();
7064+
7065+ if ((int)size < 0)
7066+ return size;
7067+
6966 return __copy_user_nocache(dst, src, size, 1); 7068 return __copy_user_nocache(dst, src, size, 1);
6967 } 7069 }
6968 7070
6969-static inline int __copy_from_user_inatomic_nocache(void *dst, 7071-static inline int
6970+static inline unsigned long __copy_from_user_inatomic_nocache(void *dst, 7072-__copy_from_user_inatomic_nocache(void *dst, const void __user *src,
6971 const void __user *src, 7073+static inline unsigned long __copy_from_user_inatomic_nocache(void *dst, const void __user *src,
6972 unsigned size) 7074 unsigned size)
6973 { 7075 {
7076+ if ((int)size < 0)
7077+ return size;
7078+
6974 return __copy_user_nocache(dst, src, size, 0); 7079 return __copy_user_nocache(dst, src, size, 0);
6975 } 7080 }
6976 7081
@@ -6979,9 +7084,9 @@ diff -urNp linux-2.6.29.6/arch/x86/include/asm/uaccess_64.h linux-2.6.29.6/arch/
6979 copy_user_handle_tail(char *to, char *from, unsigned len, unsigned zerorest); 7084 copy_user_handle_tail(char *to, char *from, unsigned len, unsigned zerorest);
6980 7085
6981 #endif /* _ASM_X86_UACCESS_64_H */ 7086 #endif /* _ASM_X86_UACCESS_64_H */
6982diff -urNp linux-2.6.29.6/arch/x86/include/asm/uaccess.h linux-2.6.29.6/arch/x86/include/asm/uaccess.h 7087diff -urNp linux-2.6.30.4/arch/x86/include/asm/uaccess.h linux-2.6.30.4/arch/x86/include/asm/uaccess.h
6983--- linux-2.6.29.6/arch/x86/include/asm/uaccess.h 2009-07-02 19:41:20.000000000 -0400 7088--- linux-2.6.30.4/arch/x86/include/asm/uaccess.h 2009-07-30 20:32:40.364705510 -0400
6984+++ linux-2.6.29.6/arch/x86/include/asm/uaccess.h 2009-07-23 17:34:32.062941291 -0400 7089+++ linux-2.6.30.4/arch/x86/include/asm/uaccess.h 2009-07-30 20:32:47.926577259 -0400
6985@@ -8,8 +8,10 @@ 7090@@ -8,8 +8,10 @@
6986 #include <linux/thread_info.h> 7091 #include <linux/thread_info.h>
6987 #include <linux/prefetch.h> 7092 #include <linux/prefetch.h>
@@ -7009,7 +7114,7 @@ diff -urNp linux-2.6.29.6/arch/x86/include/asm/uaccess.h linux-2.6.29.6/arch/x86
7009@@ -187,9 +194,12 @@ extern int __get_user_bad(void); 7114@@ -187,9 +194,12 @@ extern int __get_user_bad(void);
7010 7115
7011 #ifdef CONFIG_X86_32 7116 #ifdef CONFIG_X86_32
7012 #define __put_user_u64(x, addr, err) \ 7117 #define __put_user_asm_u64(x, addr, err, errret) \
7013- asm volatile("1: movl %%eax,0(%2)\n" \ 7118- asm volatile("1: movl %%eax,0(%2)\n" \
7014- "2: movl %%edx,4(%2)\n" \ 7119- "2: movl %%edx,4(%2)\n" \
7015+ asm volatile(" movw %w5,%%ds\n" \ 7120+ asm volatile(" movw %w5,%%ds\n" \
@@ -7025,13 +7130,13 @@ diff -urNp linux-2.6.29.6/arch/x86/include/asm/uaccess.h linux-2.6.29.6/arch/x86
7025 _ASM_EXTABLE(1b, 4b) \ 7130 _ASM_EXTABLE(1b, 4b) \
7026 _ASM_EXTABLE(2b, 4b) \ 7131 _ASM_EXTABLE(2b, 4b) \
7027 : "=r" (err) \ 7132 : "=r" (err) \
7028- : "A" (x), "r" (addr), "i" (-EFAULT), "0" (err)) 7133- : "A" (x), "r" (addr), "i" (errret), "0" (err))
7029+ : "A" (x), "r" (addr), "i" (-EFAULT), "0" (err), \ 7134+ : "A" (x), "r" (addr), "i" (errret), "0" (err), \
7030+ "r"(__USER_DS)) 7135+ "r"(__USER_DS))
7031 7136
7032 #define __put_user_x8(x, ptr, __ret_pu) \ 7137 #define __put_user_asm_ex_u64(x, addr) \
7033 asm volatile("call __put_user_8" : "=a" (__ret_pu) \ 7138 asm volatile("1: movl %%eax,0(%1)\n" \
7034@@ -338,6 +349,22 @@ do { \ 7139@@ -373,6 +384,22 @@ do { \
7035 } \ 7140 } \
7036 } while (0) 7141 } while (0)
7037 7142
@@ -7054,15 +7159,38 @@ diff -urNp linux-2.6.29.6/arch/x86/include/asm/uaccess.h linux-2.6.29.6/arch/x86
7054 #define __get_user_asm(x, addr, err, itype, rtype, ltype, errret) \ 7159 #define __get_user_asm(x, addr, err, itype, rtype, ltype, errret) \
7055 asm volatile("1: mov"itype" %2,%"rtype"1\n" \ 7160 asm volatile("1: mov"itype" %2,%"rtype"1\n" \
7056 "2:\n" \ 7161 "2:\n" \
7057@@ -349,6 +376,7 @@ do { \ 7162@@ -384,6 +411,7 @@ do { \
7058 _ASM_EXTABLE(1b, 3b) \ 7163 _ASM_EXTABLE(1b, 3b) \
7059 : "=r" (err), ltype(x) \ 7164 : "=r" (err), ltype(x) \
7060 : "m" (__m(addr)), "i" (errret), "0" (err)) 7165 : "m" (__m(addr)), "i" (errret), "0" (err))
7061+#endif 7166+#endif
7062 7167
7168 #define __get_user_size_ex(x, ptr, size) \
7169 do { \
7170@@ -406,11 +434,22 @@ do { \
7171 } \
7172 } while (0)
7173
7174+#ifdef CONFIG_X86_32
7175+#define __get_user_asm_ex(x, addr, itype, rtype, ltype) \
7176+ asm volatile(" movw %w2,%%ds\n" \
7177+ "1: mov"itype" %%ds:%1,%"rtype"0\n" \
7178+ "2:\n" \
7179+ " pushl %%ss\n" \
7180+ " popl %%ds\n" \
7181+ _ASM_EXTABLE(1b, 2b - 1b) \
7182+ : ltype(x) : "m" (__m(addr)), "r"(__USER_DS))
7183+#else
7184 #define __get_user_asm_ex(x, addr, itype, rtype, ltype) \
7185 asm volatile("1: mov"itype" %1,%"rtype"0\n" \
7186 "2:\n" \
7187 _ASM_EXTABLE(1b, 2b - 1b) \
7188 : ltype(x) : "m" (__m(addr)))
7189+#endif
7190
7063 #define __put_user_nocheck(x, ptr, size) \ 7191 #define __put_user_nocheck(x, ptr, size) \
7064 ({ \ 7192 ({ \
7065@@ -375,6 +403,22 @@ struct __large_struct { unsigned long bu 7193@@ -437,6 +476,22 @@ struct __large_struct { unsigned long bu
7066 * we do not write to any memory gcc knows about, so there are no 7194 * we do not write to any memory gcc knows about, so there are no
7067 * aliasing issues. 7195 * aliasing issues.
7068 */ 7196 */
@@ -7085,15 +7213,32 @@ diff -urNp linux-2.6.29.6/arch/x86/include/asm/uaccess.h linux-2.6.29.6/arch/x86
7085 #define __put_user_asm(x, addr, err, itype, rtype, ltype, errret) \ 7213 #define __put_user_asm(x, addr, err, itype, rtype, ltype, errret) \
7086 asm volatile("1: mov"itype" %"rtype"1,%2\n" \ 7214 asm volatile("1: mov"itype" %"rtype"1,%2\n" \
7087 "2:\n" \ 7215 "2:\n" \
7088@@ -385,6 +429,7 @@ struct __large_struct { unsigned long bu 7216@@ -447,12 +502,24 @@ struct __large_struct { unsigned long bu
7089 _ASM_EXTABLE(1b, 3b) \ 7217 _ASM_EXTABLE(1b, 3b) \
7090 : "=r"(err) \ 7218 : "=r"(err) \
7091 : ltype(x), "m" (__m(addr)), "i" (errret), "0" (err)) 7219 : ltype(x), "m" (__m(addr)), "i" (errret), "0" (err))
7092+#endif 7220+#endif
7093 /** 7221
7094 * __get_user: - Get a simple variable from user space, with less checking. 7222+#ifdef CONFIG_X86_32
7095 * @x: Variable to store result. 7223+#define __put_user_asm_ex(x, addr, itype, rtype, ltype) \
7096@@ -445,6 +490,7 @@ extern struct movsl_mask { 7224+ asm volatile(" movw %w2,%%ds\n" \
7225+ "1: mov"itype" %"rtype"0,%%ds:%1\n" \
7226+ "2:\n" \
7227+ " pushl %%ss\n" \
7228+ " popl %%ds\n" \
7229+ _ASM_EXTABLE(1b, 2b - 1b) \
7230+ : : ltype(x), "m" (__m(addr)), "r"(__USER_DS))
7231+#else
7232 #define __put_user_asm_ex(x, addr, itype, rtype, ltype) \
7233 asm volatile("1: mov"itype" %"rtype"0,%1\n" \
7234 "2:\n" \
7235 _ASM_EXTABLE(1b, 2b - 1b) \
7236 : : ltype(x), "m" (__m(addr)))
7237+#endif
7238
7239 /*
7240 * uaccess_try and catch
7241@@ -567,6 +634,7 @@ extern struct movsl_mask {
7097 7242
7098 #define ARCH_HAS_NOCACHE_UACCESS 1 7243 #define ARCH_HAS_NOCACHE_UACCESS 1
7099 7244
@@ -7101,9 +7246,9 @@ diff -urNp linux-2.6.29.6/arch/x86/include/asm/uaccess.h linux-2.6.29.6/arch/x86
7101 #ifdef CONFIG_X86_32 7246 #ifdef CONFIG_X86_32
7102 # include "uaccess_32.h" 7247 # include "uaccess_32.h"
7103 #else 7248 #else
7104diff -urNp linux-2.6.29.6/arch/x86/include/asm/vgtod.h linux-2.6.29.6/arch/x86/include/asm/vgtod.h 7249diff -urNp linux-2.6.30.4/arch/x86/include/asm/vgtod.h linux-2.6.30.4/arch/x86/include/asm/vgtod.h
7105--- linux-2.6.29.6/arch/x86/include/asm/vgtod.h 2009-07-02 19:41:20.000000000 -0400 7250--- linux-2.6.30.4/arch/x86/include/asm/vgtod.h 2009-07-24 17:47:51.000000000 -0400
7106+++ linux-2.6.29.6/arch/x86/include/asm/vgtod.h 2009-07-23 17:34:32.062941291 -0400 7251+++ linux-2.6.30.4/arch/x86/include/asm/vgtod.h 2009-07-30 09:48:09.936413079 -0400
7107@@ -14,6 +14,7 @@ struct vsyscall_gtod_data { 7252@@ -14,6 +14,7 @@ struct vsyscall_gtod_data {
7108 int sysctl_enabled; 7253 int sysctl_enabled;
7109 struct timezone sys_tz; 7254 struct timezone sys_tz;
@@ -7112,9 +7257,9 @@ diff -urNp linux-2.6.29.6/arch/x86/include/asm/vgtod.h linux-2.6.29.6/arch/x86/i
7112 cycle_t (*vread)(void); 7257 cycle_t (*vread)(void);
7113 cycle_t cycle_last; 7258 cycle_t cycle_last;
7114 cycle_t mask; 7259 cycle_t mask;
7115diff -urNp linux-2.6.29.6/arch/x86/include/asm/vsyscall.h linux-2.6.29.6/arch/x86/include/asm/vsyscall.h 7260diff -urNp linux-2.6.30.4/arch/x86/include/asm/vsyscall.h linux-2.6.30.4/arch/x86/include/asm/vsyscall.h
7116--- linux-2.6.29.6/arch/x86/include/asm/vsyscall.h 2009-07-02 19:41:20.000000000 -0400 7261--- linux-2.6.30.4/arch/x86/include/asm/vsyscall.h 2009-07-24 17:47:51.000000000 -0400
7117+++ linux-2.6.29.6/arch/x86/include/asm/vsyscall.h 2009-07-23 17:34:32.062941291 -0400 7262+++ linux-2.6.30.4/arch/x86/include/asm/vsyscall.h 2009-07-30 09:48:09.937413620 -0400
7118@@ -15,9 +15,10 @@ enum vsyscall_num { 7263@@ -15,9 +15,10 @@ enum vsyscall_num {
7119 7264
7120 #ifdef __KERNEL__ 7265 #ifdef __KERNEL__
@@ -7145,10 +7290,50 @@ diff -urNp linux-2.6.29.6/arch/x86/include/asm/vsyscall.h linux-2.6.29.6/arch/x8
7145 #endif /* __KERNEL__ */ 7290 #endif /* __KERNEL__ */
7146 7291
7147 #endif /* _ASM_X86_VSYSCALL_H */ 7292 #endif /* _ASM_X86_VSYSCALL_H */
7148diff -urNp linux-2.6.29.6/arch/x86/Kconfig linux-2.6.29.6/arch/x86/Kconfig 7293diff -urNp linux-2.6.30.4/arch/x86/Kconfig linux-2.6.30.4/arch/x86/Kconfig
7149--- linux-2.6.29.6/arch/x86/Kconfig 2009-07-02 19:41:20.000000000 -0400 7294--- linux-2.6.30.4/arch/x86/Kconfig 2009-07-24 17:47:51.000000000 -0400
7150+++ linux-2.6.29.6/arch/x86/Kconfig 2009-07-23 17:34:32.063803736 -0400 7295+++ linux-2.6.30.4/arch/x86/Kconfig 2009-08-04 17:52:34.387861424 -0400
7151@@ -993,7 +993,7 @@ config PAGE_OFFSET 7296@@ -345,6 +345,7 @@ config X86_VSMP
7297 select PARAVIRT
7298 depends on X86_64 && PCI
7299 depends on X86_EXTENDED_PLATFORM
7300+ depends on !PAX_KERNEXEC
7301 ---help---
7302 Support for ScaleMP vSMP systems. Say 'Y' here if this kernel is
7303 supposed to run on these EM64T-based machines. Only choose this option
7304@@ -464,6 +465,7 @@ config VMI
7305 bool "VMI Guest support"
7306 select PARAVIRT
7307 depends on X86_32
7308+ depends on !PAX_KERNEXEC
7309 ---help---
7310 VMI provides a paravirtualized interface to the VMware ESX server
7311 (it could be used by other hypervisors in theory too, but is not
7312@@ -474,6 +476,7 @@ config KVM_CLOCK
7313 bool "KVM paravirtualized clock"
7314 select PARAVIRT
7315 select PARAVIRT_CLOCK
7316+ depends on !PAX_KERNEXEC
7317 ---help---
7318 Turning on this option will allow you to run a paravirtualized clock
7319 when running over the KVM hypervisor. Instead of relying on a PIT
7320@@ -484,6 +487,7 @@ config KVM_CLOCK
7321 config KVM_GUEST
7322 bool "KVM Guest support"
7323 select PARAVIRT
7324+ depends on !PAX_KERNEXEC
7325 ---help---
7326 This option enables various optimizations for running under the KVM
7327 hypervisor.
7328@@ -492,6 +496,7 @@ source "arch/x86/lguest/Kconfig"
7329
7330 config PARAVIRT
7331 bool "Enable paravirtualization code"
7332+ depends on !PAX_KERNEXEC
7333 ---help---
7334 This changes the kernel so it can modify itself when it is run
7335 under a hypervisor, potentially improving performance significantly
7336@@ -1058,7 +1063,7 @@ config PAGE_OFFSET
7152 hex 7337 hex
7153 default 0xB0000000 if VMSPLIT_3G_OPT 7338 default 0xB0000000 if VMSPLIT_3G_OPT
7154 default 0x80000000 if VMSPLIT_2G 7339 default 0x80000000 if VMSPLIT_2G
@@ -7157,32 +7342,52 @@ diff -urNp linux-2.6.29.6/arch/x86/Kconfig linux-2.6.29.6/arch/x86/Kconfig
7157 default 0x40000000 if VMSPLIT_1G 7342 default 0x40000000 if VMSPLIT_1G
7158 default 0xC0000000 7343 default 0xC0000000
7159 depends on X86_32 7344 depends on X86_32
7160@@ -1408,8 +1408,7 @@ config KEXEC_JUMP 7345@@ -1376,7 +1381,7 @@ config X86_PAT
7346
7347 config EFI
7348 bool "EFI runtime service support"
7349- depends on ACPI
7350+ depends on ACPI && !PAX_KERNEXEC
7351 ---help---
7352 This enables the kernel to use EFI runtime services that are
7353 available (such as the EFI variable services).
7354@@ -1466,9 +1471,7 @@ config KEXEC_JUMP
7355
7161 config PHYSICAL_START 7356 config PHYSICAL_START
7162 hex "Physical address where the kernel is loaded" if (EMBEDDED || CRASH_DUMP) 7357 hex "Physical address where the kernel is loaded" if (EMBEDDED || CRASH_DUMP)
7163 default "0x1000000" if X86_NUMAQ 7358- default "0x1000000" if X86_NUMAQ
7164- default "0x200000" if X86_64 7359- default "0x200000" if X86_64
7165- default "0x100000" 7360- default "0x100000"
7166+ default "0x200000" 7361+ default "0x1000000"
7167 help 7362 ---help---
7168 This gives the physical address where the kernel is loaded. 7363 This gives the physical address where the kernel is loaded.
7169 7364
7170@@ -1501,9 +1500,9 @@ config HOTPLUG_CPU 7365@@ -1527,8 +1530,7 @@ config RELOCATABLE
7366 config PHYSICAL_ALIGN
7367 hex
7368 prompt "Alignment value to which kernel should be aligned" if X86_32
7369- default "0x100000" if X86_32
7370- default "0x200000" if X86_64
7371+ default "0x200000"
7372 range 0x2000 0x400000
7373 ---help---
7374 This value puts the alignment restrictions on physical address
7375@@ -1560,9 +1562,10 @@ config HOTPLUG_CPU
7171 Say N if you want to disable CPU hotplug. 7376 Say N if you want to disable CPU hotplug.
7172 7377
7173 config COMPAT_VDSO 7378 config COMPAT_VDSO
7174- def_bool y 7379- def_bool y
7175+ def_bool n 7380+ def_bool n
7176 prompt "Compat VDSO support" 7381 prompt "Compat VDSO support"
7177- depends on X86_32 || IA32_EMULATION 7382 depends on X86_32 || IA32_EMULATION
7178+ depends on (X86_32 || IA32_EMULATION) && !PAX_NOEXEC 7383+ depends on !PAX_NOEXEC && !PAX_MEMORY_UDEREF
7179 help 7384 ---help---
7180 Map the 32-bit VDSO to the predictable old-style address too. 7385 Map the 32-bit VDSO to the predictable old-style address too.
7181 ---help--- 7386 ---help---
7182diff -urNp linux-2.6.29.6/arch/x86/Kconfig.cpu linux-2.6.29.6/arch/x86/Kconfig.cpu 7387diff -urNp linux-2.6.30.4/arch/x86/Kconfig.cpu linux-2.6.30.4/arch/x86/Kconfig.cpu
7183--- linux-2.6.29.6/arch/x86/Kconfig.cpu 2009-07-02 19:41:20.000000000 -0400 7388--- linux-2.6.30.4/arch/x86/Kconfig.cpu 2009-07-24 17:47:51.000000000 -0400
7184+++ linux-2.6.29.6/arch/x86/Kconfig.cpu 2009-07-23 17:34:32.063803736 -0400 7389+++ linux-2.6.30.4/arch/x86/Kconfig.cpu 2009-07-30 09:48:09.916592662 -0400
7185@@ -333,7 +333,7 @@ config X86_PPRO_FENCE 7390@@ -331,7 +331,7 @@ config X86_PPRO_FENCE
7186 7391
7187 config X86_F00F_BUG 7392 config X86_F00F_BUG
7188 def_bool y 7393 def_bool y
@@ -7191,7 +7396,7 @@ diff -urNp linux-2.6.29.6/arch/x86/Kconfig.cpu linux-2.6.29.6/arch/x86/Kconfig.c
7191 7396
7192 config X86_WP_WORKS_OK 7397 config X86_WP_WORKS_OK
7193 def_bool y 7398 def_bool y
7194@@ -353,7 +353,7 @@ config X86_POPAD_OK 7399@@ -351,7 +351,7 @@ config X86_POPAD_OK
7195 7400
7196 config X86_ALIGNMENT_16 7401 config X86_ALIGNMENT_16
7197 def_bool y 7402 def_bool y
@@ -7200,7 +7405,7 @@ diff -urNp linux-2.6.29.6/arch/x86/Kconfig.cpu linux-2.6.29.6/arch/x86/Kconfig.c
7200 7405
7201 config X86_INTEL_USERCOPY 7406 config X86_INTEL_USERCOPY
7202 def_bool y 7407 def_bool y
7203@@ -399,7 +399,7 @@ config X86_CMPXCHG64 7408@@ -397,7 +397,7 @@ config X86_CMPXCHG64
7204 # generates cmov. 7409 # generates cmov.
7205 config X86_CMOV 7410 config X86_CMOV
7206 def_bool y 7411 def_bool y
@@ -7209,22 +7414,22 @@ diff -urNp linux-2.6.29.6/arch/x86/Kconfig.cpu linux-2.6.29.6/arch/x86/Kconfig.c
7209 7414
7210 config X86_MINIMUM_CPU_FAMILY 7415 config X86_MINIMUM_CPU_FAMILY
7211 int 7416 int
7212diff -urNp linux-2.6.29.6/arch/x86/Kconfig.debug linux-2.6.29.6/arch/x86/Kconfig.debug 7417diff -urNp linux-2.6.30.4/arch/x86/Kconfig.debug linux-2.6.30.4/arch/x86/Kconfig.debug
7213--- linux-2.6.29.6/arch/x86/Kconfig.debug 2009-07-02 19:41:20.000000000 -0400 7418--- linux-2.6.30.4/arch/x86/Kconfig.debug 2009-07-24 17:47:51.000000000 -0400
7214+++ linux-2.6.29.6/arch/x86/Kconfig.debug 2009-07-23 17:34:32.063803736 -0400 7419+++ linux-2.6.30.4/arch/x86/Kconfig.debug 2009-07-30 09:48:09.916592662 -0400
7215@@ -107,7 +107,7 @@ config X86_PTDUMP 7420@@ -99,7 +99,7 @@ config X86_PTDUMP
7216 config DEBUG_RODATA 7421 config DEBUG_RODATA
7217 bool "Write protect kernel read-only data structures" 7422 bool "Write protect kernel read-only data structures"
7218 default y 7423 default y
7219- depends on DEBUG_KERNEL 7424- depends on DEBUG_KERNEL
7220+ depends on DEBUG_KERNEL && BROKEN 7425+ depends on DEBUG_KERNEL && BROKEN
7221 help 7426 ---help---
7222 Mark the kernel read-only data as write-protected in the pagetables, 7427 Mark the kernel read-only data as write-protected in the pagetables,
7223 in order to catch accidental (and incorrect) writes to such const 7428 in order to catch accidental (and incorrect) writes to such const
7224diff -urNp linux-2.6.29.6/arch/x86/kernel/acpi/boot.c linux-2.6.29.6/arch/x86/kernel/acpi/boot.c 7429diff -urNp linux-2.6.30.4/arch/x86/kernel/acpi/boot.c linux-2.6.30.4/arch/x86/kernel/acpi/boot.c
7225--- linux-2.6.29.6/arch/x86/kernel/acpi/boot.c 2009-07-02 19:41:20.000000000 -0400 7430--- linux-2.6.30.4/arch/x86/kernel/acpi/boot.c 2009-07-24 17:47:51.000000000 -0400
7226+++ linux-2.6.29.6/arch/x86/kernel/acpi/boot.c 2009-07-23 17:34:32.064889971 -0400 7431+++ linux-2.6.30.4/arch/x86/kernel/acpi/boot.c 2009-07-30 09:48:09.938432163 -0400
7227@@ -1705,7 +1705,7 @@ static struct dmi_system_id __initdata a 7432@@ -1737,7 +1737,7 @@ static struct dmi_system_id __initdata a
7228 DMI_MATCH(DMI_PRODUCT_NAME, "HP Compaq 6715b"), 7433 DMI_MATCH(DMI_PRODUCT_NAME, "HP Compaq 6715b"),
7229 }, 7434 },
7230 }, 7435 },
@@ -7233,9 +7438,9 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/acpi/boot.c linux-2.6.29.6/arch/x86/ke
7233 }; 7438 };
7234 7439
7235 /* 7440 /*
7236diff -urNp linux-2.6.29.6/arch/x86/kernel/acpi/realmode/wakeup.S linux-2.6.29.6/arch/x86/kernel/acpi/realmode/wakeup.S 7441diff -urNp linux-2.6.30.4/arch/x86/kernel/acpi/realmode/wakeup.S linux-2.6.30.4/arch/x86/kernel/acpi/realmode/wakeup.S
7237--- linux-2.6.29.6/arch/x86/kernel/acpi/realmode/wakeup.S 2009-07-02 19:41:20.000000000 -0400 7442--- linux-2.6.30.4/arch/x86/kernel/acpi/realmode/wakeup.S 2009-07-24 17:47:51.000000000 -0400
7238+++ linux-2.6.29.6/arch/x86/kernel/acpi/realmode/wakeup.S 2009-07-23 17:34:32.064889971 -0400 7443+++ linux-2.6.30.4/arch/x86/kernel/acpi/realmode/wakeup.S 2009-07-30 09:48:09.938432163 -0400
7239@@ -104,7 +104,7 @@ _start: 7444@@ -104,7 +104,7 @@ _start:
7240 movl %eax, %ecx 7445 movl %eax, %ecx
7241 orl %edx, %ecx 7446 orl %edx, %ecx
@@ -7245,9 +7450,9 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/acpi/realmode/wakeup.S linux-2.6.29.6/
7245 wrmsr 7450 wrmsr
7246 1: 7451 1:
7247 7452
7248diff -urNp linux-2.6.29.6/arch/x86/kernel/acpi/sleep.c linux-2.6.29.6/arch/x86/kernel/acpi/sleep.c 7453diff -urNp linux-2.6.30.4/arch/x86/kernel/acpi/sleep.c linux-2.6.30.4/arch/x86/kernel/acpi/sleep.c
7249--- linux-2.6.29.6/arch/x86/kernel/acpi/sleep.c 2009-07-02 19:41:20.000000000 -0400 7454--- linux-2.6.30.4/arch/x86/kernel/acpi/sleep.c 2009-07-24 17:47:51.000000000 -0400
7250+++ linux-2.6.29.6/arch/x86/kernel/acpi/sleep.c 2009-07-23 17:34:32.064889971 -0400 7455+++ linux-2.6.30.4/arch/x86/kernel/acpi/sleep.c 2009-07-30 09:48:09.938432163 -0400
7251@@ -11,11 +11,12 @@ 7456@@ -11,11 +11,12 @@
7252 #include <linux/cpumask.h> 7457 #include <linux/cpumask.h>
7253 #include <asm/segment.h> 7458 #include <asm/segment.h>
@@ -7289,10 +7494,10 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/acpi/sleep.c linux-2.6.29.6/arch/x86/k
7289+ pax_close_kernel(cr0); 7494+ pax_close_kernel(cr0);
7290+#endif 7495+#endif
7291+ 7496+
7497 initial_gs = per_cpu_offset(smp_processor_id());
7292 #endif 7498 #endif
7293 initial_code = (unsigned long)wakeup_long64; 7499 initial_code = (unsigned long)wakeup_long64;
7294 saved_magic = 0x123456789abcdef0; 7500@@ -134,14 +149,8 @@ void __init acpi_reserve_bootmem(void)
7295@@ -133,14 +148,8 @@ void __init acpi_reserve_bootmem(void)
7296 return; 7501 return;
7297 } 7502 }
7298 7503
@@ -7309,9 +7514,9 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/acpi/sleep.c linux-2.6.29.6/arch/x86/k
7309 } 7514 }
7310 7515
7311 7516
7312diff -urNp linux-2.6.29.6/arch/x86/kernel/acpi/wakeup_32.S linux-2.6.29.6/arch/x86/kernel/acpi/wakeup_32.S 7517diff -urNp linux-2.6.30.4/arch/x86/kernel/acpi/wakeup_32.S linux-2.6.30.4/arch/x86/kernel/acpi/wakeup_32.S
7313--- linux-2.6.29.6/arch/x86/kernel/acpi/wakeup_32.S 2009-07-02 19:41:20.000000000 -0400 7518--- linux-2.6.30.4/arch/x86/kernel/acpi/wakeup_32.S 2009-07-24 17:47:51.000000000 -0400
7314+++ linux-2.6.29.6/arch/x86/kernel/acpi/wakeup_32.S 2009-07-23 17:34:32.064889971 -0400 7519+++ linux-2.6.30.4/arch/x86/kernel/acpi/wakeup_32.S 2009-07-30 09:48:09.938432163 -0400
7315@@ -30,13 +30,11 @@ wakeup_pmode_return: 7520@@ -30,13 +30,11 @@ wakeup_pmode_return:
7316 # and restore the stack ... but you need gdt for this to work 7521 # and restore the stack ... but you need gdt for this to work
7317 movl saved_context_esp, %esp 7522 movl saved_context_esp, %esp
@@ -7328,10 +7533,10 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/acpi/wakeup_32.S linux-2.6.29.6/arch/x
7328 7533
7329 bogus_magic: 7534 bogus_magic:
7330 jmp bogus_magic 7535 jmp bogus_magic
7331diff -urNp linux-2.6.29.6/arch/x86/kernel/alternative.c linux-2.6.29.6/arch/x86/kernel/alternative.c 7536diff -urNp linux-2.6.30.4/arch/x86/kernel/alternative.c linux-2.6.30.4/arch/x86/kernel/alternative.c
7332--- linux-2.6.29.6/arch/x86/kernel/alternative.c 2009-07-02 19:41:20.000000000 -0400 7537--- linux-2.6.30.4/arch/x86/kernel/alternative.c 2009-07-24 17:47:51.000000000 -0400
7333+++ linux-2.6.29.6/arch/x86/kernel/alternative.c 2009-07-23 17:34:32.064889971 -0400 7538+++ linux-2.6.30.4/arch/x86/kernel/alternative.c 2009-07-30 09:48:09.939725122 -0400
7334@@ -393,7 +393,7 @@ void apply_paravirt(struct paravirt_patc 7539@@ -400,7 +400,7 @@ void apply_paravirt(struct paravirt_patc
7335 7540
7336 BUG_ON(p->len > MAX_PATCH_LEN); 7541 BUG_ON(p->len > MAX_PATCH_LEN);
7337 /* prep the buffer with the original instructions */ 7542 /* prep the buffer with the original instructions */
@@ -7340,7 +7545,7 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/alternative.c linux-2.6.29.6/arch/x86/
7340 used = pv_init_ops.patch(p->instrtype, p->clobbers, insnbuf, 7545 used = pv_init_ops.patch(p->instrtype, p->clobbers, insnbuf,
7341 (unsigned long)p->instr, p->len); 7546 (unsigned long)p->instr, p->len);
7342 7547
7343@@ -473,11 +473,26 @@ void __init alternative_instructions(voi 7548@@ -485,11 +485,26 @@ void __init alternative_instructions(voi
7344 * instructions. And on the local CPU you need to be protected again NMI or MCE 7549 * instructions. And on the local CPU you need to be protected again NMI or MCE
7345 * handlers seeing an inconsistent instruction while you patch. 7550 * handlers seeing an inconsistent instruction while you patch.
7346 */ 7551 */
@@ -7369,13 +7574,12 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/alternative.c linux-2.6.29.6/arch/x86/
7369 local_irq_restore(flags); 7574 local_irq_restore(flags);
7370 sync_core(); 7575 sync_core();
7371 /* Could also do a CLFLUSH here to speed up CPU recovery; but 7576 /* Could also do a CLFLUSH here to speed up CPU recovery; but
7372@@ -498,33 +513,27 @@ void *text_poke_early(void *addr, const 7577@@ -512,35 +527,27 @@ void *text_poke_early(void *addr, const
7373 */ 7578 */
7374 void *__kprobes text_poke(void *addr, const void *opcode, size_t len) 7579 void *__kprobes text_poke(void *addr, const void *opcode, size_t len)
7375 { 7580 {
7376- unsigned long flags; 7581- unsigned long flags;
7377- char *vaddr; 7582- char *vaddr;
7378- int nr_pages = 2;
7379+ unsigned char *vaddr = ktla_ktva(addr); 7583+ unsigned char *vaddr = ktla_ktva(addr);
7380 struct page *pages[2]; 7584 struct page *pages[2];
7381- int i; 7585- int i;
@@ -7401,26 +7605,29 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/alternative.c linux-2.6.29.6/arch/x86/
7401+ pages[1] = virt_to_page(vaddr + PAGE_SIZE); 7605+ pages[1] = virt_to_page(vaddr + PAGE_SIZE);
7402 } 7606 }
7403 BUG_ON(!pages[0]); 7607 BUG_ON(!pages[0]);
7404- if (!pages[1])
7405- nr_pages = 1;
7406- vaddr = vmap(pages, nr_pages, VM_MAP, PAGE_KERNEL);
7407- BUG_ON(!vaddr);
7408- local_irq_save(flags); 7608- local_irq_save(flags);
7609- set_fixmap(FIX_TEXT_POKE0, page_to_phys(pages[0]));
7610- if (pages[1])
7611- set_fixmap(FIX_TEXT_POKE1, page_to_phys(pages[1]));
7612- vaddr = (char *)fix_to_virt(FIX_TEXT_POKE0);
7409- memcpy(&vaddr[(unsigned long)addr & ~PAGE_MASK], opcode, len); 7613- memcpy(&vaddr[(unsigned long)addr & ~PAGE_MASK], opcode, len);
7410- local_irq_restore(flags); 7614- clear_fixmap(FIX_TEXT_POKE0);
7411- vunmap(vaddr); 7615- if (pages[1])
7616- clear_fixmap(FIX_TEXT_POKE1);
7617- local_flush_tlb();
7412- sync_core(); 7618- sync_core();
7413- /* Could also do a CLFLUSH here to speed up CPU recovery; but 7619- /* Could also do a CLFLUSH here to speed up CPU recovery; but
7414- that causes hangs on some VIA CPUs. */ 7620- that causes hangs on some VIA CPUs. */
7415+ text_poke_early(addr, opcode, len); 7621+ text_poke_early(addr, opcode, len);
7416 for (i = 0; i < len; i++) 7622 for (i = 0; i < len; i++)
7417- BUG_ON(((char *)addr)[i] != ((char *)opcode)[i]); 7623- BUG_ON(((char *)addr)[i] != ((char *)opcode)[i]);
7418+ BUG_ON((vaddr)[i] != ((unsigned char *)opcode)[i]); 7624- local_irq_restore(flags);
7625+ BUG_ON(((char *)vaddr)[i] != ((char *)opcode)[i]);
7419 return addr; 7626 return addr;
7420 } 7627 }
7421diff -urNp linux-2.6.29.6/arch/x86/kernel/apm_32.c linux-2.6.29.6/arch/x86/kernel/apm_32.c 7628diff -urNp linux-2.6.30.4/arch/x86/kernel/apm_32.c linux-2.6.30.4/arch/x86/kernel/apm_32.c
7422--- linux-2.6.29.6/arch/x86/kernel/apm_32.c 2009-07-02 19:41:20.000000000 -0400 7629--- linux-2.6.30.4/arch/x86/kernel/apm_32.c 2009-07-24 17:47:51.000000000 -0400
7423+++ linux-2.6.29.6/arch/x86/kernel/apm_32.c 2009-07-23 17:34:32.065870632 -0400 7630+++ linux-2.6.30.4/arch/x86/kernel/apm_32.c 2009-07-30 09:48:09.939725122 -0400
7424@@ -403,7 +403,7 @@ static DECLARE_WAIT_QUEUE_HEAD(apm_waitq 7631@@ -403,7 +403,7 @@ static DECLARE_WAIT_QUEUE_HEAD(apm_waitq
7425 static DECLARE_WAIT_QUEUE_HEAD(apm_suspend_waitqueue); 7632 static DECLARE_WAIT_QUEUE_HEAD(apm_suspend_waitqueue);
7426 static struct apm_user *user_list; 7633 static struct apm_user *user_list;
@@ -7430,17 +7637,16 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/apm_32.c linux-2.6.29.6/arch/x86/kerne
7430 7637
7431 static const char driver_version[] = "1.16ac"; /* no spaces */ 7638 static const char driver_version[] = "1.16ac"; /* no spaces */
7432 7639
7433@@ -598,19 +598,42 @@ static u8 apm_bios_call(u32 func, u32 eb 7640@@ -576,12 +576,25 @@ static long __apm_bios_call(void *_call)
7434 struct desc_struct save_desc_40;
7435 struct desc_struct *gdt; 7641 struct desc_struct *gdt;
7642 struct apm_bios_call *call = _call;
7436 7643
7437+#ifdef CONFIG_PAX_KERNEXEC 7644+#ifdef CONFIG_PAX_KERNEXEC
7438+ unsigned long cr0; 7645+ unsigned long cr0;
7439+#endif 7646+#endif
7440+ 7647+
7441 cpus = apm_save_cpus();
7442
7443 cpu = get_cpu(); 7648 cpu = get_cpu();
7649 BUG_ON(cpu != 0);
7444 gdt = get_cpu_gdt_table(cpu); 7650 gdt = get_cpu_gdt_table(cpu);
7445 save_desc_40 = gdt[0x40 / 8]; 7651 save_desc_40 = gdt[0x40 / 8];
7446+ 7652+
@@ -7456,7 +7662,9 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/apm_32.c linux-2.6.29.6/arch/x86/kerne
7456+ 7662+
7457 apm_irq_save(flags); 7663 apm_irq_save(flags);
7458 APM_DO_SAVE_SEGS; 7664 APM_DO_SAVE_SEGS;
7459 apm_bios_call_asm(func, ebx_in, ecx_in, eax, ebx, ecx, edx, esi); 7665 apm_bios_call_asm(call->func, call->ebx, call->ecx,
7666@@ -589,7 +602,17 @@ static long __apm_bios_call(void *_call)
7667 &call->esi);
7460 APM_DO_RESTORE_SEGS; 7668 APM_DO_RESTORE_SEGS;
7461 apm_irq_restore(flags); 7669 apm_irq_restore(flags);
7462+ 7670+
@@ -7471,19 +7679,18 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/apm_32.c linux-2.6.29.6/arch/x86/kerne
7471+#endif 7679+#endif
7472+ 7680+
7473 put_cpu(); 7681 put_cpu();
7474 apm_restore_cpus(cpus);
7475 7682
7476@@ -641,19 +664,42 @@ static u8 apm_bios_call_simple(u32 func, 7683 return call->eax & 0xff;
7477 struct desc_struct save_desc_40; 7684@@ -652,19 +675,42 @@ static long __apm_bios_call_simple(void
7478 struct desc_struct *gdt; 7685 struct desc_struct *gdt;
7686 struct apm_bios_call *call = _call;
7479 7687
7480+#ifdef CONFIG_PAX_KERNEXEC 7688+#ifdef CONFIG_PAX_KERNEXEC
7481+ unsigned long cr0; 7689+ unsigned long cr0;
7482+#endif 7690+#endif
7483+ 7691+
7484 cpus = apm_save_cpus();
7485
7486 cpu = get_cpu(); 7692 cpu = get_cpu();
7693 BUG_ON(cpu != 0);
7487 gdt = get_cpu_gdt_table(cpu); 7694 gdt = get_cpu_gdt_table(cpu);
7488 save_desc_40 = gdt[0x40 / 8]; 7695 save_desc_40 = gdt[0x40 / 8];
7489+ 7696+
@@ -7499,7 +7706,8 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/apm_32.c linux-2.6.29.6/arch/x86/kerne
7499+ 7706+
7500 apm_irq_save(flags); 7707 apm_irq_save(flags);
7501 APM_DO_SAVE_SEGS; 7708 APM_DO_SAVE_SEGS;
7502 error = apm_bios_call_simple_asm(func, ebx_in, ecx_in, eax); 7709 error = apm_bios_call_simple_asm(call->func, call->ebx, call->ecx,
7710 &call->eax);
7503 APM_DO_RESTORE_SEGS; 7711 APM_DO_RESTORE_SEGS;
7504 apm_irq_restore(flags); 7712 apm_irq_restore(flags);
7505+ 7713+
@@ -7514,9 +7722,9 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/apm_32.c linux-2.6.29.6/arch/x86/kerne
7514+#endif 7722+#endif
7515+ 7723+
7516 put_cpu(); 7724 put_cpu();
7517 apm_restore_cpus(cpus);
7518 return error; 7725 return error;
7519@@ -925,7 +971,7 @@ recalc: 7726 }
7727@@ -967,7 +1013,7 @@ recalc:
7520 7728
7521 static void apm_power_off(void) 7729 static void apm_power_off(void)
7522 { 7730 {
@@ -7525,7 +7733,7 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/apm_32.c linux-2.6.29.6/arch/x86/kerne
7525 0xb8, 0x00, 0x10, /* movw $0x1000,ax */ 7733 0xb8, 0x00, 0x10, /* movw $0x1000,ax */
7526 0x8e, 0xd0, /* movw ax,ss */ 7734 0x8e, 0xd0, /* movw ax,ss */
7527 0xbc, 0x00, 0xf0, /* movw $0xf000,sp */ 7735 0xbc, 0x00, 0xf0, /* movw $0xf000,sp */
7528@@ -1876,7 +1922,10 @@ static const struct file_operations apm_ 7736@@ -1925,7 +1971,10 @@ static const struct file_operations apm_
7529 static struct miscdevice apm_device = { 7737 static struct miscdevice apm_device = {
7530 APM_MINOR_DEV, 7738 APM_MINOR_DEV,
7531 "apm_bios", 7739 "apm_bios",
@@ -7537,7 +7745,7 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/apm_32.c linux-2.6.29.6/arch/x86/kerne
7537 }; 7745 };
7538 7746
7539 7747
7540@@ -2197,7 +2246,7 @@ static struct dmi_system_id __initdata a 7748@@ -2246,7 +2295,7 @@ static struct dmi_system_id __initdata a
7541 { DMI_MATCH(DMI_SYS_VENDOR, "IBM"), }, 7749 { DMI_MATCH(DMI_SYS_VENDOR, "IBM"), },
7542 }, 7750 },
7543 7751
@@ -7546,7 +7754,7 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/apm_32.c linux-2.6.29.6/arch/x86/kerne
7546 }; 7754 };
7547 7755
7548 /* 7756 /*
7549@@ -2215,6 +2264,10 @@ static int __init apm_init(void) 7757@@ -2264,6 +2313,10 @@ static int __init apm_init(void)
7550 struct desc_struct *gdt; 7758 struct desc_struct *gdt;
7551 int err; 7759 int err;
7552 7760
@@ -7557,7 +7765,7 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/apm_32.c linux-2.6.29.6/arch/x86/kerne
7557 dmi_check_system(apm_dmi_table); 7765 dmi_check_system(apm_dmi_table);
7558 7766
7559 if (apm_info.bios.version == 0 || paravirt_enabled() || machine_is_olpc()) { 7767 if (apm_info.bios.version == 0 || paravirt_enabled() || machine_is_olpc()) {
7560@@ -2288,9 +2341,18 @@ static int __init apm_init(void) 7768@@ -2337,9 +2390,18 @@ static int __init apm_init(void)
7561 * This is for buggy BIOS's that refer to (real mode) segment 0x40 7769 * This is for buggy BIOS's that refer to (real mode) segment 0x40
7562 * even though they are called in protected mode. 7770 * even though they are called in protected mode.
7563 */ 7771 */
@@ -7576,7 +7784,7 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/apm_32.c linux-2.6.29.6/arch/x86/kerne
7576 /* 7784 /*
7577 * Set up the long jump entry point to the APM BIOS, which is called 7785 * Set up the long jump entry point to the APM BIOS, which is called
7578 * from inline assembly. 7786 * from inline assembly.
7579@@ -2309,6 +2371,11 @@ static int __init apm_init(void) 7787@@ -2358,6 +2420,11 @@ static int __init apm_init(void)
7580 * code to that CPU. 7788 * code to that CPU.
7581 */ 7789 */
7582 gdt = get_cpu_gdt_table(0); 7790 gdt = get_cpu_gdt_table(0);
@@ -7588,7 +7796,7 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/apm_32.c linux-2.6.29.6/arch/x86/kerne
7588 set_base(gdt[APM_CS >> 3], 7796 set_base(gdt[APM_CS >> 3],
7589 __va((unsigned long)apm_info.bios.cseg << 4)); 7797 __va((unsigned long)apm_info.bios.cseg << 4));
7590 set_base(gdt[APM_CS_16 >> 3], 7798 set_base(gdt[APM_CS_16 >> 3],
7591@@ -2316,6 +2383,10 @@ static int __init apm_init(void) 7799@@ -2365,6 +2432,10 @@ static int __init apm_init(void)
7592 set_base(gdt[APM_DS >> 3], 7800 set_base(gdt[APM_DS >> 3],
7593 __va((unsigned long)apm_info.bios.dseg << 4)); 7801 __va((unsigned long)apm_info.bios.dseg << 4));
7594 7802
@@ -7599,18 +7807,10 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/apm_32.c linux-2.6.29.6/arch/x86/kerne
7599 proc_create("apm", 0, NULL, &apm_file_ops); 7807 proc_create("apm", 0, NULL, &apm_file_ops);
7600 7808
7601 kapmd_task = kthread_create(apm, NULL, "kapmd"); 7809 kapmd_task = kthread_create(apm, NULL, "kapmd");
7602diff -urNp linux-2.6.29.6/arch/x86/kernel/asm-offsets_32.c linux-2.6.29.6/arch/x86/kernel/asm-offsets_32.c 7810diff -urNp linux-2.6.30.4/arch/x86/kernel/asm-offsets_32.c linux-2.6.30.4/arch/x86/kernel/asm-offsets_32.c
7603--- linux-2.6.29.6/arch/x86/kernel/asm-offsets_32.c 2009-07-02 19:41:20.000000000 -0400 7811--- linux-2.6.30.4/arch/x86/kernel/asm-offsets_32.c 2009-07-24 17:47:51.000000000 -0400
7604+++ linux-2.6.29.6/arch/x86/kernel/asm-offsets_32.c 2009-07-23 17:34:32.065870632 -0400 7812+++ linux-2.6.30.4/arch/x86/kernel/asm-offsets_32.c 2009-07-30 09:48:09.939725122 -0400
7605@@ -100,6 +100,7 @@ void foo(void) 7813@@ -115,6 +115,7 @@ void foo(void)
7606 DEFINE(PTRS_PER_PTE, PTRS_PER_PTE);
7607 DEFINE(PTRS_PER_PMD, PTRS_PER_PMD);
7608 DEFINE(PTRS_PER_PGD, PTRS_PER_PGD);
7609+ DEFINE(PERCPU_MODULE_RESERVE, PERCPU_MODULE_RESERVE);
7610
7611 OFFSET(crypto_tfm_ctx_offset, crypto_tfm, __crt_ctx);
7612
7613@@ -113,6 +114,7 @@ void foo(void)
7614 OFFSET(PV_CPU_iret, pv_cpu_ops, iret); 7814 OFFSET(PV_CPU_iret, pv_cpu_ops, iret);
7615 OFFSET(PV_CPU_irq_enable_sysexit, pv_cpu_ops, irq_enable_sysexit); 7815 OFFSET(PV_CPU_irq_enable_sysexit, pv_cpu_ops, irq_enable_sysexit);
7616 OFFSET(PV_CPU_read_cr0, pv_cpu_ops, read_cr0); 7816 OFFSET(PV_CPU_read_cr0, pv_cpu_ops, read_cr0);
@@ -7618,10 +7818,10 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/asm-offsets_32.c linux-2.6.29.6/arch/x
7618 #endif 7818 #endif
7619 7819
7620 #ifdef CONFIG_XEN 7820 #ifdef CONFIG_XEN
7621diff -urNp linux-2.6.29.6/arch/x86/kernel/asm-offsets_64.c linux-2.6.29.6/arch/x86/kernel/asm-offsets_64.c 7821diff -urNp linux-2.6.30.4/arch/x86/kernel/asm-offsets_64.c linux-2.6.30.4/arch/x86/kernel/asm-offsets_64.c
7622--- linux-2.6.29.6/arch/x86/kernel/asm-offsets_64.c 2009-07-02 19:41:20.000000000 -0400 7822--- linux-2.6.30.4/arch/x86/kernel/asm-offsets_64.c 2009-07-24 17:47:51.000000000 -0400
7623+++ linux-2.6.29.6/arch/x86/kernel/asm-offsets_64.c 2009-07-23 17:34:32.065870632 -0400 7823+++ linux-2.6.30.4/arch/x86/kernel/asm-offsets_64.c 2009-07-30 09:48:09.939725122 -0400
7624@@ -124,6 +124,7 @@ int main(void) 7824@@ -114,6 +114,7 @@ int main(void)
7625 ENTRY(cr8); 7825 ENTRY(cr8);
7626 BLANK(); 7826 BLANK();
7627 #undef ENTRY 7827 #undef ENTRY
@@ -7629,89 +7829,82 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/asm-offsets_64.c linux-2.6.29.6/arch/x
7629 DEFINE(TSS_ist, offsetof(struct tss_struct, x86_tss.ist)); 7829 DEFINE(TSS_ist, offsetof(struct tss_struct, x86_tss.ist));
7630 BLANK(); 7830 BLANK();
7631 DEFINE(crypto_tfm_ctx_offset, offsetof(struct crypto_tfm, __crt_ctx)); 7831 DEFINE(crypto_tfm_ctx_offset, offsetof(struct crypto_tfm, __crt_ctx));
7632diff -urNp linux-2.6.29.6/arch/x86/kernel/cpu/common.c linux-2.6.29.6/arch/x86/kernel/cpu/common.c 7832diff -urNp linux-2.6.30.4/arch/x86/kernel/cpu/common.c linux-2.6.30.4/arch/x86/kernel/cpu/common.c
7633--- linux-2.6.29.6/arch/x86/kernel/cpu/common.c 2009-07-02 19:41:20.000000000 -0400 7833--- linux-2.6.30.4/arch/x86/kernel/cpu/common.c 2009-07-24 17:47:51.000000000 -0400
7634+++ linux-2.6.29.6/arch/x86/kernel/cpu/common.c 2009-07-23 17:34:32.066840916 -0400 7834+++ linux-2.6.30.4/arch/x86/kernel/cpu/common.c 2009-07-30 09:48:09.941068037 -0400
7635@@ -2,7 +2,6 @@ 7835@@ -60,60 +60,6 @@ void __init setup_cpu_local_masks(void)
7636 #include <linux/kernel.h>
7637 #include <linux/sched.h>
7638 #include <linux/string.h>
7639-#include <linux/bootmem.h>
7640 #include <linux/bitops.h>
7641 #include <linux/module.h>
7642 #include <linux/kgdb.h>
7643@@ -62,59 +61,6 @@ cpumask_t cpu_sibling_setup_map;
7644 7836
7645 static struct cpu_dev *this_cpu __cpuinitdata; 7837 static const struct cpu_dev *this_cpu __cpuinitdata;
7646 7838
7839-DEFINE_PER_CPU_PAGE_ALIGNED(struct gdt_page, gdt_page) = { .gdt = {
7647-#ifdef CONFIG_X86_64 7840-#ifdef CONFIG_X86_64
7648-/* We need valid kernel segments for data and code in long mode too 7841- /*
7649- * IRET will check the segment types kkeil 2000/10/28 7842- * We need valid kernel segments for data and code in long mode too
7650- * Also sysret mandates a special GDT layout 7843- * IRET will check the segment types kkeil 2000/10/28
7651- */ 7844- * Also sysret mandates a special GDT layout
7652-/* The TLS descriptors are currently at a different place compared to i386. 7845- *
7653- Hopefully nobody expects them at a fixed place (Wine?) */ 7846- * TLS descriptors are currently at a different place compared to i386.
7654-DEFINE_PER_CPU(struct gdt_page, gdt_page) = { .gdt = { 7847- * Hopefully nobody expects them at a fixed place (Wine?)
7655- [GDT_ENTRY_KERNEL32_CS] = { { { 0x0000ffff, 0x00cf9b00 } } }, 7848- */
7656- [GDT_ENTRY_KERNEL_CS] = { { { 0x0000ffff, 0x00af9b00 } } }, 7849- [GDT_ENTRY_KERNEL32_CS] = { { { 0x0000ffff, 0x00cf9b00 } } },
7657- [GDT_ENTRY_KERNEL_DS] = { { { 0x0000ffff, 0x00cf9300 } } }, 7850- [GDT_ENTRY_KERNEL_CS] = { { { 0x0000ffff, 0x00af9b00 } } },
7658- [GDT_ENTRY_DEFAULT_USER32_CS] = { { { 0x0000ffff, 0x00cffb00 } } }, 7851- [GDT_ENTRY_KERNEL_DS] = { { { 0x0000ffff, 0x00cf9300 } } },
7659- [GDT_ENTRY_DEFAULT_USER_DS] = { { { 0x0000ffff, 0x00cff300 } } }, 7852- [GDT_ENTRY_DEFAULT_USER32_CS] = { { { 0x0000ffff, 0x00cffb00 } } },
7660- [GDT_ENTRY_DEFAULT_USER_CS] = { { { 0x0000ffff, 0x00affb00 } } }, 7853- [GDT_ENTRY_DEFAULT_USER_DS] = { { { 0x0000ffff, 0x00cff300 } } },
7661-} }; 7854- [GDT_ENTRY_DEFAULT_USER_CS] = { { { 0x0000ffff, 0x00affb00 } } },
7662-#else 7855-#else
7663-DEFINE_PER_CPU_PAGE_ALIGNED(struct gdt_page, gdt_page) = { .gdt = { 7856- [GDT_ENTRY_KERNEL_CS] = { { { 0x0000ffff, 0x00cf9a00 } } },
7664- [GDT_ENTRY_KERNEL_CS] = { { { 0x0000ffff, 0x00cf9a00 } } }, 7857- [GDT_ENTRY_KERNEL_DS] = { { { 0x0000ffff, 0x00cf9200 } } },
7665- [GDT_ENTRY_KERNEL_DS] = { { { 0x0000ffff, 0x00cf9200 } } }, 7858- [GDT_ENTRY_DEFAULT_USER_CS] = { { { 0x0000ffff, 0x00cffa00 } } },
7666- [GDT_ENTRY_DEFAULT_USER_CS] = { { { 0x0000ffff, 0x00cffa00 } } }, 7859- [GDT_ENTRY_DEFAULT_USER_DS] = { { { 0x0000ffff, 0x00cff200 } } },
7667- [GDT_ENTRY_DEFAULT_USER_DS] = { { { 0x0000ffff, 0x00cff200 } } },
7668- /* 7860- /*
7669- * Segments used for calling PnP BIOS have byte granularity. 7861- * Segments used for calling PnP BIOS have byte granularity.
7670- * They code segments and data segments have fixed 64k limits, 7862- * They code segments and data segments have fixed 64k limits,
7671- * the transfer segment sizes are set at run time. 7863- * the transfer segment sizes are set at run time.
7672- */ 7864- */
7673- /* 32-bit code */ 7865- /* 32-bit code */
7674- [GDT_ENTRY_PNPBIOS_CS32] = { { { 0x0000ffff, 0x00409a00 } } }, 7866- [GDT_ENTRY_PNPBIOS_CS32] = { { { 0x0000ffff, 0x00409a00 } } },
7675- /* 16-bit code */ 7867- /* 16-bit code */
7676- [GDT_ENTRY_PNPBIOS_CS16] = { { { 0x0000ffff, 0x00009a00 } } }, 7868- [GDT_ENTRY_PNPBIOS_CS16] = { { { 0x0000ffff, 0x00009a00 } } },
7677- /* 16-bit data */ 7869- /* 16-bit data */
7678- [GDT_ENTRY_PNPBIOS_DS] = { { { 0x0000ffff, 0x00009200 } } }, 7870- [GDT_ENTRY_PNPBIOS_DS] = { { { 0x0000ffff, 0x00009200 } } },
7679- /* 16-bit data */ 7871- /* 16-bit data */
7680- [GDT_ENTRY_PNPBIOS_TS1] = { { { 0x00000000, 0x00009200 } } }, 7872- [GDT_ENTRY_PNPBIOS_TS1] = { { { 0x00000000, 0x00009200 } } },
7681- /* 16-bit data */ 7873- /* 16-bit data */
7682- [GDT_ENTRY_PNPBIOS_TS2] = { { { 0x00000000, 0x00009200 } } }, 7874- [GDT_ENTRY_PNPBIOS_TS2] = { { { 0x00000000, 0x00009200 } } },
7683- /* 7875- /*
7684- * The APM segments have byte granularity and their bases 7876- * The APM segments have byte granularity and their bases
7685- * are set at run time. All have 64k limits. 7877- * are set at run time. All have 64k limits.
7686- */ 7878- */
7687- /* 32-bit code */ 7879- /* 32-bit code */
7688- [GDT_ENTRY_APMBIOS_BASE] = { { { 0x0000ffff, 0x00409a00 } } }, 7880- [GDT_ENTRY_APMBIOS_BASE] = { { { 0x0000ffff, 0x00409a00 } } },
7689- /* 16-bit code */ 7881- /* 16-bit code */
7690- [GDT_ENTRY_APMBIOS_BASE+1] = { { { 0x0000ffff, 0x00009a00 } } }, 7882- [GDT_ENTRY_APMBIOS_BASE+1] = { { { 0x0000ffff, 0x00009a00 } } },
7691- /* data */ 7883- /* data */
7692- [GDT_ENTRY_APMBIOS_BASE+2] = { { { 0x0000ffff, 0x00409200 } } }, 7884- [GDT_ENTRY_APMBIOS_BASE+2] = { { { 0x0000ffff, 0x00409200 } } },
7693- 7885-
7694- [GDT_ENTRY_ESPFIX_SS] = { { { 0x00000000, 0x00c09200 } } }, 7886- [GDT_ENTRY_ESPFIX_SS] = { { { 0x00000000, 0x00c09200 } } },
7695- [GDT_ENTRY_PERCPU] = { { { 0x00000000, 0x00000000 } } }, 7887- [GDT_ENTRY_PERCPU] = { { { 0x0000ffff, 0x00cf9200 } } },
7696-} }; 7888- GDT_STACK_CANARY_INIT
7697-#endif 7889-#endif
7890-} };
7698-EXPORT_PER_CPU_SYMBOL_GPL(gdt_page); 7891-EXPORT_PER_CPU_SYMBOL_GPL(gdt_page);
7699- 7892-
7700 #ifdef CONFIG_X86_32 7893 static int __init x86_xsave_setup(char *s)
7701 static int cachesize_override __cpuinitdata = -1; 7894 {
7702 static int disable_x86_serial_nr __cpuinitdata = 1; 7895 setup_clear_cpu_cap(X86_FEATURE_XSAVE);
7703@@ -248,7 +194,7 @@ void switch_to_new_gdt(void) 7896@@ -320,7 +266,7 @@ void switch_to_new_gdt(int cpu)
7704 { 7897 {
7705 struct desc_ptr gdt_descr; 7898 struct desc_ptr gdt_descr;
7706 7899
7707- gdt_descr.address = (long)get_cpu_gdt_table(smp_processor_id()); 7900- gdt_descr.address = (long)get_cpu_gdt_table(cpu);
7708+ gdt_descr.address = (unsigned long)get_cpu_gdt_table(smp_processor_id()); 7901+ gdt_descr.address = (unsigned long)get_cpu_gdt_table(cpu);
7709 gdt_descr.size = GDT_SIZE - 1; 7902 gdt_descr.size = GDT_SIZE - 1;
7710 load_gdt(&gdt_descr); 7903 load_gdt(&gdt_descr);
7711 #ifdef CONFIG_X86_32 7904 /* Reload the per-cpu base */
7712@@ -708,6 +654,10 @@ static void __cpuinit identify_cpu(struc 7905@@ -796,6 +742,10 @@ static void __cpuinit identify_cpu(struc
7713 * we do "generic changes." 7906 /* Filter out anything that depends on CPUID levels we don't have */
7714 */ 7907 filter_cpuid_features(c, true);
7715 7908
7716+#if defined(CONFIG_PAX_SEGMEXEC) || defined(CONFIG_PAX_KERNEXEC) || defined(CONFIG_PAX_MEMORY_UDEREF) 7909+#if defined(CONFIG_PAX_SEGMEXEC) || defined(CONFIG_PAX_KERNEXEC) || defined(CONFIG_PAX_MEMORY_UDEREF)
7717+ setup_clear_cpu_cap(X86_FEATURE_SEP); 7910+ setup_clear_cpu_cap(X86_FEATURE_SEP);
@@ -7719,26 +7912,26 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/cpu/common.c linux-2.6.29.6/arch/x86/k
7719+ 7912+
7720 /* If the model name is still unset, do table lookup. */ 7913 /* If the model name is still unset, do table lookup. */
7721 if (!c->x86_model_id[0]) { 7914 if (!c->x86_model_id[0]) {
7722 char *p; 7915 const char *p;
7723@@ -880,7 +830,7 @@ __setup("clearcpuid=", setup_disablecpui 7916@@ -972,7 +922,7 @@ static __init int setup_disablecpuid(cha
7724 struct x8664_pda **_cpu_pda __read_mostly; 7917 __setup("clearcpuid=", setup_disablecpuid);
7725 EXPORT_SYMBOL(_cpu_pda);
7726 7918
7919 #ifdef CONFIG_X86_64
7727-struct desc_ptr idt_descr = { 256 * 16 - 1, (unsigned long) idt_table }; 7920-struct desc_ptr idt_descr = { 256 * 16 - 1, (unsigned long) idt_table };
7728+struct desc_ptr idt_descr __read_only = { 256 * 16 - 1, (unsigned long) idt_table }; 7921+struct desc_ptr idt_descr __read_only = { 256 * 16 - 1, (unsigned long) idt_table };
7729 7922
7730 static char boot_cpu_stack[IRQSTACKSIZE] __page_aligned_bss; 7923 DEFINE_PER_CPU_FIRST(union irq_stack_union,
7924 irq_stack_union) __aligned(PAGE_SIZE);
7925@@ -1082,7 +1032,7 @@ void __cpuinit cpu_init(void)
7926 int i;
7731 7927
7732@@ -979,7 +929,7 @@ struct pt_regs * __cpuinit idle_regs(str 7928 cpu = stack_smp_processor_id();
7733 void __cpuinit cpu_init(void) 7929- t = &per_cpu(init_tss, cpu);
7734 { 7930+ t = init_tss + cpu;
7735 int cpu = stack_smp_processor_id(); 7931 orig_ist = &per_cpu(orig_ist, cpu);
7736- struct tss_struct *t = &per_cpu(init_tss, cpu); 7932
7737+ struct tss_struct *t = init_tss + cpu; 7933 #ifdef CONFIG_NUMA
7738 struct orig_ist *orig_ist = &per_cpu(orig_ist, cpu); 7934@@ -1180,7 +1130,7 @@ void __cpuinit cpu_init(void)
7739 unsigned long v;
7740 char *estacks = NULL;
7741@@ -1100,7 +1050,7 @@ void __cpuinit cpu_init(void)
7742 { 7935 {
7743 int cpu = smp_processor_id(); 7936 int cpu = smp_processor_id();
7744 struct task_struct *curr = current; 7937 struct task_struct *curr = current;
@@ -7747,10 +7940,10 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/cpu/common.c linux-2.6.29.6/arch/x86/k
7747 struct thread_struct *thread = &curr->thread; 7940 struct thread_struct *thread = &curr->thread;
7748 7941
7749 if (cpumask_test_and_set_cpu(cpu, cpu_initialized_mask)) { 7942 if (cpumask_test_and_set_cpu(cpu, cpu_initialized_mask)) {
7750diff -urNp linux-2.6.29.6/arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c linux-2.6.29.6/arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c 7943diff -urNp linux-2.6.30.4/arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c linux-2.6.30.4/arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c
7751--- linux-2.6.29.6/arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c 2009-07-02 19:41:20.000000000 -0400 7944--- linux-2.6.30.4/arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c 2009-07-24 17:47:51.000000000 -0400
7752+++ linux-2.6.29.6/arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c 2009-07-23 17:34:32.066840916 -0400 7945+++ linux-2.6.30.4/arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c 2009-07-30 09:48:09.941068037 -0400
7753@@ -581,7 +581,7 @@ static const struct dmi_system_id sw_any 7946@@ -590,7 +590,7 @@ static const struct dmi_system_id sw_any
7754 DMI_MATCH(DMI_PRODUCT_NAME, "X6DLP"), 7947 DMI_MATCH(DMI_PRODUCT_NAME, "X6DLP"),
7755 }, 7948 },
7756 }, 7949 },
@@ -7759,9 +7952,9 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c linux-2.6.2
7759 }; 7952 };
7760 #endif 7953 #endif
7761 7954
7762diff -urNp linux-2.6.29.6/arch/x86/kernel/cpu/cpufreq/speedstep-centrino.c linux-2.6.29.6/arch/x86/kernel/cpu/cpufreq/speedstep-centrino.c 7955diff -urNp linux-2.6.30.4/arch/x86/kernel/cpu/cpufreq/speedstep-centrino.c linux-2.6.30.4/arch/x86/kernel/cpu/cpufreq/speedstep-centrino.c
7763--- linux-2.6.29.6/arch/x86/kernel/cpu/cpufreq/speedstep-centrino.c 2009-07-02 19:41:20.000000000 -0400 7956--- linux-2.6.30.4/arch/x86/kernel/cpu/cpufreq/speedstep-centrino.c 2009-07-24 17:47:51.000000000 -0400
7764+++ linux-2.6.29.6/arch/x86/kernel/cpu/cpufreq/speedstep-centrino.c 2009-07-23 17:34:32.066840916 -0400 7957+++ linux-2.6.30.4/arch/x86/kernel/cpu/cpufreq/speedstep-centrino.c 2009-07-30 09:48:09.941727851 -0400
7765@@ -225,7 +225,7 @@ static struct cpu_model models[] = 7958@@ -225,7 +225,7 @@ static struct cpu_model models[] =
7766 { &cpu_ids[CPU_MP4HT_D0], NULL, 0, NULL }, 7959 { &cpu_ids[CPU_MP4HT_D0], NULL, 0, NULL },
7767 { &cpu_ids[CPU_MP4HT_E0], NULL, 0, NULL }, 7960 { &cpu_ids[CPU_MP4HT_E0], NULL, 0, NULL },
@@ -7771,10 +7964,10 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/cpu/cpufreq/speedstep-centrino.c linux
7771 }; 7964 };
7772 #undef _BANIAS 7965 #undef _BANIAS
7773 #undef BANIAS 7966 #undef BANIAS
7774diff -urNp linux-2.6.29.6/arch/x86/kernel/cpu/intel.c linux-2.6.29.6/arch/x86/kernel/cpu/intel.c 7967diff -urNp linux-2.6.30.4/arch/x86/kernel/cpu/intel.c linux-2.6.30.4/arch/x86/kernel/cpu/intel.c
7775--- linux-2.6.29.6/arch/x86/kernel/cpu/intel.c 2009-07-02 19:41:20.000000000 -0400 7968--- linux-2.6.30.4/arch/x86/kernel/cpu/intel.c 2009-07-24 17:47:51.000000000 -0400
7776+++ linux-2.6.29.6/arch/x86/kernel/cpu/intel.c 2009-07-23 17:34:32.068000886 -0400 7969+++ linux-2.6.30.4/arch/x86/kernel/cpu/intel.c 2009-07-30 09:48:09.941727851 -0400
7777@@ -94,7 +94,7 @@ static void __cpuinit trap_init_f00f_bug 7970@@ -117,7 +117,7 @@ static void __cpuinit trap_init_f00f_bug
7778 * Update the IDT descriptor and reload the IDT so that 7971 * Update the IDT descriptor and reload the IDT so that
7779 * it uses the read-only mapped virtual address. 7972 * it uses the read-only mapped virtual address.
7780 */ 7973 */
@@ -7783,20 +7976,20 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/cpu/intel.c linux-2.6.29.6/arch/x86/ke
7783 load_idt(&idt_descr); 7976 load_idt(&idt_descr);
7784 } 7977 }
7785 #endif 7978 #endif
7786diff -urNp linux-2.6.29.6/arch/x86/kernel/cpu/mcheck/mce_64.c linux-2.6.29.6/arch/x86/kernel/cpu/mcheck/mce_64.c 7979diff -urNp linux-2.6.30.4/arch/x86/kernel/cpu/mcheck/mce_64.c linux-2.6.30.4/arch/x86/kernel/cpu/mcheck/mce_64.c
7787--- linux-2.6.29.6/arch/x86/kernel/cpu/mcheck/mce_64.c 2009-07-02 19:41:20.000000000 -0400 7980--- linux-2.6.30.4/arch/x86/kernel/cpu/mcheck/mce_64.c 2009-07-24 17:47:51.000000000 -0400
7788+++ linux-2.6.29.6/arch/x86/kernel/cpu/mcheck/mce_64.c 2009-07-23 17:34:32.068000886 -0400 7981+++ linux-2.6.30.4/arch/x86/kernel/cpu/mcheck/mce_64.c 2009-07-30 09:48:09.941727851 -0400
7789@@ -678,6 +678,7 @@ static struct miscdevice mce_log_device 7982@@ -830,6 +830,7 @@ static struct miscdevice mce_log_device
7790 MISC_MCELOG_MINOR, 7983 MISC_MCELOG_MINOR,
7791 "mcelog", 7984 "mcelog",
7792 &mce_chrdev_ops, 7985 &mce_chrdev_ops,
7793+ {NULL, NULL}, NULL, NULL 7986+ {NULL, NULL}, NULL, NULL
7794 }; 7987 };
7795 7988
7796 static unsigned long old_cr4 __initdata; 7989 /*
7797diff -urNp linux-2.6.29.6/arch/x86/kernel/cpu/mtrr/generic.c linux-2.6.29.6/arch/x86/kernel/cpu/mtrr/generic.c 7990diff -urNp linux-2.6.30.4/arch/x86/kernel/cpu/mtrr/generic.c linux-2.6.30.4/arch/x86/kernel/cpu/mtrr/generic.c
7798--- linux-2.6.29.6/arch/x86/kernel/cpu/mtrr/generic.c 2009-07-02 19:41:20.000000000 -0400 7991--- linux-2.6.30.4/arch/x86/kernel/cpu/mtrr/generic.c 2009-07-24 17:47:51.000000000 -0400
7799+++ linux-2.6.29.6/arch/x86/kernel/cpu/mtrr/generic.c 2009-07-23 17:34:32.068000886 -0400 7992+++ linux-2.6.30.4/arch/x86/kernel/cpu/mtrr/generic.c 2009-07-30 09:48:09.942991706 -0400
7800@@ -23,14 +23,14 @@ static struct fixed_range_block fixed_ra 7993@@ -23,14 +23,14 @@ static struct fixed_range_block fixed_ra
7801 { MTRRfix64K_00000_MSR, 1 }, /* one 64k MTRR */ 7994 { MTRRfix64K_00000_MSR, 1 }, /* one 64k MTRR */
7802 { MTRRfix16K_80000_MSR, 2 }, /* two 16k MTRRs */ 7995 { MTRRfix16K_80000_MSR, 2 }, /* two 16k MTRRs */
@@ -7813,11 +8006,11 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/cpu/mtrr/generic.c linux-2.6.29.6/arch
7813+struct mtrr_state_type mtrr_state; 8006+struct mtrr_state_type mtrr_state;
7814 EXPORT_SYMBOL_GPL(mtrr_state); 8007 EXPORT_SYMBOL_GPL(mtrr_state);
7815 8008
7816 static int __initdata mtrr_show; 8009 /**
7817diff -urNp linux-2.6.29.6/arch/x86/kernel/crash.c linux-2.6.29.6/arch/x86/kernel/crash.c 8010diff -urNp linux-2.6.30.4/arch/x86/kernel/crash.c linux-2.6.30.4/arch/x86/kernel/crash.c
7818--- linux-2.6.29.6/arch/x86/kernel/crash.c 2009-07-02 19:41:20.000000000 -0400 8011--- linux-2.6.30.4/arch/x86/kernel/crash.c 2009-07-24 17:47:51.000000000 -0400
7819+++ linux-2.6.29.6/arch/x86/kernel/crash.c 2009-07-23 17:34:32.068000886 -0400 8012+++ linux-2.6.30.4/arch/x86/kernel/crash.c 2009-07-30 09:48:09.942991706 -0400
7820@@ -43,7 +43,7 @@ static void kdump_nmi_callback(int cpu, 8013@@ -41,7 +41,7 @@ static void kdump_nmi_callback(int cpu,
7821 regs = args->regs; 8014 regs = args->regs;
7822 8015
7823 #ifdef CONFIG_X86_32 8016 #ifdef CONFIG_X86_32
@@ -7826,9 +8019,9 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/crash.c linux-2.6.29.6/arch/x86/kernel
7826 crash_fixup_ss_esp(&fixed_regs, regs); 8019 crash_fixup_ss_esp(&fixed_regs, regs);
7827 regs = &fixed_regs; 8020 regs = &fixed_regs;
7828 } 8021 }
7829diff -urNp linux-2.6.29.6/arch/x86/kernel/doublefault_32.c linux-2.6.29.6/arch/x86/kernel/doublefault_32.c 8022diff -urNp linux-2.6.30.4/arch/x86/kernel/doublefault_32.c linux-2.6.30.4/arch/x86/kernel/doublefault_32.c
7830--- linux-2.6.29.6/arch/x86/kernel/doublefault_32.c 2009-07-02 19:41:20.000000000 -0400 8023--- linux-2.6.30.4/arch/x86/kernel/doublefault_32.c 2009-07-24 17:47:51.000000000 -0400
7831+++ linux-2.6.29.6/arch/x86/kernel/doublefault_32.c 2009-07-23 17:34:32.068803825 -0400 8024+++ linux-2.6.30.4/arch/x86/kernel/doublefault_32.c 2009-07-30 09:48:09.942991706 -0400
7832@@ -11,7 +11,7 @@ 8025@@ -11,7 +11,7 @@
7833 8026
7834 #define DOUBLEFAULT_STACKSIZE (1024) 8027 #define DOUBLEFAULT_STACKSIZE (1024)
@@ -7860,9 +8053,9 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/doublefault_32.c linux-2.6.29.6/arch/x
7860 .fs = __KERNEL_PERCPU, 8053 .fs = __KERNEL_PERCPU,
7861 8054
7862 .__cr3 = __pa_nodebug(swapper_pg_dir), 8055 .__cr3 = __pa_nodebug(swapper_pg_dir),
7863diff -urNp linux-2.6.29.6/arch/x86/kernel/dumpstack_32.c linux-2.6.29.6/arch/x86/kernel/dumpstack_32.c 8056diff -urNp linux-2.6.30.4/arch/x86/kernel/dumpstack_32.c linux-2.6.30.4/arch/x86/kernel/dumpstack_32.c
7864--- linux-2.6.29.6/arch/x86/kernel/dumpstack_32.c 2009-07-02 19:41:20.000000000 -0400 8057--- linux-2.6.30.4/arch/x86/kernel/dumpstack_32.c 2009-07-24 17:47:51.000000000 -0400
7865+++ linux-2.6.29.6/arch/x86/kernel/dumpstack_32.c 2009-07-23 17:34:32.068803825 -0400 8058+++ linux-2.6.30.4/arch/x86/kernel/dumpstack_32.c 2009-07-30 09:48:09.943696998 -0400
7866@@ -107,11 +107,12 @@ void show_registers(struct pt_regs *regs 8059@@ -107,11 +107,12 @@ void show_registers(struct pt_regs *regs
7867 * When in-kernel, we also print out the stack and code at the 8060 * When in-kernel, we also print out the stack and code at the
7868 * time of the fault.. 8061 * time of the fault..
@@ -7907,10 +8100,10 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/dumpstack_32.c linux-2.6.29.6/arch/x86
7907 if (ip < PAGE_OFFSET) 8100 if (ip < PAGE_OFFSET)
7908 return 0; 8101 return 0;
7909 if (probe_kernel_address((unsigned short *)ip, ud2)) 8102 if (probe_kernel_address((unsigned short *)ip, ud2))
7910diff -urNp linux-2.6.29.6/arch/x86/kernel/dumpstack.c linux-2.6.29.6/arch/x86/kernel/dumpstack.c 8103diff -urNp linux-2.6.30.4/arch/x86/kernel/dumpstack.c linux-2.6.30.4/arch/x86/kernel/dumpstack.c
7911--- linux-2.6.29.6/arch/x86/kernel/dumpstack.c 2009-07-02 19:41:20.000000000 -0400 8104--- linux-2.6.30.4/arch/x86/kernel/dumpstack.c 2009-07-24 17:47:51.000000000 -0400
7912+++ linux-2.6.29.6/arch/x86/kernel/dumpstack.c 2009-07-23 17:34:32.068803825 -0400 8105+++ linux-2.6.30.4/arch/x86/kernel/dumpstack.c 2009-07-30 09:48:09.942991706 -0400
7913@@ -178,7 +178,7 @@ void dump_stack(void) 8106@@ -180,7 +180,7 @@ void dump_stack(void)
7914 #endif 8107 #endif
7915 8108
7916 printk("Pid: %d, comm: %.20s %s %s %.*s\n", 8109 printk("Pid: %d, comm: %.20s %s %s %.*s\n",
@@ -7919,7 +8112,16 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/dumpstack.c linux-2.6.29.6/arch/x86/ke
7919 init_utsname()->release, 8112 init_utsname()->release,
7920 (int)strcspn(init_utsname()->version, " "), 8113 (int)strcspn(init_utsname()->version, " "),
7921 init_utsname()->version); 8114 init_utsname()->version);
7922@@ -288,7 +288,7 @@ void die(const char *str, struct pt_regs 8115@@ -241,7 +241,7 @@ void __kprobes oops_end(unsigned long fl
8116 panic("Fatal exception in interrupt");
8117 if (panic_on_oops)
8118 panic("Fatal exception");
8119- do_exit(signr);
8120+ do_group_exit(signr);
8121 }
8122
8123 int __kprobes __die(const char *str, struct pt_regs *regs, long err)
8124@@ -295,7 +295,7 @@ void die(const char *str, struct pt_regs
7923 unsigned long flags = oops_begin(); 8125 unsigned long flags = oops_begin();
7924 int sig = SIGSEGV; 8126 int sig = SIGSEGV;
7925 8127
@@ -7928,10 +8130,10 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/dumpstack.c linux-2.6.29.6/arch/x86/ke
7928 report_bug(regs->ip, regs); 8130 report_bug(regs->ip, regs);
7929 8131
7930 if (__die(str, regs, err)) 8132 if (__die(str, regs, err))
7931diff -urNp linux-2.6.29.6/arch/x86/kernel/e820.c linux-2.6.29.6/arch/x86/kernel/e820.c 8133diff -urNp linux-2.6.30.4/arch/x86/kernel/e820.c linux-2.6.30.4/arch/x86/kernel/e820.c
7932--- linux-2.6.29.6/arch/x86/kernel/e820.c 2009-07-02 19:41:20.000000000 -0400 8134--- linux-2.6.30.4/arch/x86/kernel/e820.c 2009-07-24 17:47:51.000000000 -0400
7933+++ linux-2.6.29.6/arch/x86/kernel/e820.c 2009-07-23 17:34:32.068803825 -0400 8135+++ linux-2.6.30.4/arch/x86/kernel/e820.c 2009-07-30 09:48:09.943696998 -0400
7934@@ -698,7 +698,10 @@ struct early_res { 8136@@ -739,7 +739,10 @@ struct early_res {
7935 }; 8137 };
7936 static struct early_res early_res[MAX_EARLY_RES] __initdata = { 8138 static struct early_res early_res[MAX_EARLY_RES] __initdata = {
7937 { 0, PAGE_SIZE, "BIOS data page" }, /* BIOS data page */ 8139 { 0, PAGE_SIZE, "BIOS data page" }, /* BIOS data page */
@@ -7943,9 +8145,9 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/e820.c linux-2.6.29.6/arch/x86/kernel/
7943 }; 8145 };
7944 8146
7945 static int __init find_overlapped_early(u64 start, u64 end) 8147 static int __init find_overlapped_early(u64 start, u64 end)
7946diff -urNp linux-2.6.29.6/arch/x86/kernel/efi_32.c linux-2.6.29.6/arch/x86/kernel/efi_32.c 8148diff -urNp linux-2.6.30.4/arch/x86/kernel/efi_32.c linux-2.6.30.4/arch/x86/kernel/efi_32.c
7947--- linux-2.6.29.6/arch/x86/kernel/efi_32.c 2009-07-02 19:41:20.000000000 -0400 8149--- linux-2.6.30.4/arch/x86/kernel/efi_32.c 2009-07-24 17:47:51.000000000 -0400
7948+++ linux-2.6.29.6/arch/x86/kernel/efi_32.c 2009-07-23 17:34:32.068803825 -0400 8150+++ linux-2.6.30.4/arch/x86/kernel/efi_32.c 2009-07-30 09:48:09.943696998 -0400
7949@@ -38,70 +38,38 @@ 8151@@ -38,70 +38,38 @@
7950 */ 8152 */
7951 8153
@@ -8026,15 +8228,15 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/efi_32.c linux-2.6.29.6/arch/x86/kerne
8026 8228
8027 /* 8229 /*
8028 * After the lock is released, the original page table is restored. 8230 * After the lock is released, the original page table is restored.
8029diff -urNp linux-2.6.29.6/arch/x86/kernel/efi_stub_32.S linux-2.6.29.6/arch/x86/kernel/efi_stub_32.S 8231diff -urNp linux-2.6.30.4/arch/x86/kernel/efi_stub_32.S linux-2.6.30.4/arch/x86/kernel/efi_stub_32.S
8030--- linux-2.6.29.6/arch/x86/kernel/efi_stub_32.S 2009-07-02 19:41:20.000000000 -0400 8232--- linux-2.6.30.4/arch/x86/kernel/efi_stub_32.S 2009-07-24 17:47:51.000000000 -0400
8031+++ linux-2.6.29.6/arch/x86/kernel/efi_stub_32.S 2009-07-23 17:34:32.068803825 -0400 8233+++ linux-2.6.30.4/arch/x86/kernel/efi_stub_32.S 2009-07-30 09:48:09.944948217 -0400
8032@@ -6,6 +6,7 @@ 8234@@ -6,6 +6,7 @@
8033 */ 8235 */
8034 8236
8035 #include <linux/linkage.h> 8237 #include <linux/linkage.h>
8036+#include <linux/init.h> 8238+#include <linux/init.h>
8037 #include <asm/page.h> 8239 #include <asm/page_types.h>
8038 8240
8039 /* 8241 /*
8040@@ -20,7 +21,7 @@ 8242@@ -20,7 +21,7 @@
@@ -8085,7 +8287,7 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/efi_stub_32.S linux-2.6.29.6/arch/x86/
8085 /* 8287 /*
8086 * 6. After EFI runtime service returns, control will return to 8288 * 6. After EFI runtime service returns, control will return to
8087 * following instruction. We'd better readjust stack pointer first. 8289 * following instruction. We'd better readjust stack pointer first.
8088@@ -88,34 +80,27 @@ ENTRY(efi_call_phys) 8290@@ -88,35 +80,28 @@ ENTRY(efi_call_phys)
8089 movl %cr0, %edx 8291 movl %cr0, %edx
8090 orl $0x80000000, %edx 8292 orl $0x80000000, %edx
8091 movl %edx, %cr0 8293 movl %edx, %cr0
@@ -8119,6 +8321,7 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/efi_stub_32.S linux-2.6.29.6/arch/x86/
8119- pushl %ecx 8321- pushl %ecx
8120- ret 8322- ret
8121+ jmpl *(saved_return_addr) 8323+ jmpl *(saved_return_addr)
8324 ENDPROC(efi_call_phys)
8122 .previous 8325 .previous
8123 8326
8124-.data 8327-.data
@@ -8126,47 +8329,50 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/efi_stub_32.S linux-2.6.29.6/arch/x86/
8126 saved_return_addr: 8329 saved_return_addr:
8127 .long 0 8330 .long 0
8128 efi_rt_function_ptr: 8331 efi_rt_function_ptr:
8129diff -urNp linux-2.6.29.6/arch/x86/kernel/entry_32.S linux-2.6.29.6/arch/x86/kernel/entry_32.S 8332diff -urNp linux-2.6.30.4/arch/x86/kernel/entry_32.S linux-2.6.30.4/arch/x86/kernel/entry_32.S
8130--- linux-2.6.29.6/arch/x86/kernel/entry_32.S 2009-07-02 19:41:20.000000000 -0400 8333--- linux-2.6.30.4/arch/x86/kernel/entry_32.S 2009-07-24 17:47:51.000000000 -0400
8131+++ linux-2.6.29.6/arch/x86/kernel/entry_32.S 2009-07-23 17:34:32.069868390 -0400 8334+++ linux-2.6.30.4/arch/x86/kernel/entry_32.S 2009-07-30 09:48:09.945662533 -0400
8132@@ -101,7 +101,7 @@ 8335@@ -192,7 +192,7 @@
8133 #define resume_userspace_sig resume_userspace 8336
8134 #endif 8337 #endif /* CONFIG_X86_32_LAZY_GS */
8135 8338
8136-#define SAVE_ALL \ 8339-.macro SAVE_ALL
8137+#define __SAVE_ALL(_DS) \ 8340+.macro __SAVE_ALL _DS
8138 cld; \ 8341 cld
8139 pushl %fs; \ 8342 PUSH_GS
8140 CFI_ADJUST_CFA_OFFSET 4;\ 8343 pushl %fs
8141@@ -133,12 +133,26 @@ 8344@@ -225,7 +225,7 @@
8142 pushl %ebx; \ 8345 pushl %ebx
8143 CFI_ADJUST_CFA_OFFSET 4;\ 8346 CFI_ADJUST_CFA_OFFSET 4
8144 CFI_REL_OFFSET ebx, 0;\ 8347 CFI_REL_OFFSET ebx, 0
8145- movl $(__USER_DS), %edx; \ 8348- movl $(__USER_DS), %edx
8146+ movl $(_DS), %edx; \ 8349+ movl $\_DS, %edx
8147 movl %edx, %ds; \ 8350 movl %edx, %ds
8148 movl %edx, %es; \ 8351 movl %edx, %es
8149 movl $(__KERNEL_PERCPU), %edx; \ 8352 movl $(__KERNEL_PERCPU), %edx
8150 movl %edx, %fs 8353@@ -233,6 +233,21 @@
8151 8354 SET_KERNEL_GS %edx
8355 .endm
8356
8357+.macro SAVE_ALL
8152+#ifdef CONFIG_PAX_KERNEXEC 8358+#ifdef CONFIG_PAX_KERNEXEC
8153+#define SAVE_ALL \ 8359+ __SAVE_ALL __KERNEL_DS
8154+ __SAVE_ALL(__KERNEL_DS); \ 8360+ GET_CR0_INTO_EDX;
8155+ GET_CR0_INTO_EDX; \ 8361+ movl %edx, %esi;
8156+ movl %edx, %esi; \ 8362+ orl $X86_CR0_WP, %edx;
8157+ orl $X86_CR0_WP, %edx; \ 8363+ xorl %edx, %esi;
8158+ xorl %edx, %esi; \
8159+ SET_CR0_FROM_EDX 8364+ SET_CR0_FROM_EDX
8160+#elif defined(CONFIG_PAX_PAGEEXEC) || defined(CONFIG_PAX_SEGMEXEC) || defined(CONFIG_PAX_MEMORY_UDEREF) 8365+#elif defined(CONFIG_PAX_PAGEEXEC) || defined(CONFIG_PAX_SEGMEXEC) || defined(CONFIG_PAX_MEMORY_UDEREF)
8161+#define SAVE_ALL __SAVE_ALL(__KERNEL_DS) 8366+ __SAVE_ALL __KERNEL_DS
8162+#else 8367+#else
8163+#define SAVE_ALL __SAVE_ALL(__USER_DS) 8368+ __SAVE_ALL __USER_DS
8164+#endif 8369+#endif
8370+.endm
8165+ 8371+
8166 #define RESTORE_INT_REGS \ 8372 .macro RESTORE_INT_REGS
8167 popl %ebx; \ 8373 popl %ebx
8168 CFI_ADJUST_CFA_OFFSET -4;\ 8374 CFI_ADJUST_CFA_OFFSET -4
8169@@ -229,6 +243,11 @@ ENTRY(ret_from_fork) 8375@@ -330,6 +345,11 @@ ENTRY(ret_from_fork)
8170 CFI_ADJUST_CFA_OFFSET 4 8376 CFI_ADJUST_CFA_OFFSET 4
8171 popfl 8377 popfl
8172 CFI_ADJUST_CFA_OFFSET -4 8378 CFI_ADJUST_CFA_OFFSET -4
@@ -8178,7 +8384,7 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/entry_32.S linux-2.6.29.6/arch/x86/ker
8178 jmp syscall_exit 8384 jmp syscall_exit
8179 CFI_ENDPROC 8385 CFI_ENDPROC
8180 END(ret_from_fork) 8386 END(ret_from_fork)
8181@@ -252,7 +271,17 @@ check_userspace: 8387@@ -353,7 +373,17 @@ check_userspace:
8182 movb PT_CS(%esp), %al 8388 movb PT_CS(%esp), %al
8183 andl $(X86_EFLAGS_VM | SEGMENT_RPL_MASK), %eax 8389 andl $(X86_EFLAGS_VM | SEGMENT_RPL_MASK), %eax
8184 cmpl $USER_RPL, %eax 8390 cmpl $USER_RPL, %eax
@@ -8196,7 +8402,7 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/entry_32.S linux-2.6.29.6/arch/x86/ker
8196 8402
8197 ENTRY(resume_userspace) 8403 ENTRY(resume_userspace)
8198 LOCKDEP_SYS_EXIT 8404 LOCKDEP_SYS_EXIT
8199@@ -314,10 +343,9 @@ sysenter_past_esp: 8405@@ -415,10 +445,9 @@ sysenter_past_esp:
8200 /*CFI_REL_OFFSET cs, 0*/ 8406 /*CFI_REL_OFFSET cs, 0*/
8201 /* 8407 /*
8202 * Push current_thread_info()->sysenter_return to the stack. 8408 * Push current_thread_info()->sysenter_return to the stack.
@@ -8209,7 +8415,7 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/entry_32.S linux-2.6.29.6/arch/x86/ker
8209 CFI_ADJUST_CFA_OFFSET 4 8415 CFI_ADJUST_CFA_OFFSET 4
8210 CFI_REL_OFFSET eip, 0 8416 CFI_REL_OFFSET eip, 0
8211 8417
8212@@ -330,9 +358,19 @@ sysenter_past_esp: 8418@@ -431,9 +460,19 @@ sysenter_past_esp:
8213 * Load the potential sixth argument from user stack. 8419 * Load the potential sixth argument from user stack.
8214 * Careful about security. 8420 * Careful about security.
8215 */ 8421 */
@@ -8229,8 +8435,8 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/entry_32.S linux-2.6.29.6/arch/x86/ker
8229 movl %ebp,PT_EBP(%esp) 8435 movl %ebp,PT_EBP(%esp)
8230 .section __ex_table,"a" 8436 .section __ex_table,"a"
8231 .align 4 8437 .align 4
8232@@ -356,12 +394,23 @@ sysenter_do_call: 8438@@ -456,12 +495,23 @@ sysenter_do_call:
8233 testw $_TIF_ALLWORK_MASK, %cx 8439 testl $_TIF_ALLWORK_MASK, %ecx
8234 jne sysexit_audit 8440 jne sysexit_audit
8235 sysenter_exit: 8441 sysenter_exit:
8236+ 8442+
@@ -8250,10 +8456,10 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/entry_32.S linux-2.6.29.6/arch/x86/ker
8250 1: mov PT_FS(%esp), %fs 8456 1: mov PT_FS(%esp), %fs
8251+2: mov PT_DS(%esp), %ds 8457+2: mov PT_DS(%esp), %ds
8252+3: mov PT_ES(%esp), %es 8458+3: mov PT_ES(%esp), %es
8459 PTGS_TO_GS
8253 ENABLE_INTERRUPTS_SYSEXIT 8460 ENABLE_INTERRUPTS_SYSEXIT
8254 8461
8255 #ifdef CONFIG_AUDITSYSCALL 8462@@ -505,11 +555,17 @@ sysexit_audit:
8256@@ -404,11 +453,17 @@ sysexit_audit:
8257 8463
8258 CFI_ENDPROC 8464 CFI_ENDPROC
8259 .pushsection .fixup,"ax" 8465 .pushsection .fixup,"ax"
@@ -8271,10 +8477,10 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/entry_32.S linux-2.6.29.6/arch/x86/ker
8271+ .long 2b,5b 8477+ .long 2b,5b
8272+ .long 3b,6b 8478+ .long 3b,6b
8273 .popsection 8479 .popsection
8480 PTGS_TO_GS_EX
8274 ENDPROC(ia32_sysenter_target) 8481 ENDPROC(ia32_sysenter_target)
8275 8482@@ -539,6 +595,10 @@ syscall_exit:
8276@@ -438,6 +493,10 @@ syscall_exit: 8483 testl $_TIF_ALLWORK_MASK, %ecx # current->work
8277 testw $_TIF_ALLWORK_MASK, %cx # current->work
8278 jne syscall_exit_work 8484 jne syscall_exit_work
8279 8485
8280+#ifdef CONFIG_PAX_RANDKSTACK 8486+#ifdef CONFIG_PAX_RANDKSTACK
@@ -8284,7 +8490,7 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/entry_32.S linux-2.6.29.6/arch/x86/ker
8284 restore_all: 8490 restore_all:
8285 movl PT_EFLAGS(%esp), %eax # mix EFLAGS, SS and CS 8491 movl PT_EFLAGS(%esp), %eax # mix EFLAGS, SS and CS
8286 # Warning: PT_OLDSS(%esp) contains the wrong/random values if we 8492 # Warning: PT_OLDSS(%esp) contains the wrong/random values if we
8287@@ -531,25 +590,19 @@ work_resched: 8493@@ -631,25 +691,19 @@ work_resched:
8288 8494
8289 work_notifysig: # deal with pending signals and 8495 work_notifysig: # deal with pending signals and
8290 # notify-resume requests 8496 # notify-resume requests
@@ -8313,7 +8519,7 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/entry_32.S linux-2.6.29.6/arch/x86/ker
8313 #endif 8519 #endif
8314 xorl %edx, %edx 8520 xorl %edx, %edx
8315 call do_notify_resume 8521 call do_notify_resume
8316@@ -584,6 +637,10 @@ END(syscall_exit_work) 8522@@ -684,6 +738,10 @@ END(syscall_exit_work)
8317 8523
8318 RING0_INT_FRAME # can't unwind into user space anyway 8524 RING0_INT_FRAME # can't unwind into user space anyway
8319 syscall_fault: 8525 syscall_fault:
@@ -8324,22 +8530,11 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/entry_32.S linux-2.6.29.6/arch/x86/ker
8324 GET_THREAD_INFO(%ebp) 8530 GET_THREAD_INFO(%ebp)
8325 movl $-EFAULT,PT_EAX(%esp) 8531 movl $-EFAULT,PT_EAX(%esp)
8326 jmp resume_userspace 8532 jmp resume_userspace
8327@@ -595,17 +652,24 @@ syscall_badsys: 8533@@ -717,7 +775,13 @@ PTREGSCALL(vm86old)
8328 END(syscall_badsys)
8329 CFI_ENDPROC
8330 8534
8331-#define FIXUP_ESPFIX_STACK \ 8535 .macro FIXUP_ESPFIX_STACK
8332- /* since we are on a wrong stack, we cant make it a C code :( */ \ 8536 /* since we are on a wrong stack, we cant make it a C code :( */
8333- PER_CPU(gdt_page, %ebx); \ 8537- PER_CPU(gdt_page, %ebx)
8334- GET_DESC_BASE(GDT_ENTRY_ESPFIX_SS, %ebx, %eax, %ax, %al, %ah); \
8335- addl %esp, %eax; \
8336- pushl $__KERNEL_DS; \
8337- CFI_ADJUST_CFA_OFFSET 4; \
8338- pushl %eax; \
8339- CFI_ADJUST_CFA_OFFSET 4; \
8340- lss (%esp), %esp; \
8341+.macro FIXUP_ESPFIX_STACK
8342+ /* since we are on a wrong stack, we cant make it a C code :( */
8343+#ifdef CONFIG_SMP 8538+#ifdef CONFIG_SMP
8344+ movl PER_CPU_VAR(cpu_number), %ebx; 8539+ movl PER_CPU_VAR(cpu_number), %ebx;
8345+ shll $PAGE_SHIFT_asm, %ebx; 8540+ shll $PAGE_SHIFT_asm, %ebx;
@@ -8347,19 +8542,10 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/entry_32.S linux-2.6.29.6/arch/x86/ker
8347+#else 8542+#else
8348+ movl $cpu_gdt_table, %ebx; 8543+ movl $cpu_gdt_table, %ebx;
8349+#endif 8544+#endif
8350+ GET_DESC_BASE(GDT_ENTRY_ESPFIX_SS, %ebx, %eax, %ax, %al, %ah); 8545 GET_DESC_BASE(GDT_ENTRY_ESPFIX_SS, %ebx, %eax, %ax, %al, %ah)
8351+ addl %esp, %eax; 8546 addl %esp, %eax
8352+ pushl $__KERNEL_DS; 8547 pushl $__KERNEL_DS
8353+ CFI_ADJUST_CFA_OFFSET 4; 8548@@ -1176,7 +1240,6 @@ return_to_handler:
8354+ pushl %eax;
8355+ CFI_ADJUST_CFA_OFFSET 4;
8356+ lss (%esp), %esp;
8357 CFI_ADJUST_CFA_OFFSET -8;
8358+.endm
8359 #define UNWIND_ESPFIX_STACK \
8360 movl %ss, %eax; \
8361 /* see if on espfix stack */ \
8362@@ -1052,7 +1116,6 @@ return_to_handler:
8363 ret 8549 ret
8364 #endif 8550 #endif
8365 8551
@@ -8367,10 +8553,10 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/entry_32.S linux-2.6.29.6/arch/x86/ker
8367 #include "syscall_table_32.S" 8553 #include "syscall_table_32.S"
8368 8554
8369 syscall_table_size=(.-sys_call_table) 8555 syscall_table_size=(.-sys_call_table)
8370@@ -1106,12 +1169,21 @@ error_code: 8556@@ -1228,12 +1291,21 @@ error_code:
8371 popl %ecx 8557 movl %ecx, %fs
8372 CFI_ADJUST_CFA_OFFSET -4 8558 UNWIND_ESPFIX_STACK
8373 /*CFI_REGISTER es, ecx*/ 8559 GS_TO_REG %ecx
8374+ 8560+
8375+#ifdef CONFIG_PAX_KERNEXEC 8561+#ifdef CONFIG_PAX_KERNEXEC
8376+ GET_CR0_INTO_EDX 8562+ GET_CR0_INTO_EDX
@@ -8380,17 +8566,17 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/entry_32.S linux-2.6.29.6/arch/x86/ker
8380+ SET_CR0_FROM_EDX 8566+ SET_CR0_FROM_EDX
8381+#endif 8567+#endif
8382+ 8568+
8383 movl PT_FS(%esp), %edi # get the function address 8569 movl PT_GS(%esp), %edi # get the function address
8384 movl PT_ORIG_EAX(%esp), %edx # get the error code 8570 movl PT_ORIG_EAX(%esp), %edx # get the error code
8385 movl $-1, PT_ORIG_EAX(%esp) # no syscall to restart 8571 movl $-1, PT_ORIG_EAX(%esp) # no syscall to restart
8386 mov %ecx, PT_FS(%esp) 8572 REG_TO_PTGS %ecx
8387 /*CFI_REL_OFFSET fs, ES*/ 8573 SET_KERNEL_GS %ecx
8388- movl $(__USER_DS), %ecx 8574- movl $(__USER_DS), %ecx
8389+ movl $(__KERNEL_DS), %ecx 8575+ movl $(__KERNEL_DS), %ecx
8390 movl %ecx, %ds 8576 movl %ecx, %ds
8391 movl %ecx, %es 8577 movl %ecx, %es
8392 TRACE_IRQS_OFF 8578 TRACE_IRQS_OFF
8393@@ -1206,6 +1278,13 @@ nmi_stack_correct: 8579@@ -1329,6 +1401,13 @@ nmi_stack_correct:
8394 xorl %edx,%edx # zero error code 8580 xorl %edx,%edx # zero error code
8395 movl %esp,%eax # pt_regs pointer 8581 movl %esp,%eax # pt_regs pointer
8396 call do_nmi 8582 call do_nmi
@@ -8404,7 +8590,7 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/entry_32.S linux-2.6.29.6/arch/x86/ker
8404 jmp restore_nocheck_notrace 8590 jmp restore_nocheck_notrace
8405 CFI_ENDPROC 8591 CFI_ENDPROC
8406 8592
8407@@ -1246,6 +1325,13 @@ nmi_espfix_stack: 8593@@ -1369,6 +1448,13 @@ nmi_espfix_stack:
8408 FIXUP_ESPFIX_STACK # %eax == %esp 8594 FIXUP_ESPFIX_STACK # %eax == %esp
8409 xorl %edx,%edx # zero error code 8595 xorl %edx,%edx # zero error code
8410 call do_nmi 8596 call do_nmi
@@ -8418,28 +8604,23 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/entry_32.S linux-2.6.29.6/arch/x86/ker
8418 RESTORE_REGS 8604 RESTORE_REGS
8419 lss 12+4(%esp), %esp # back to espfix stack 8605 lss 12+4(%esp), %esp # back to espfix stack
8420 CFI_ADJUST_CFA_OFFSET -24 8606 CFI_ADJUST_CFA_OFFSET -24
8421diff -urNp linux-2.6.29.6/arch/x86/kernel/entry_64.S linux-2.6.29.6/arch/x86/kernel/entry_64.S 8607diff -urNp linux-2.6.30.4/arch/x86/kernel/entry_64.S linux-2.6.30.4/arch/x86/kernel/entry_64.S
8422--- linux-2.6.29.6/arch/x86/kernel/entry_64.S 2009-07-02 19:41:20.000000000 -0400 8608--- linux-2.6.30.4/arch/x86/kernel/entry_64.S 2009-07-24 17:47:51.000000000 -0400
8423+++ linux-2.6.29.6/arch/x86/kernel/entry_64.S 2009-07-23 17:34:32.069868390 -0400 8609+++ linux-2.6.30.4/arch/x86/kernel/entry_64.S 2009-07-30 09:48:09.945662533 -0400
8424@@ -1073,10 +1073,11 @@ ENTRY(\sym) 8610@@ -1073,7 +1073,8 @@ ENTRY(\sym)
8425 TRACE_IRQS_OFF 8611 TRACE_IRQS_OFF
8426 movq %rsp,%rdi /* pt_regs pointer */ 8612 movq %rsp,%rdi /* pt_regs pointer */
8427 xorl %esi,%esi /* no error code */ 8613 xorl %esi,%esi /* no error code */
8428- movq %gs:pda_data_offset, %rbp 8614- PER_CPU(init_tss, %rbp)
8429- subq $EXCEPTION_STKSZ, per_cpu__init_tss + TSS_ist + (\ist - 1) * 8(%rbp) 8615+ imul $TSS_size, PER_CPU_VAR(cpu_number), %ebp
8430+ imul $TSS_size, %gs:pda_cpunumber, %ebp
8431+ lea init_tss(%rbp), %rbp 8616+ lea init_tss(%rbp), %rbp
8432+ subq $EXCEPTION_STKSZ, TSS_ist + (\ist - 1) * 8(%rbp) 8617 subq $EXCEPTION_STKSZ, TSS_ist + (\ist - 1) * 8(%rbp)
8433 call \do_sym 8618 call \do_sym
8434- addq $EXCEPTION_STKSZ, per_cpu__init_tss + TSS_ist + (\ist - 1) * 8(%rbp) 8619 addq $EXCEPTION_STKSZ, TSS_ist + (\ist - 1) * 8(%rbp)
8435+ addq $EXCEPTION_STKSZ, TSS_ist + (\ist - 1) * 8(%rbp) 8620diff -urNp linux-2.6.30.4/arch/x86/kernel/ftrace.c linux-2.6.30.4/arch/x86/kernel/ftrace.c
8436 jmp paranoid_exit /* %ebx: no swapgs flag */ 8621--- linux-2.6.30.4/arch/x86/kernel/ftrace.c 2009-07-24 17:47:51.000000000 -0400
8437 CFI_ENDPROC 8622+++ linux-2.6.30.4/arch/x86/kernel/ftrace.c 2009-07-30 09:48:09.945662533 -0400
8438 END(\sym) 8623@@ -284,9 +284,9 @@ int ftrace_update_ftrace_func(ftrace_fun
8439diff -urNp linux-2.6.29.6/arch/x86/kernel/ftrace.c linux-2.6.29.6/arch/x86/kernel/ftrace.c
8440--- linux-2.6.29.6/arch/x86/kernel/ftrace.c 2009-07-02 19:41:20.000000000 -0400
8441+++ linux-2.6.29.6/arch/x86/kernel/ftrace.c 2009-07-23 17:34:32.070744144 -0400
8442@@ -250,9 +250,9 @@ int ftrace_update_ftrace_func(ftrace_fun
8443 unsigned char old[MCOUNT_INSN_SIZE], *new; 8624 unsigned char old[MCOUNT_INSN_SIZE], *new;
8444 int ret; 8625 int ret;
8445 8626
@@ -8451,9 +8632,9 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/ftrace.c linux-2.6.29.6/arch/x86/kerne
8451 8632
8452 return ret; 8633 return ret;
8453 } 8634 }
8454diff -urNp linux-2.6.29.6/arch/x86/kernel/head32.c linux-2.6.29.6/arch/x86/kernel/head32.c 8635diff -urNp linux-2.6.30.4/arch/x86/kernel/head32.c linux-2.6.30.4/arch/x86/kernel/head32.c
8455--- linux-2.6.29.6/arch/x86/kernel/head32.c 2009-07-02 19:41:20.000000000 -0400 8636--- linux-2.6.30.4/arch/x86/kernel/head32.c 2009-07-24 17:47:51.000000000 -0400
8456+++ linux-2.6.29.6/arch/x86/kernel/head32.c 2009-07-23 17:34:32.070744144 -0400 8637+++ linux-2.6.30.4/arch/x86/kernel/head32.c 2009-07-30 09:48:09.946846946 -0400
8457@@ -13,12 +13,13 @@ 8638@@ -13,12 +13,13 @@
8458 #include <asm/e820.h> 8639 #include <asm/e820.h>
8459 #include <asm/bios_ebda.h> 8640 #include <asm/bios_ebda.h>
@@ -8464,36 +8645,37 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/head32.c linux-2.6.29.6/arch/x86/kerne
8464 { 8645 {
8465 reserve_trampoline_memory(); 8646 reserve_trampoline_memory();
8466 8647
8467- reserve_early(__pa_symbol(&_text), __pa_symbol(&_end), "TEXT DATA BSS"); 8648- reserve_early(__pa_symbol(&_text), __pa_symbol(&__bss_stop), "TEXT DATA BSS");
8468+ reserve_early(LOAD_PHYSICAL_ADDR, __pa_symbol(&_end), "TEXT DATA BSS"); 8649+ reserve_early(LOAD_PHYSICAL_ADDR, __pa_symbol(&__bss_stop), "TEXT DATA BSS");
8469 8650
8470 #ifdef CONFIG_BLK_DEV_INITRD 8651 #ifdef CONFIG_BLK_DEV_INITRD
8471 /* Reserve INITRD */ 8652 /* Reserve INITRD */
8472diff -urNp linux-2.6.29.6/arch/x86/kernel/head_32.S linux-2.6.29.6/arch/x86/kernel/head_32.S 8653diff -urNp linux-2.6.30.4/arch/x86/kernel/head_32.S linux-2.6.30.4/arch/x86/kernel/head_32.S
8473--- linux-2.6.29.6/arch/x86/kernel/head_32.S 2009-07-02 19:41:20.000000000 -0400 8654--- linux-2.6.30.4/arch/x86/kernel/head_32.S 2009-07-24 17:47:51.000000000 -0400
8474+++ linux-2.6.29.6/arch/x86/kernel/head_32.S 2009-07-23 17:34:37.457730203 -0400 8655+++ linux-2.6.30.4/arch/x86/kernel/head_32.S 2009-07-30 19:56:23.400350396 -0400
8475@@ -19,6 +19,7 @@ 8656@@ -20,6 +20,7 @@
8476 #include <asm/asm-offsets.h>
8477 #include <asm/setup.h> 8657 #include <asm/setup.h>
8478 #include <asm/processor-flags.h> 8658 #include <asm/processor-flags.h>
8659 #include <asm/percpu.h>
8479+#include <asm/msr-index.h> 8660+#include <asm/msr-index.h>
8480 8661
8481 /* Physical address */ 8662 /* Physical address */
8482 #define pa(X) ((X) - __PAGE_OFFSET) 8663 #define pa(X) ((X) - __PAGE_OFFSET)
8483@@ -64,17 +65,22 @@ LOW_PAGES = 1<<(32-PAGE_SHIFT_asm) 8664@@ -53,11 +54,7 @@
8484 LOW_PAGES = LOW_PAGES + 0x1000000 8665 * and small than max_low_pfn, otherwise will waste some page table entries
8485 #endif 8666 */
8486 8667
8487-#if PTRS_PER_PMD > 1 8668-#if PTRS_PER_PMD > 1
8488-PAGE_TABLE_SIZE = (LOW_PAGES / PTRS_PER_PMD) + PTRS_PER_PGD 8669-#define PAGE_TABLE_SIZE(pages) (((pages) / PTRS_PER_PMD) + PTRS_PER_PGD)
8489-#else 8670-#else
8490-PAGE_TABLE_SIZE = (LOW_PAGES / PTRS_PER_PGD) 8671-#define PAGE_TABLE_SIZE(pages) ((pages) / PTRS_PER_PGD)
8491-#endif 8672-#endif
8492+PAGE_TABLE_SIZE = (LOW_PAGES / PTRS_PER_PTE) 8673+#define PAGE_TABLE_SIZE(pages) ((pages) / PTRS_PER_PTE)
8493 BOOTBITMAP_SIZE = LOW_PAGES / 8
8494 ALLOCATOR_SLOP = 4
8495 8674
8496 INIT_MAP_BEYOND_END = BOOTBITMAP_SIZE + (PAGE_TABLE_SIZE + ALLOCATOR_SLOP)*PAGE_SIZE_asm 8675 /* Enough space to fit pagetables for the low memory linear map */
8676 MAPPING_BEYOND_END = \
8677@@ -74,6 +71,15 @@ INIT_MAP_SIZE = PAGE_TABLE_SIZE(KERNEL_P
8678 RESERVE_BRK(pagetables, INIT_MAP_SIZE)
8497 8679
8498 /* 8680 /*
8499+ * Real beginning of normal "text" segment 8681+ * Real beginning of normal "text" segment
@@ -8508,7 +8690,7 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/head_32.S linux-2.6.29.6/arch/x86/kern
8508 * 32-bit kernel entrypoint; only used by the boot CPU. On entry, 8690 * 32-bit kernel entrypoint; only used by the boot CPU. On entry,
8509 * %esi points to the real-mode code as a 32-bit pointer. 8691 * %esi points to the real-mode code as a 32-bit pointer.
8510 * CS and DS must be 4 GB flat segments, but we don't depend on 8692 * CS and DS must be 4 GB flat segments, but we don't depend on
8511@@ -82,6 +88,12 @@ INIT_MAP_BEYOND_END = BOOTBITMAP_SIZE + 8693@@ -81,6 +87,12 @@ RESERVE_BRK(pagetables, INIT_MAP_SIZE)
8512 * can. 8694 * can.
8513 */ 8695 */
8514 .section .text.head,"ax",@progbits 8696 .section .text.head,"ax",@progbits
@@ -8521,18 +8703,18 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/head_32.S linux-2.6.29.6/arch/x86/kern
8521 ENTRY(startup_32) 8703 ENTRY(startup_32)
8522 /* test KEEP_SEGMENTS flag to see if the bootloader is asking 8704 /* test KEEP_SEGMENTS flag to see if the bootloader is asking
8523 us to not reload segments */ 8705 us to not reload segments */
8524@@ -99,6 +111,56 @@ ENTRY(startup_32) 8706@@ -98,6 +110,56 @@ ENTRY(startup_32)
8525 movl %eax,%gs 8707 movl %eax,%gs
8526 2: 8708 2:
8527 8709
8528+ movl $pa(cpu_gdt_table),%edi 8710+ movl $pa(cpu_gdt_table),%edi
8529+ movl $__per_cpu_start,%eax 8711+ movl $__per_cpu_load,%eax
8530+ movw %ax,__KERNEL_PERCPU + 2(%edi) 8712+ movw %ax,__KERNEL_PERCPU + 2(%edi)
8531+ rorl $16,%eax 8713+ rorl $16,%eax
8532+ movb %al,__KERNEL_PERCPU + 4(%edi) 8714+ movb %al,__KERNEL_PERCPU + 4(%edi)
8533+ movb %ah,__KERNEL_PERCPU + 7(%edi) 8715+ movb %ah,__KERNEL_PERCPU + 7(%edi)
8534+ movl $__per_cpu_end + PERCPU_MODULE_RESERVE - 1,%eax 8716+ movl $__per_cpu_end - 1,%eax
8535+ subl $__per_cpu_start,%eax 8717+ subl $__per_cpu_load,%eax
8536+ movw %ax,__KERNEL_PERCPU + 0(%edi) 8718+ movw %ax,__KERNEL_PERCPU + 0(%edi)
8537+ 8719+
8538+#ifdef CONFIG_PAX_MEMORY_UDEREF 8720+#ifdef CONFIG_PAX_MEMORY_UDEREF
@@ -8578,7 +8760,7 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/head_32.S linux-2.6.29.6/arch/x86/kern
8578 /* 8760 /*
8579 * Clear BSS first so that there are no surprises... 8761 * Clear BSS first so that there are no surprises...
8580 */ 8762 */
8581@@ -142,9 +204,7 @@ ENTRY(startup_32) 8763@@ -141,9 +203,7 @@ ENTRY(startup_32)
8582 cmpl $num_subarch_entries, %eax 8764 cmpl $num_subarch_entries, %eax
8583 jae bad_subarch 8765 jae bad_subarch
8584 8766
@@ -8589,7 +8771,7 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/head_32.S linux-2.6.29.6/arch/x86/kern
8589 8771
8590 bad_subarch: 8772 bad_subarch:
8591 WEAK(lguest_entry) 8773 WEAK(lguest_entry)
8592@@ -156,9 +216,9 @@ WEAK(xen_entry) 8774@@ -155,9 +215,9 @@ WEAK(xen_entry)
8593 __INITDATA 8775 __INITDATA
8594 8776
8595 subarch_entries: 8777 subarch_entries:
@@ -8602,35 +8784,41 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/head_32.S linux-2.6.29.6/arch/x86/kern
8602 num_subarch_entries = (. - subarch_entries) / 4 8784 num_subarch_entries = (. - subarch_entries) / 4
8603 .previous 8785 .previous
8604 #endif /* CONFIG_PARAVIRT */ 8786 #endif /* CONFIG_PARAVIRT */
8605@@ -220,8 +280,11 @@ default_entry: 8787@@ -218,8 +278,14 @@ default_entry:
8606 movl %eax, pa(max_pfn_mapped) 8788 movl %eax, pa(max_pfn_mapped)
8607 8789
8608 /* Do early initialization of the fixmap area */ 8790 /* Do early initialization of the fixmap area */
8609- movl $pa(swapper_pg_fixmap)+PDE_IDENT_ATTR,%eax 8791- movl $pa(swapper_pg_fixmap)+PDE_IDENT_ATTR,%eax
8610- movl %eax,pa(swapper_pg_pmd+0x1000*KPMDS-8) 8792- movl %eax,pa(swapper_pg_pmd+0x1000*KPMDS-8)
8611+#ifdef CONFIG_COMPAT_VDSO 8793+#ifdef CONFIG_COMPAT_VDSO
8612+ movl $pa(swapper_pg_fixmap)+PDE_IDENT_ATTR+_PAGE_USER,pa(swapper_pg_pmd+0x1000*KPMDS-8) 8794+ movl $pa(swapper_pg_fixmap0)+PDE_IDENT_ATTR+_PAGE_USER,pa(swapper_pg_pmd+0x1000*KPMDS-8)
8613+#else 8795+#else
8614+ movl $pa(swapper_pg_fixmap)+PDE_IDENT_ATTR,pa(swapper_pg_pmd+0x1000*KPMDS-8) 8796+ movl $pa(swapper_pg_fixmap0)+PDE_IDENT_ATTR,pa(swapper_pg_pmd+0x1000*KPMDS-8)
8615+#endif 8797+#endif
8798+ movl $pa(swapper_pg_fixmap1)+PDE_IDENT_ATTR,pa(swapper_pg_pmd+0x1000*KPMDS-16)
8799+ movl $pa(swapper_pg_fixmap2)+PDE_IDENT_ATTR,pa(swapper_pg_pmd+0x1000*KPMDS-24)
8800+ movl $pa(swapper_pg_fixmap3)+PDE_IDENT_ATTR,pa(swapper_pg_pmd+0x1000*KPMDS-32)
8616 #else /* Not PAE */ 8801 #else /* Not PAE */
8617 8802
8618 page_pde_offset = (__PAGE_OFFSET >> 20); 8803 page_pde_offset = (__PAGE_OFFSET >> 20);
8619@@ -253,8 +316,11 @@ page_pde_offset = (__PAGE_OFFSET >> 20); 8804@@ -249,8 +315,14 @@ page_pde_offset = (__PAGE_OFFSET >> 20);
8620 movl %eax, pa(max_pfn_mapped) 8805 movl %eax, pa(max_pfn_mapped)
8621 8806
8622 /* Do early initialization of the fixmap area */ 8807 /* Do early initialization of the fixmap area */
8623- movl $pa(swapper_pg_fixmap)+PDE_IDENT_ATTR,%eax 8808- movl $pa(swapper_pg_fixmap)+PDE_IDENT_ATTR,%eax
8624- movl %eax,pa(swapper_pg_dir+0xffc) 8809- movl %eax,pa(swapper_pg_dir+0xffc)
8625+#ifdef CONFIG_COMPAT_VDSO 8810+#ifdef CONFIG_COMPAT_VDSO
8626+ movl $pa(swapper_pg_fixmap)+PDE_IDENT_ATTR+_PAGE_USER,pa(swapper_pg_dir+0xffc) 8811+ movl $pa(swapper_pg_fixmap0)+PDE_IDENT_ATTR+_PAGE_USER,pa(swapper_pg_dir+0xffc)
8627+#else 8812+#else
8628+ movl $pa(swapper_pg_fixmap)+PDE_IDENT_ATTR,pa(swapper_pg_dir+0xffc) 8813+ movl $pa(swapper_pg_fixmap0)+PDE_IDENT_ATTR,pa(swapper_pg_dir+0xffc)
8629+#endif 8814+#endif
8815+ movl $pa(swapper_pg_fixmap1)+PDE_IDENT_ATTR,pa(swapper_pg_dir+0xff8)
8816+ movl $pa(swapper_pg_fixmap2)+PDE_IDENT_ATTR,pa(swapper_pg_dir+0xff4)
8817+ movl $pa(swapper_pg_fixmap3)+PDE_IDENT_ATTR,pa(swapper_pg_dir+0xff0)
8630 #endif 8818 #endif
8631 jmp 3f 8819 jmp 3f
8632 /* 8820 /*
8633@@ -318,13 +384,16 @@ ENTRY(startup_32_smp) 8821@@ -314,13 +386,16 @@ ENTRY(startup_32_smp)
8634 jnc 6f 8822 jnc 6f
8635 8823
8636 /* Setup EFER (Extended Feature Enable Register) */ 8824 /* Setup EFER (Extended Feature Enable Register) */
@@ -8648,7 +8836,7 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/head_32.S linux-2.6.29.6/arch/x86/kern
8648 6: 8836 6:
8649 8837
8650 /* 8838 /*
8651@@ -350,9 +419,7 @@ ENTRY(startup_32_smp) 8839@@ -346,9 +421,7 @@ ENTRY(startup_32_smp)
8652 8840
8653 #ifdef CONFIG_SMP 8841 #ifdef CONFIG_SMP
8654 cmpb $0, ready 8842 cmpb $0, ready
@@ -8659,42 +8847,44 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/head_32.S linux-2.6.29.6/arch/x86/kern
8659 #endif /* CONFIG_SMP */ 8847 #endif /* CONFIG_SMP */
8660 8848
8661 /* 8849 /*
8662@@ -429,12 +496,12 @@ is386: movl $2,%ecx # set MP 8850@@ -426,7 +499,7 @@ is386: movl $2,%ecx # set MP
8663 ljmp $(__KERNEL_CS),$1f
8664 1: movl $(__KERNEL_DS),%eax # reload all the segment registers 8851 1: movl $(__KERNEL_DS),%eax # reload all the segment registers
8665 movl %eax,%ss # after changing gdt. 8852 movl %eax,%ss # after changing gdt.
8666- movl %eax,%fs # gets reset once there's real percpu 8853
8667-
8668- movl $(__USER_DS),%eax # DS/ES contains default USER segment 8854- movl $(__USER_DS),%eax # DS/ES contains default USER segment
8855+ movl $(__KERNEL_DS),%eax # DS/ES contains default KERNEL segment
8669 movl %eax,%ds 8856 movl %eax,%ds
8670 movl %eax,%es 8857 movl %eax,%es
8671 8858
8672+ movl $(__KERNEL_PERCPU), %eax 8859@@ -440,8 +513,9 @@ is386: movl $2,%ecx # set MP
8673+ movl %eax,%fs # set this cpu's percpu 8860 */
8674+ 8861 cmpb $0,ready
8675 xorl %eax,%eax # Clear GS and LDT 8862 jne 1f
8676 movl %eax,%gs 8863- movl $per_cpu__gdt_page,%eax
8677 lldt %ax 8864+ movl $cpu_gdt_table,%eax
8678@@ -444,12 +511,6 @@ is386: movl $2,%ecx # set MP 8865 movl $per_cpu__stack_canary,%ecx
8866+ addl $__per_cpu_load,%ecx
8867 subl $20, %ecx
8868 movw %cx, 8 * GDT_ENTRY_STACK_CANARY + 2(%eax)
8869 shrl $16, %ecx
8870@@ -460,10 +534,6 @@ is386: movl $2,%ecx # set MP
8679 #ifdef CONFIG_SMP 8871 #ifdef CONFIG_SMP
8680 movb ready, %cl 8872 movb ready, %cl
8681 movb $1, ready 8873 movb $1, ready
8682- cmpb $0,%cl # the first CPU calls start_kernel 8874- cmpb $0,%cl # the first CPU calls start_kernel
8683- je 1f 8875- je 1f
8684- movl $(__KERNEL_PERCPU), %eax
8685- movl %eax,%fs # set this cpu's percpu
8686- movl (stack_start), %esp 8876- movl (stack_start), %esp
8687-1: 8877-1:
8688 #endif /* CONFIG_SMP */ 8878 #endif /* CONFIG_SMP */
8689 jmp *(initial_code) 8879 jmp *(initial_code)
8690 8880
8691@@ -535,15 +596,15 @@ early_page_fault: 8881@@ -549,22 +619,22 @@ early_page_fault:
8692 jmp early_fault 8882 jmp early_fault
8693 8883
8694 early_fault: 8884 early_fault:
8695- cld 8885- cld
8696 #ifdef CONFIG_PRINTK 8886 #ifdef CONFIG_PRINTK
8697+ cmpl $2,%ss:early_recursion_flag 8887+ cmpl $1,%ss:early_recursion_flag
8698+ je hlt_loop 8888+ je hlt_loop
8699+ incl %ss:early_recursion_flag 8889+ incl %ss:early_recursion_flag
8700+ cld 8890+ cld
@@ -8708,17 +8898,15 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/head_32.S linux-2.6.29.6/arch/x86/kern
8708 movl %cr2,%eax 8898 movl %cr2,%eax
8709 pushl %eax 8899 pushl %eax
8710 pushl %edx /* trapno */ 8900 pushl %edx /* trapno */
8711@@ -553,8 +614,8 @@ early_fault: 8901 pushl $fault_msg
8712 #else
8713 call printk 8902 call printk
8903+; call dump_stack
8714 #endif 8904 #endif
8715-#endif 8905- call dump_stack
8716 call dump_stack
8717+#endif
8718 hlt_loop: 8906 hlt_loop:
8719 hlt 8907 hlt
8720 jmp hlt_loop 8908 jmp hlt_loop
8721@@ -562,8 +623,11 @@ hlt_loop: 8909@@ -572,8 +642,11 @@ hlt_loop:
8722 /* This is the default interrupt "handler" :-) */ 8910 /* This is the default interrupt "handler" :-) */
8723 ALIGN 8911 ALIGN
8724 ignore_int: 8912 ignore_int:
@@ -8731,7 +8919,7 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/head_32.S linux-2.6.29.6/arch/x86/kern
8731 pushl %eax 8919 pushl %eax
8732 pushl %ecx 8920 pushl %ecx
8733 pushl %edx 8921 pushl %edx
8734@@ -572,9 +636,6 @@ ignore_int: 8922@@ -582,9 +655,6 @@ ignore_int:
8735 movl $(__KERNEL_DS),%eax 8923 movl $(__KERNEL_DS),%eax
8736 movl %eax,%ds 8924 movl %eax,%ds
8737 movl %eax,%es 8925 movl %eax,%es
@@ -8741,7 +8929,7 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/head_32.S linux-2.6.29.6/arch/x86/kern
8741 pushl 16(%esp) 8929 pushl 16(%esp)
8742 pushl 24(%esp) 8930 pushl 24(%esp)
8743 pushl 32(%esp) 8931 pushl 32(%esp)
8744@@ -599,36 +660,42 @@ ignore_int: 8932@@ -608,37 +678,49 @@ ignore_int:
8745 ENTRY(initial_code) 8933 ENTRY(initial_code)
8746 .long i386_start_kernel 8934 .long i386_start_kernel
8747 8935
@@ -8768,14 +8956,23 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/head_32.S linux-2.6.29.6/arch/x86/kern
8768 #endif 8956 #endif
8769-swapper_pg_fixmap: 8957-swapper_pg_fixmap:
8770+ 8958+
8771+ENTRY(swapper_pg_fixmap) 8959+ENTRY(swapper_pg_fixmap0)
8960+ .fill 1024,4,0
8961+
8962+ENTRY(swapper_pg_fixmap1)
8963+ .fill 1024,4,0
8964+
8965+ENTRY(swapper_pg_fixmap2)
8966+ .fill 1024,4,0
8967+
8968+ENTRY(swapper_pg_fixmap3)
8772 .fill 1024,4,0 8969 .fill 1024,4,0
8773+ 8970+
8774+.section .empty_zero_page,"a",@progbits 8971+.section .empty_zero_page,"a",@progbits
8775 ENTRY(empty_zero_page) 8972 ENTRY(empty_zero_page)
8776 .fill 4096,1,0 8973 .fill 4096,1,0
8777+ 8974
8778+/* 8975 /*
8779+ * The IDT has to be page-aligned to simplify the Pentium 8976+ * The IDT has to be page-aligned to simplify the Pentium
8780+ * F0 0F bug workaround.. We have a special link segment 8977+ * F0 0F bug workaround.. We have a special link segment
8781+ * for this. 8978+ * for this.
@@ -8784,11 +8981,9 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/head_32.S linux-2.6.29.6/arch/x86/kern
8784+ENTRY(idt_table) 8981+ENTRY(idt_table)
8785+ .fill 256,8,0 8982+ .fill 256,8,0
8786+ 8983+
8787 /* 8984+/*
8788 * This starts the data section. 8985 * This starts the data section.
8789 */ 8986 */
8790+.data
8791+
8792 #ifdef CONFIG_X86_PAE 8987 #ifdef CONFIG_X86_PAE
8793-.section ".data.page_aligned","wa" 8988-.section ".data.page_aligned","wa"
8794- /* Page-aligned for the benefit of paravirt? */ 8989- /* Page-aligned for the benefit of paravirt? */
@@ -8797,7 +8992,7 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/head_32.S linux-2.6.29.6/arch/x86/kern
8797 ENTRY(swapper_pg_dir) 8992 ENTRY(swapper_pg_dir)
8798 .long pa(swapper_pg_pmd+PGD_IDENT_ATTR),0 /* low identity map */ 8993 .long pa(swapper_pg_pmd+PGD_IDENT_ATTR),0 /* low identity map */
8799 # if KPMDS == 3 8994 # if KPMDS == 3
8800@@ -651,11 +718,12 @@ ENTRY(swapper_pg_dir) 8995@@ -661,11 +743,12 @@ ENTRY(swapper_pg_dir)
8801 8996
8802 .data 8997 .data
8803 ENTRY(stack_start) 8998 ENTRY(stack_start)
@@ -8811,7 +9006,7 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/head_32.S linux-2.6.29.6/arch/x86/kern
8811 early_recursion_flag: 9006 early_recursion_flag:
8812 .long 0 9007 .long 0
8813 9008
8814@@ -691,7 +759,7 @@ fault_msg: 9009@@ -701,7 +784,7 @@ fault_msg:
8815 .word 0 # 32 bit align gdt_desc.address 9010 .word 0 # 32 bit align gdt_desc.address
8816 boot_gdt_descr: 9011 boot_gdt_descr:
8817 .word __BOOT_DS+7 9012 .word __BOOT_DS+7
@@ -8820,7 +9015,7 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/head_32.S linux-2.6.29.6/arch/x86/kern
8820 9015
8821 .word 0 # 32-bit align idt_desc.address 9016 .word 0 # 32-bit align idt_desc.address
8822 idt_descr: 9017 idt_descr:
8823@@ -702,7 +770,7 @@ idt_descr: 9018@@ -712,7 +795,7 @@ idt_descr:
8824 .word 0 # 32 bit align gdt_desc.address 9019 .word 0 # 32 bit align gdt_desc.address
8825 ENTRY(early_gdt_descr) 9020 ENTRY(early_gdt_descr)
8826 .word GDT_ENTRIES*8-1 9021 .word GDT_ENTRIES*8-1
@@ -8829,7 +9024,7 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/head_32.S linux-2.6.29.6/arch/x86/kern
8829 9024
8830 /* 9025 /*
8831 * The boot_gdt must mirror the equivalent in setup.S and is 9026 * The boot_gdt must mirror the equivalent in setup.S and is
8832@@ -711,5 +779,59 @@ ENTRY(early_gdt_descr) 9027@@ -721,5 +804,59 @@ ENTRY(early_gdt_descr)
8833 .align L1_CACHE_BYTES 9028 .align L1_CACHE_BYTES
8834 ENTRY(boot_gdt) 9029 ENTRY(boot_gdt)
8835 .fill GDT_ENTRY_BOOT_CS,8,0 9030 .fill GDT_ENTRY_BOOT_CS,8,0
@@ -8883,39 +9078,18 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/head_32.S linux-2.6.29.6/arch/x86/kern
8883+ 9078+
8884+ .quad 0x00c0930000000000 /* 0xd0 - ESPFIX SS */ 9079+ .quad 0x00c0930000000000 /* 0xd0 - ESPFIX SS */
8885+ .quad 0x0040930000000000 /* 0xd8 - PERCPU */ 9080+ .quad 0x0040930000000000 /* 0xd8 - PERCPU */
8886+ .quad 0x0000000000000000 /* 0xe0 - PCIBIOS_CS */ 9081+ .quad 0x0040930000000018 /* 0xe0 - STACK_CANARY */
8887+ .quad 0x0000000000000000 /* 0xe8 - PCIBIOS_DS */ 9082+ .quad 0x0000000000000000 /* 0xe8 - PCIBIOS_CS */
8888+ .quad 0x0000000000000000 /* 0xf0 - unused */ 9083+ .quad 0x0000000000000000 /* 0xf0 - PCIBIOS_DS */
8889+ .quad 0x0000000000000000 /* 0xf8 - GDT entry 31: double-fault TSS */ 9084+ .quad 0x0000000000000000 /* 0xf8 - GDT entry 31: double-fault TSS */
8890+ 9085+
8891+ /* Be sure this is zeroed to avoid false validations in Xen */ 9086+ /* Be sure this is zeroed to avoid false validations in Xen */
8892+ .fill PAGE_SIZE_asm - GDT_SIZE,1,0 9087+ .fill PAGE_SIZE_asm - GDT_SIZE,1,0
8893+ .endr 9088+ .endr
8894diff -urNp linux-2.6.29.6/arch/x86/kernel/head64.c linux-2.6.29.6/arch/x86/kernel/head64.c 9089diff -urNp linux-2.6.30.4/arch/x86/kernel/head_64.S linux-2.6.30.4/arch/x86/kernel/head_64.S
8895--- linux-2.6.29.6/arch/x86/kernel/head64.c 2009-07-02 19:41:20.000000000 -0400 9090--- linux-2.6.30.4/arch/x86/kernel/head_64.S 2009-07-24 17:47:51.000000000 -0400
8896+++ linux-2.6.29.6/arch/x86/kernel/head64.c 2009-07-23 17:34:32.070744144 -0400 9091+++ linux-2.6.30.4/arch/x86/kernel/head_64.S 2009-08-01 08:46:06.399105315 -0400
8897@@ -94,6 +94,8 @@ void __init x86_64_start_kernel(char * r 9092@@ -39,6 +39,10 @@ L4_PAGE_OFFSET = pgd_index(__PAGE_OFFSET
8898 /* clear bss before set_intr_gate with early_idt_handler */
8899 clear_bss();
8900
8901+ x86_64_init_pda();
8902+
8903 /* Make NULL pointers segfault */
8904 zap_identity_mappings();
8905
8906@@ -112,8 +114,6 @@ void __init x86_64_start_kernel(char * r
8907 if (console_loglevel == 10)
8908 early_printk("Kernel alive\n");
8909
8910- x86_64_init_pda();
8911-
8912 x86_64_start_reservations(real_mode_data);
8913 }
8914
8915diff -urNp linux-2.6.29.6/arch/x86/kernel/head_64.S linux-2.6.29.6/arch/x86/kernel/head_64.S
8916--- linux-2.6.29.6/arch/x86/kernel/head_64.S 2009-07-02 19:41:20.000000000 -0400
8917+++ linux-2.6.29.6/arch/x86/kernel/head_64.S 2009-07-23 17:34:32.071712262 -0400
8918@@ -38,6 +38,10 @@ L4_PAGE_OFFSET = pgd_index(__PAGE_OFFSET
8919 L3_PAGE_OFFSET = pud_index(__PAGE_OFFSET) 9093 L3_PAGE_OFFSET = pud_index(__PAGE_OFFSET)
8920 L4_START_KERNEL = pgd_index(__START_KERNEL_map) 9094 L4_START_KERNEL = pgd_index(__START_KERNEL_map)
8921 L3_START_KERNEL = pud_index(__START_KERNEL_map) 9095 L3_START_KERNEL = pud_index(__START_KERNEL_map)
@@ -8926,7 +9100,7 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/head_64.S linux-2.6.29.6/arch/x86/kern
8926 9100
8927 .text 9101 .text
8928 .section .text.head 9102 .section .text.head
8929@@ -85,35 +89,22 @@ startup_64: 9103@@ -86,35 +90,22 @@ startup_64:
8930 */ 9104 */
8931 addq %rbp, init_level4_pgt + 0(%rip) 9105 addq %rbp, init_level4_pgt + 0(%rip)
8932 addq %rbp, init_level4_pgt + (L4_PAGE_OFFSET*8)(%rip) 9106 addq %rbp, init_level4_pgt + (L4_PAGE_OFFSET*8)(%rip)
@@ -8972,7 +9146,7 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/head_64.S linux-2.6.29.6/arch/x86/kern
8972 9146
8973 /* 9147 /*
8974 * Fixup the kernel text+data virtual addresses. Note that 9148 * Fixup the kernel text+data virtual addresses. Note that
8975@@ -187,6 +178,10 @@ ENTRY(secondary_startup_64) 9149@@ -188,6 +179,10 @@ ENTRY(secondary_startup_64)
8976 btl $20,%edi /* No Execute supported? */ 9150 btl $20,%edi /* No Execute supported? */
8977 jnc 1f 9151 jnc 1f
8978 btsl $_EFER_NX, %eax 9152 btsl $_EFER_NX, %eax
@@ -8983,10 +9157,10 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/head_64.S linux-2.6.29.6/arch/x86/kern
8983 1: wrmsr /* Make changes effective */ 9157 1: wrmsr /* Make changes effective */
8984 9158
8985 /* Setup cr0 */ 9159 /* Setup cr0 */
8986@@ -257,16 +252,16 @@ ENTRY(secondary_startup_64) 9160@@ -263,16 +258,16 @@ ENTRY(secondary_startup_64)
8987 .align 8
8988 ENTRY(initial_code)
8989 .quad x86_64_start_kernel 9161 .quad x86_64_start_kernel
9162 ENTRY(initial_gs)
9163 .quad INIT_PER_CPU_VAR(irq_stack_union)
8990- __FINITDATA 9164- __FINITDATA
8991 9165
8992 ENTRY(stack_start) 9166 ENTRY(stack_start)
@@ -9002,7 +9176,7 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/head_64.S linux-2.6.29.6/arch/x86/kern
9002 #ifdef CONFIG_EARLY_PRINTK 9176 #ifdef CONFIG_EARLY_PRINTK
9003 .globl early_idt_handlers 9177 .globl early_idt_handlers
9004 early_idt_handlers: 9178 early_idt_handlers:
9005@@ -311,18 +306,23 @@ ENTRY(early_idt_handler) 9179@@ -317,18 +312,23 @@ ENTRY(early_idt_handler)
9006 #endif /* EARLY_PRINTK */ 9180 #endif /* EARLY_PRINTK */
9007 1: hlt 9181 1: hlt
9008 jmp 1b 9182 jmp 1b
@@ -9024,10 +9198,10 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/head_64.S linux-2.6.29.6/arch/x86/kern
9024+#endif /* CONFIG_EARLY_PRINTK */ 9198+#endif /* CONFIG_EARLY_PRINTK */
9025 9199
9026+ .section .rodata,"a",@progbits 9200+ .section .rodata,"a",@progbits
9027 .balign PAGE_SIZE
9028
9029 #define NEXT_PAGE(name) \ 9201 #define NEXT_PAGE(name) \
9030@@ -347,13 +347,27 @@ NEXT_PAGE(init_level4_pgt) 9202 .balign PAGE_SIZE; \
9203 ENTRY(name)
9204@@ -351,13 +351,27 @@ NEXT_PAGE(init_level4_pgt)
9031 .quad level3_ident_pgt - __START_KERNEL_map + _KERNPG_TABLE 9205 .quad level3_ident_pgt - __START_KERNEL_map + _KERNPG_TABLE
9032 .org init_level4_pgt + L4_PAGE_OFFSET*8, 0 9206 .org init_level4_pgt + L4_PAGE_OFFSET*8, 0
9033 .quad level3_ident_pgt - __START_KERNEL_map + _KERNPG_TABLE 9207 .quad level3_ident_pgt - __START_KERNEL_map + _KERNPG_TABLE
@@ -9056,7 +9230,7 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/head_64.S linux-2.6.29.6/arch/x86/kern
9056 9230
9057 NEXT_PAGE(level3_kernel_pgt) 9231 NEXT_PAGE(level3_kernel_pgt)
9058 .fill L3_START_KERNEL,8,0 9232 .fill L3_START_KERNEL,8,0
9059@@ -361,20 +375,27 @@ NEXT_PAGE(level3_kernel_pgt) 9233@@ -365,20 +379,27 @@ NEXT_PAGE(level3_kernel_pgt)
9060 .quad level2_kernel_pgt - __START_KERNEL_map + _KERNPG_TABLE 9234 .quad level2_kernel_pgt - __START_KERNEL_map + _KERNPG_TABLE
9061 .quad level2_fixmap_pgt - __START_KERNEL_map + _PAGE_TABLE 9235 .quad level2_fixmap_pgt - __START_KERNEL_map + _PAGE_TABLE
9062 9236
@@ -9089,7 +9263,7 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/head_64.S linux-2.6.29.6/arch/x86/kern
9089 9263
9090 NEXT_PAGE(level2_kernel_pgt) 9264 NEXT_PAGE(level2_kernel_pgt)
9091 /* 9265 /*
9092@@ -387,32 +408,48 @@ NEXT_PAGE(level2_kernel_pgt) 9266@@ -391,33 +412,49 @@ NEXT_PAGE(level2_kernel_pgt)
9093 * If you want to increase this then increase MODULES_VADDR 9267 * If you want to increase this then increase MODULES_VADDR
9094 * too.) 9268 * too.)
9095 */ 9269 */
@@ -9129,7 +9303,8 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/head_64.S linux-2.6.29.6/arch/x86/kern
9129 .globl early_gdt_descr 9303 .globl early_gdt_descr
9130 early_gdt_descr: 9304 early_gdt_descr:
9131 .word GDT_ENTRIES*8-1 9305 .word GDT_ENTRIES*8-1
9132- .quad per_cpu__gdt_page 9306 early_gdt_descr_base:
9307- .quad INIT_PER_CPU_VAR(gdt_page)
9133+ .quad cpu_gdt_table 9308+ .quad cpu_gdt_table
9134 9309
9135 ENTRY(phys_base) 9310 ENTRY(phys_base)
@@ -9143,14 +9318,14 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/head_64.S linux-2.6.29.6/arch/x86/kern
9143+ .section .rodata,"a",@progbits 9318+ .section .rodata,"a",@progbits
9144 .align L1_CACHE_BYTES 9319 .align L1_CACHE_BYTES
9145 ENTRY(idt_table) 9320 ENTRY(idt_table)
9146- .skip 256 * 16 9321- .skip IDT_ENTRIES * 16
9147+ .fill 512,8,0 9322+ .fill 512,8,0
9148 9323
9149 .section .bss.page_aligned, "aw", @nobits 9324 .section .bss.page_aligned, "aw", @nobits
9150 .align PAGE_SIZE 9325 .align PAGE_SIZE
9151diff -urNp linux-2.6.29.6/arch/x86/kernel/i386_ksyms_32.c linux-2.6.29.6/arch/x86/kernel/i386_ksyms_32.c 9326diff -urNp linux-2.6.30.4/arch/x86/kernel/i386_ksyms_32.c linux-2.6.30.4/arch/x86/kernel/i386_ksyms_32.c
9152--- linux-2.6.29.6/arch/x86/kernel/i386_ksyms_32.c 2009-07-02 19:41:20.000000000 -0400 9327--- linux-2.6.30.4/arch/x86/kernel/i386_ksyms_32.c 2009-07-24 17:47:51.000000000 -0400
9153+++ linux-2.6.29.6/arch/x86/kernel/i386_ksyms_32.c 2009-07-23 17:34:32.071712262 -0400 9328+++ linux-2.6.30.4/arch/x86/kernel/i386_ksyms_32.c 2009-07-30 09:48:09.948476455 -0400
9154@@ -10,8 +10,12 @@ 9329@@ -10,8 +10,12 @@
9155 EXPORT_SYMBOL(mcount); 9330 EXPORT_SYMBOL(mcount);
9156 #endif 9331 #endif
@@ -9172,9 +9347,9 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/i386_ksyms_32.c linux-2.6.29.6/arch/x8
9172+#ifdef CONFIG_PAX_KERNEXEC 9347+#ifdef CONFIG_PAX_KERNEXEC
9173+EXPORT_SYMBOL(KERNEL_TEXT_OFFSET); 9348+EXPORT_SYMBOL(KERNEL_TEXT_OFFSET);
9174+#endif 9349+#endif
9175diff -urNp linux-2.6.29.6/arch/x86/kernel/init_task.c linux-2.6.29.6/arch/x86/kernel/init_task.c 9350diff -urNp linux-2.6.30.4/arch/x86/kernel/init_task.c linux-2.6.30.4/arch/x86/kernel/init_task.c
9176--- linux-2.6.29.6/arch/x86/kernel/init_task.c 2009-07-02 19:41:20.000000000 -0400 9351--- linux-2.6.30.4/arch/x86/kernel/init_task.c 2009-07-24 17:47:51.000000000 -0400
9177+++ linux-2.6.29.6/arch/x86/kernel/init_task.c 2009-07-23 17:34:32.071712262 -0400 9352+++ linux-2.6.30.4/arch/x86/kernel/init_task.c 2009-07-30 09:48:09.948476455 -0400
9178@@ -40,5 +40,5 @@ EXPORT_SYMBOL(init_task); 9353@@ -40,5 +40,5 @@ EXPORT_SYMBOL(init_task);
9179 * section. Since TSS's are completely CPU-local, we want them 9354 * section. Since TSS's are completely CPU-local, we want them
9180 * on exact cacheline boundaries, to eliminate cacheline ping-pong. 9355 * on exact cacheline boundaries, to eliminate cacheline ping-pong.
@@ -9183,9 +9358,9 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/init_task.c linux-2.6.29.6/arch/x86/ke
9183- 9358-
9184+struct tss_struct init_tss[NR_CPUS] ____cacheline_internodealigned_in_smp = { [0 ... NR_CPUS-1] = INIT_TSS }; 9359+struct tss_struct init_tss[NR_CPUS] ____cacheline_internodealigned_in_smp = { [0 ... NR_CPUS-1] = INIT_TSS };
9185+EXPORT_SYMBOL(init_tss); 9360+EXPORT_SYMBOL(init_tss);
9186diff -urNp linux-2.6.29.6/arch/x86/kernel/ioport.c linux-2.6.29.6/arch/x86/kernel/ioport.c 9361diff -urNp linux-2.6.30.4/arch/x86/kernel/ioport.c linux-2.6.30.4/arch/x86/kernel/ioport.c
9187--- linux-2.6.29.6/arch/x86/kernel/ioport.c 2009-07-02 19:41:20.000000000 -0400 9362--- linux-2.6.30.4/arch/x86/kernel/ioport.c 2009-07-24 17:47:51.000000000 -0400
9188+++ linux-2.6.29.6/arch/x86/kernel/ioport.c 2009-07-23 17:34:32.071712262 -0400 9363+++ linux-2.6.30.4/arch/x86/kernel/ioport.c 2009-07-30 11:10:48.918448854 -0400
9189@@ -6,6 +6,7 @@ 9364@@ -6,6 +6,7 @@
9190 #include <linux/sched.h> 9365 #include <linux/sched.h>
9191 #include <linux/kernel.h> 9366 #include <linux/kernel.h>
@@ -9216,7 +9391,7 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/ioport.c linux-2.6.29.6/arch/x86/kerne
9216 9391
9217 set_bitmap(t->io_bitmap_ptr, from, num, !turn_on); 9392 set_bitmap(t->io_bitmap_ptr, from, num, !turn_on);
9218 9393
9219@@ -122,8 +129,13 @@ static int do_iopl(unsigned int level, s 9394@@ -111,8 +118,13 @@ static int do_iopl(unsigned int level, s
9220 return -EINVAL; 9395 return -EINVAL;
9221 /* Trying to gain more privileges? */ 9396 /* Trying to gain more privileges? */
9222 if (level > old) { 9397 if (level > old) {
@@ -9230,10 +9405,10 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/ioport.c linux-2.6.29.6/arch/x86/kerne
9230 } 9405 }
9231 regs->flags = (regs->flags & ~X86_EFLAGS_IOPL) | (level << 12); 9406 regs->flags = (regs->flags & ~X86_EFLAGS_IOPL) | (level << 12);
9232 9407
9233diff -urNp linux-2.6.29.6/arch/x86/kernel/irq_32.c linux-2.6.29.6/arch/x86/kernel/irq_32.c 9408diff -urNp linux-2.6.30.4/arch/x86/kernel/irq_32.c linux-2.6.30.4/arch/x86/kernel/irq_32.c
9234--- linux-2.6.29.6/arch/x86/kernel/irq_32.c 2009-07-02 19:41:20.000000000 -0400 9409--- linux-2.6.30.4/arch/x86/kernel/irq_32.c 2009-07-24 17:47:51.000000000 -0400
9235+++ linux-2.6.29.6/arch/x86/kernel/irq_32.c 2009-07-23 17:34:32.071712262 -0400 9410+++ linux-2.6.30.4/arch/x86/kernel/irq_32.c 2009-07-30 09:48:09.948476455 -0400
9236@@ -93,7 +93,7 @@ execute_on_irq_stack(int overflow, struc 9411@@ -94,7 +94,7 @@ execute_on_irq_stack(int overflow, struc
9237 return 0; 9412 return 0;
9238 9413
9239 /* build the stack frame on the IRQ stack */ 9414 /* build the stack frame on the IRQ stack */
@@ -9242,7 +9417,7 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/irq_32.c linux-2.6.29.6/arch/x86/kerne
9242 irqctx->tinfo.task = curctx->tinfo.task; 9417 irqctx->tinfo.task = curctx->tinfo.task;
9243 irqctx->tinfo.previous_esp = current_stack_pointer; 9418 irqctx->tinfo.previous_esp = current_stack_pointer;
9244 9419
9245@@ -174,7 +174,7 @@ asmlinkage void do_softirq(void) 9420@@ -175,7 +175,7 @@ asmlinkage void do_softirq(void)
9246 irqctx->tinfo.previous_esp = current_stack_pointer; 9421 irqctx->tinfo.previous_esp = current_stack_pointer;
9247 9422
9248 /* build the stack frame on the softirq stack */ 9423 /* build the stack frame on the softirq stack */
@@ -9251,9 +9426,9 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/irq_32.c linux-2.6.29.6/arch/x86/kerne
9251 9426
9252 call_on_stack(__do_softirq, isp); 9427 call_on_stack(__do_softirq, isp);
9253 /* 9428 /*
9254diff -urNp linux-2.6.29.6/arch/x86/kernel/kprobes.c linux-2.6.29.6/arch/x86/kernel/kprobes.c 9429diff -urNp linux-2.6.30.4/arch/x86/kernel/kprobes.c linux-2.6.30.4/arch/x86/kernel/kprobes.c
9255--- linux-2.6.29.6/arch/x86/kernel/kprobes.c 2009-07-02 19:41:20.000000000 -0400 9430--- linux-2.6.30.4/arch/x86/kernel/kprobes.c 2009-07-24 17:47:51.000000000 -0400
9256+++ linux-2.6.29.6/arch/x86/kernel/kprobes.c 2009-07-23 17:34:32.072711199 -0400 9431+++ linux-2.6.30.4/arch/x86/kernel/kprobes.c 2009-07-30 09:48:09.948476455 -0400
9257@@ -166,9 +166,24 @@ static void __kprobes set_jmp_op(void *f 9432@@ -166,9 +166,24 @@ static void __kprobes set_jmp_op(void *f
9258 char op; 9433 char op;
9259 s32 raddr; 9434 s32 raddr;
@@ -9340,7 +9515,7 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/kprobes.c linux-2.6.29.6/arch/x86/kern
9340 /* 9515 /*
9341 * The breakpoint instruction was removed right 9516 * The breakpoint instruction was removed right
9342 * after we hit it. Another cpu has removed 9517 * after we hit it. Another cpu has removed
9343@@ -774,7 +802,7 @@ static void __kprobes resume_execution(s 9518@@ -775,7 +803,7 @@ static void __kprobes resume_execution(s
9344 struct pt_regs *regs, struct kprobe_ctlblk *kcb) 9519 struct pt_regs *regs, struct kprobe_ctlblk *kcb)
9345 { 9520 {
9346 unsigned long *tos = stack_addr(regs); 9521 unsigned long *tos = stack_addr(regs);
@@ -9349,7 +9524,7 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/kprobes.c linux-2.6.29.6/arch/x86/kern
9349 unsigned long orig_ip = (unsigned long)p->addr; 9524 unsigned long orig_ip = (unsigned long)p->addr;
9350 kprobe_opcode_t *insn = p->ainsn.insn; 9525 kprobe_opcode_t *insn = p->ainsn.insn;
9351 9526
9352@@ -957,7 +985,7 @@ int __kprobes kprobe_exceptions_notify(s 9527@@ -958,7 +986,7 @@ int __kprobes kprobe_exceptions_notify(s
9353 struct die_args *args = data; 9528 struct die_args *args = data;
9354 int ret = NOTIFY_DONE; 9529 int ret = NOTIFY_DONE;
9355 9530
@@ -9358,9 +9533,9 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/kprobes.c linux-2.6.29.6/arch/x86/kern
9358 return ret; 9533 return ret;
9359 9534
9360 switch (val) { 9535 switch (val) {
9361diff -urNp linux-2.6.29.6/arch/x86/kernel/ldt.c linux-2.6.29.6/arch/x86/kernel/ldt.c 9536diff -urNp linux-2.6.30.4/arch/x86/kernel/ldt.c linux-2.6.30.4/arch/x86/kernel/ldt.c
9362--- linux-2.6.29.6/arch/x86/kernel/ldt.c 2009-07-02 19:41:20.000000000 -0400 9537--- linux-2.6.30.4/arch/x86/kernel/ldt.c 2009-07-24 17:47:51.000000000 -0400
9363+++ linux-2.6.29.6/arch/x86/kernel/ldt.c 2009-07-23 17:34:32.072711199 -0400 9538+++ linux-2.6.30.4/arch/x86/kernel/ldt.c 2009-07-30 09:48:09.950015875 -0400
9364@@ -66,13 +66,13 @@ static int alloc_ldt(mm_context_t *pc, i 9539@@ -66,13 +66,13 @@ static int alloc_ldt(mm_context_t *pc, i
9365 if (reload) { 9540 if (reload) {
9366 #ifdef CONFIG_SMP 9541 #ifdef CONFIG_SMP
@@ -9425,9 +9600,9 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/ldt.c linux-2.6.29.6/arch/x86/kernel/l
9425 fill_ldt(&ldt, &ldt_info); 9600 fill_ldt(&ldt, &ldt_info);
9426 if (oldmode) 9601 if (oldmode)
9427 ldt.avl = 0; 9602 ldt.avl = 0;
9428diff -urNp linux-2.6.29.6/arch/x86/kernel/machine_kexec_32.c linux-2.6.29.6/arch/x86/kernel/machine_kexec_32.c 9603diff -urNp linux-2.6.30.4/arch/x86/kernel/machine_kexec_32.c linux-2.6.30.4/arch/x86/kernel/machine_kexec_32.c
9429--- linux-2.6.29.6/arch/x86/kernel/machine_kexec_32.c 2009-07-02 19:41:20.000000000 -0400 9604--- linux-2.6.30.4/arch/x86/kernel/machine_kexec_32.c 2009-07-24 17:47:51.000000000 -0400
9430+++ linux-2.6.29.6/arch/x86/kernel/machine_kexec_32.c 2009-07-23 17:34:32.072711199 -0400 9605+++ linux-2.6.30.4/arch/x86/kernel/machine_kexec_32.c 2009-07-30 09:48:09.950015875 -0400
9431@@ -26,7 +26,7 @@ 9606@@ -26,7 +26,7 @@
9432 #include <asm/system.h> 9607 #include <asm/system.h>
9433 #include <asm/cacheflush.h> 9608 #include <asm/cacheflush.h>
@@ -9446,7 +9621,7 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/machine_kexec_32.c linux-2.6.29.6/arch
9446 { 9621 {
9447 struct desc_ptr curgdt; 9622 struct desc_ptr curgdt;
9448 9623
9449@@ -216,7 +216,7 @@ void machine_kexec(struct kimage *image) 9624@@ -217,7 +217,7 @@ void machine_kexec(struct kimage *image)
9450 } 9625 }
9451 9626
9452 control_page = page_address(image->control_code_page); 9627 control_page = page_address(image->control_code_page);
@@ -9455,9 +9630,9 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/machine_kexec_32.c linux-2.6.29.6/arch
9455 9630
9456 relocate_kernel_ptr = control_page; 9631 relocate_kernel_ptr = control_page;
9457 page_list[PA_CONTROL_PAGE] = __pa(control_page); 9632 page_list[PA_CONTROL_PAGE] = __pa(control_page);
9458diff -urNp linux-2.6.29.6/arch/x86/kernel/module_32.c linux-2.6.29.6/arch/x86/kernel/module_32.c 9633diff -urNp linux-2.6.30.4/arch/x86/kernel/module_32.c linux-2.6.30.4/arch/x86/kernel/module_32.c
9459--- linux-2.6.29.6/arch/x86/kernel/module_32.c 2009-07-02 19:41:20.000000000 -0400 9634--- linux-2.6.30.4/arch/x86/kernel/module_32.c 2009-07-24 17:47:51.000000000 -0400
9460+++ linux-2.6.29.6/arch/x86/kernel/module_32.c 2009-07-23 17:34:32.072711199 -0400 9635+++ linux-2.6.30.4/arch/x86/kernel/module_32.c 2009-08-01 15:35:35.138919235 -0400
9461@@ -23,6 +23,9 @@ 9636@@ -23,6 +23,9 @@
9462 #include <linux/kernel.h> 9637 #include <linux/kernel.h>
9463 #include <linux/bug.h> 9638 #include <linux/bug.h>
@@ -9500,8 +9675,8 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/module_32.c linux-2.6.29.6/arch/x86/ke
9500 9675
9501 /* Free memory returned from module_alloc */ 9676 /* Free memory returned from module_alloc */
9502 void module_free(struct module *mod, void *module_region) 9677 void module_free(struct module *mod, void *module_region)
9503@@ -45,6 +70,45 @@ void module_free(struct module *mod, voi 9678@@ -45,6 +70,46 @@ void module_free(struct module *mod, voi
9504 table entries. */ 9679 table entries. */
9505 } 9680 }
9506 9681
9507+#ifdef CONFIG_PAX_KERNEXEC 9682+#ifdef CONFIG_PAX_KERNEXEC
@@ -9541,12 +9716,13 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/module_32.c linux-2.6.29.6/arch/x86/ke
9541+ WARN_ON(1); 9716+ WARN_ON(1);
9542+ } 9717+ }
9543+} 9718+}
9719+EXPORT_SYMBOL(module_free_exec);
9544+#endif 9720+#endif
9545+ 9721+
9546 /* We don't need anything special. */ 9722 /* We don't need anything special. */
9547 int module_frob_arch_sections(Elf_Ehdr *hdr, 9723 int module_frob_arch_sections(Elf_Ehdr *hdr,
9548 Elf_Shdr *sechdrs, 9724 Elf_Shdr *sechdrs,
9549@@ -63,14 +127,20 @@ int apply_relocate(Elf32_Shdr *sechdrs, 9725@@ -63,14 +128,20 @@ int apply_relocate(Elf32_Shdr *sechdrs,
9550 unsigned int i; 9726 unsigned int i;
9551 Elf32_Rel *rel = (void *)sechdrs[relsec].sh_addr; 9727 Elf32_Rel *rel = (void *)sechdrs[relsec].sh_addr;
9552 Elf32_Sym *sym; 9728 Elf32_Sym *sym;
@@ -9570,7 +9746,7 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/module_32.c linux-2.6.29.6/arch/x86/ke
9570 /* This is the symbol it is referring to. Note that all 9746 /* This is the symbol it is referring to. Note that all
9571 undefined symbols have been resolved. */ 9747 undefined symbols have been resolved. */
9572 sym = (Elf32_Sym *)sechdrs[symindex].sh_addr 9748 sym = (Elf32_Sym *)sechdrs[symindex].sh_addr
9573@@ -78,12 +148,32 @@ int apply_relocate(Elf32_Shdr *sechdrs, 9749@@ -78,12 +149,32 @@ int apply_relocate(Elf32_Shdr *sechdrs,
9574 9750
9575 switch (ELF32_R_TYPE(rel[i].r_info)) { 9751 switch (ELF32_R_TYPE(rel[i].r_info)) {
9576 case R_386_32: 9752 case R_386_32:
@@ -9605,11 +9781,11 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/module_32.c linux-2.6.29.6/arch/x86/ke
9605 break; 9781 break;
9606 default: 9782 default:
9607 printk(KERN_ERR "module %s: Unknown relocation: %u\n", 9783 printk(KERN_ERR "module %s: Unknown relocation: %u\n",
9608diff -urNp linux-2.6.29.6/arch/x86/kernel/module_64.c linux-2.6.29.6/arch/x86/kernel/module_64.c 9784diff -urNp linux-2.6.30.4/arch/x86/kernel/module_64.c linux-2.6.30.4/arch/x86/kernel/module_64.c
9609--- linux-2.6.29.6/arch/x86/kernel/module_64.c 2009-07-02 19:41:20.000000000 -0400 9785--- linux-2.6.30.4/arch/x86/kernel/module_64.c 2009-07-24 17:47:51.000000000 -0400
9610+++ linux-2.6.29.6/arch/x86/kernel/module_64.c 2009-07-23 17:34:32.072711199 -0400 9786+++ linux-2.6.30.4/arch/x86/kernel/module_64.c 2009-08-01 15:35:35.161871747 -0400
9611@@ -40,7 +40,7 @@ void module_free(struct module *mod, voi 9787@@ -40,7 +40,7 @@ void module_free(struct module *mod, voi
9612 table entries. */ 9788 table entries. */
9613 } 9789 }
9614 9790
9615-void *module_alloc(unsigned long size) 9791-void *module_alloc(unsigned long size)
@@ -9617,7 +9793,7 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/module_64.c linux-2.6.29.6/arch/x86/ke
9617 { 9793 {
9618 struct vm_struct *area; 9794 struct vm_struct *area;
9619 9795
9620@@ -54,8 +54,31 @@ void *module_alloc(unsigned long size) 9796@@ -54,8 +54,33 @@ void *module_alloc(unsigned long size)
9621 if (!area) 9797 if (!area)
9622 return NULL; 9798 return NULL;
9623 9799
@@ -9635,10 +9811,12 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/module_64.c linux-2.6.29.6/arch/x86/ke
9635+{ 9811+{
9636+ module_free(mod, module_region); 9812+ module_free(mod, module_region);
9637+} 9813+}
9814+EXPORT_SYMBOL(module_free_exec);
9638+ 9815+
9639+void *module_alloc_exec(unsigned long size) 9816+void *module_alloc_exec(unsigned long size)
9640+{ 9817+{
9641+ return __module_alloc(size, PAGE_KERNEL_RX); 9818+ return __module_alloc(size, PAGE_KERNEL_RX);
9819+EXPORT_SYMBOL(module_alloc_exec);
9642 } 9820 }
9643+#else 9821+#else
9644+void *module_alloc(unsigned long size) 9822+void *module_alloc(unsigned long size)
@@ -9650,20 +9828,18 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/module_64.c linux-2.6.29.6/arch/x86/ke
9650 #endif 9828 #endif
9651 9829
9652 /* We don't need anything special. */ 9830 /* We don't need anything special. */
9653@@ -77,7 +100,11 @@ int apply_relocate_add(Elf64_Shdr *sechd 9831@@ -79,6 +104,10 @@ int apply_relocate_add(Elf64_Shdr *sechd
9654 Elf64_Rela *rel = (void *)sechdrs[relsec].sh_addr;
9655 Elf64_Sym *sym;
9656 void *loc; 9832 void *loc;
9657- u64 val; 9833 u64 val;
9658+ u64 val; 9834
9659+
9660+#ifdef CONFIG_PAX_KERNEXEC 9835+#ifdef CONFIG_PAX_KERNEXEC
9661+ unsigned long cr0; 9836+ unsigned long cr0;
9662+#endif 9837+#endif
9663 9838+
9664 DEBUGP("Applying relocate section %u to %u\n", relsec, 9839 DEBUGP("Applying relocate section %u to %u\n", relsec,
9665 sechdrs[relsec].sh_info); 9840 sechdrs[relsec].sh_info);
9666@@ -101,21 +128,61 @@ int apply_relocate_add(Elf64_Shdr *sechd 9841 for (i = 0; i < sechdrs[relsec].sh_size / sizeof(*rel); i++) {
9842@@ -101,21 +130,61 @@ int apply_relocate_add(Elf64_Shdr *sechd
9667 case R_X86_64_NONE: 9843 case R_X86_64_NONE:
9668 break; 9844 break;
9669 case R_X86_64_64: 9845 case R_X86_64_64:
@@ -9709,7 +9885,7 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/module_64.c linux-2.6.29.6/arch/x86/ke
9709 if ((s64)val != *(s32 *)loc) 9885 if ((s64)val != *(s32 *)loc)
9710 goto overflow; 9886 goto overflow;
9711 break; 9887 break;
9712 case R_X86_64_PC32: 9888 case R_X86_64_PC32:
9713 val -= (u64)loc; 9889 val -= (u64)loc;
9714+ 9890+
9715+#ifdef CONFIG_PAX_KERNEXEC 9891+#ifdef CONFIG_PAX_KERNEXEC
@@ -9724,12 +9900,12 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/module_64.c linux-2.6.29.6/arch/x86/ke
9724+ 9900+
9725 #if 0 9901 #if 0
9726 if ((s64)val != *(s32 *)loc) 9902 if ((s64)val != *(s32 *)loc)
9727 goto overflow; 9903 goto overflow;
9728diff -urNp linux-2.6.29.6/arch/x86/kernel/paravirt.c linux-2.6.29.6/arch/x86/kernel/paravirt.c 9904diff -urNp linux-2.6.30.4/arch/x86/kernel/paravirt.c linux-2.6.30.4/arch/x86/kernel/paravirt.c
9729--- linux-2.6.29.6/arch/x86/kernel/paravirt.c 2009-07-02 19:41:20.000000000 -0400 9905--- linux-2.6.30.4/arch/x86/kernel/paravirt.c 2009-07-24 17:47:51.000000000 -0400
9730+++ linux-2.6.29.6/arch/x86/kernel/paravirt.c 2009-07-23 17:34:32.073727851 -0400 9906+++ linux-2.6.30.4/arch/x86/kernel/paravirt.c 2009-07-30 09:48:09.950702241 -0400
9731@@ -44,7 +44,7 @@ void _paravirt_nop(void) 9907@@ -54,7 +54,7 @@ u64 _paravirt_ident_64(u64 x)
9732 { 9908 return x;
9733 } 9909 }
9734 9910
9735-static void __init default_banner(void) 9911-static void __init default_banner(void)
@@ -9737,7 +9913,7 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/paravirt.c linux-2.6.29.6/arch/x86/ker
9737 { 9913 {
9738 printk(KERN_INFO "Booting paravirtualized kernel on %s\n", 9914 printk(KERN_INFO "Booting paravirtualized kernel on %s\n",
9739 pv_info.name); 9915 pv_info.name);
9740@@ -164,7 +164,7 @@ unsigned paravirt_patch_insns(void *insn 9916@@ -183,7 +183,7 @@ unsigned paravirt_patch_insns(void *insn
9741 if (insn_len > len || start == NULL) 9917 if (insn_len > len || start == NULL)
9742 insn_len = len; 9918 insn_len = len;
9743 else 9919 else
@@ -9746,7 +9922,7 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/paravirt.c linux-2.6.29.6/arch/x86/ker
9746 9922
9747 return insn_len; 9923 return insn_len;
9748 } 9924 }
9749@@ -294,21 +294,21 @@ void arch_flush_lazy_cpu_mode(void) 9925@@ -313,21 +313,21 @@ void arch_flush_lazy_cpu_mode(void)
9750 preempt_enable(); 9926 preempt_enable();
9751 } 9927 }
9752 9928
@@ -9771,16 +9947,16 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/paravirt.c linux-2.6.29.6/arch/x86/ker
9771 .time_init = hpet_time_init, 9947 .time_init = hpet_time_init,
9772 .get_wallclock = native_get_wallclock, 9948 .get_wallclock = native_get_wallclock,
9773 .set_wallclock = native_set_wallclock, 9949 .set_wallclock = native_set_wallclock,
9774@@ -316,7 +316,7 @@ struct pv_time_ops pv_time_ops = { 9950@@ -335,7 +335,7 @@ struct pv_time_ops pv_time_ops = {
9775 .get_tsc_khz = native_calibrate_tsc, 9951 .get_tsc_khz = native_calibrate_tsc,
9776 }; 9952 };
9777 9953
9778-struct pv_irq_ops pv_irq_ops = { 9954-struct pv_irq_ops pv_irq_ops = {
9779+struct pv_irq_ops pv_irq_ops __read_only = { 9955+struct pv_irq_ops pv_irq_ops __read_only = {
9780 .init_IRQ = native_init_IRQ, 9956 .init_IRQ = native_init_IRQ,
9781 .save_fl = native_save_fl, 9957 .save_fl = __PV_IS_CALLEE_SAVE(native_save_fl),
9782 .restore_fl = native_restore_fl, 9958 .restore_fl = __PV_IS_CALLEE_SAVE(native_restore_fl),
9783@@ -329,7 +329,7 @@ struct pv_irq_ops pv_irq_ops = { 9959@@ -348,7 +348,7 @@ struct pv_irq_ops pv_irq_ops = {
9784 #endif 9960 #endif
9785 }; 9961 };
9786 9962
@@ -9789,7 +9965,7 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/paravirt.c linux-2.6.29.6/arch/x86/ker
9789 .cpuid = native_cpuid, 9965 .cpuid = native_cpuid,
9790 .get_debugreg = native_get_debugreg, 9966 .get_debugreg = native_get_debugreg,
9791 .set_debugreg = native_set_debugreg, 9967 .set_debugreg = native_set_debugreg,
9792@@ -391,7 +391,7 @@ struct pv_cpu_ops pv_cpu_ops = { 9968@@ -410,7 +410,7 @@ struct pv_cpu_ops pv_cpu_ops = {
9793 }, 9969 },
9794 }; 9970 };
9795 9971
@@ -9798,18 +9974,18 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/paravirt.c linux-2.6.29.6/arch/x86/ker
9798 #ifdef CONFIG_X86_LOCAL_APIC 9974 #ifdef CONFIG_X86_LOCAL_APIC
9799 .setup_boot_clock = setup_boot_APIC_clock, 9975 .setup_boot_clock = setup_boot_APIC_clock,
9800 .setup_secondary_clock = setup_secondary_APIC_clock, 9976 .setup_secondary_clock = setup_secondary_APIC_clock,
9801@@ -399,7 +399,7 @@ struct pv_apic_ops pv_apic_ops = { 9977@@ -426,7 +426,7 @@ struct pv_apic_ops pv_apic_ops = {
9978 #define PTE_IDENT __PV_IS_CALLEE_SAVE(_paravirt_ident_64)
9802 #endif 9979 #endif
9803 };
9804 9980
9805-struct pv_mmu_ops pv_mmu_ops = { 9981-struct pv_mmu_ops pv_mmu_ops = {
9806+struct pv_mmu_ops pv_mmu_ops __read_only = { 9982+struct pv_mmu_ops pv_mmu_ops __read_only = {
9807 #ifndef CONFIG_X86_64 9983 #ifndef CONFIG_X86_64
9808 .pagetable_setup_start = native_pagetable_setup_start, 9984 .pagetable_setup_start = native_pagetable_setup_start,
9809 .pagetable_setup_done = native_pagetable_setup_done, 9985 .pagetable_setup_done = native_pagetable_setup_done,
9810diff -urNp linux-2.6.29.6/arch/x86/kernel/paravirt-spinlocks.c linux-2.6.29.6/arch/x86/kernel/paravirt-spinlocks.c 9986diff -urNp linux-2.6.30.4/arch/x86/kernel/paravirt-spinlocks.c linux-2.6.30.4/arch/x86/kernel/paravirt-spinlocks.c
9811--- linux-2.6.29.6/arch/x86/kernel/paravirt-spinlocks.c 2009-07-02 19:41:20.000000000 -0400 9987--- linux-2.6.30.4/arch/x86/kernel/paravirt-spinlocks.c 2009-07-24 17:47:51.000000000 -0400
9812+++ linux-2.6.29.6/arch/x86/kernel/paravirt-spinlocks.c 2009-07-23 17:34:32.073727851 -0400 9988+++ linux-2.6.30.4/arch/x86/kernel/paravirt-spinlocks.c 2009-07-30 09:48:09.950702241 -0400
9813@@ -13,7 +13,7 @@ default_spin_lock_flags(raw_spinlock_t * 9989@@ -13,7 +13,7 @@ default_spin_lock_flags(raw_spinlock_t *
9814 __raw_spin_lock(lock); 9990 __raw_spin_lock(lock);
9815 } 9991 }
@@ -9819,21 +9995,10 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/paravirt-spinlocks.c linux-2.6.29.6/ar
9819 #ifdef CONFIG_SMP 9995 #ifdef CONFIG_SMP
9820 .spin_is_locked = __ticket_spin_is_locked, 9996 .spin_is_locked = __ticket_spin_is_locked,
9821 .spin_is_contended = __ticket_spin_is_contended, 9997 .spin_is_contended = __ticket_spin_is_contended,
9822diff -urNp linux-2.6.29.6/arch/x86/kernel/process_32.c linux-2.6.29.6/arch/x86/kernel/process_32.c 9998diff -urNp linux-2.6.30.4/arch/x86/kernel/process_32.c linux-2.6.30.4/arch/x86/kernel/process_32.c
9823--- linux-2.6.29.6/arch/x86/kernel/process_32.c 2009-07-02 19:41:20.000000000 -0400 9999--- linux-2.6.30.4/arch/x86/kernel/process_32.c 2009-07-24 17:47:51.000000000 -0400
9824+++ linux-2.6.29.6/arch/x86/kernel/process_32.c 2009-07-23 17:34:32.073727851 -0400 10000+++ linux-2.6.30.4/arch/x86/kernel/process_32.c 2009-07-30 09:48:09.951950745 -0400
9825@@ -66,8 +66,10 @@ asmlinkage void ret_from_fork(void) __as 10001@@ -73,6 +73,7 @@ EXPORT_PER_CPU_SYMBOL(current_task);
9826 DEFINE_PER_CPU(struct task_struct *, current_task) = &init_task;
9827 EXPORT_PER_CPU_SYMBOL(current_task);
9828
9829+#ifdef CONFIG_SMP
9830 DEFINE_PER_CPU(int, cpu_number);
9831 EXPORT_PER_CPU_SYMBOL(cpu_number);
9832+#endif
9833
9834 /*
9835 * Return saved PC of a blocked thread.
9836@@ -75,6 +77,7 @@ EXPORT_PER_CPU_SYMBOL(cpu_number);
9837 unsigned long thread_saved_pc(struct task_struct *tsk) 10002 unsigned long thread_saved_pc(struct task_struct *tsk)
9838 { 10003 {
9839 return ((unsigned long *)tsk->thread.sp)[3]; 10004 return ((unsigned long *)tsk->thread.sp)[3];
@@ -9841,7 +10006,7 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/process_32.c linux-2.6.29.6/arch/x86/k
9841 } 10006 }
9842 10007
9843 #ifndef CONFIG_SMP 10008 #ifndef CONFIG_SMP
9844@@ -129,7 +132,7 @@ void __show_regs(struct pt_regs *regs, i 10009@@ -135,7 +136,7 @@ void __show_regs(struct pt_regs *regs, i
9845 unsigned short ss, gs; 10010 unsigned short ss, gs;
9846 const char *board; 10011 const char *board;
9847 10012
@@ -9849,8 +10014,8 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/process_32.c linux-2.6.29.6/arch/x86/k
9849+ if (user_mode(regs)) { 10014+ if (user_mode(regs)) {
9850 sp = regs->sp; 10015 sp = regs->sp;
9851 ss = regs->ss & 0xffff; 10016 ss = regs->ss & 0xffff;
9852 savesegment(gs, gs); 10017 gs = get_user_gs(regs);
9853@@ -210,8 +213,8 @@ int kernel_thread(int (*fn)(void *), voi 10018@@ -216,8 +217,8 @@ int kernel_thread(int (*fn)(void *), voi
9854 regs.bx = (unsigned long) fn; 10019 regs.bx = (unsigned long) fn;
9855 regs.dx = (unsigned long) arg; 10020 regs.dx = (unsigned long) arg;
9856 10021
@@ -9859,26 +10024,9 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/process_32.c linux-2.6.29.6/arch/x86/k
9859+ regs.ds = __KERNEL_DS; 10024+ regs.ds = __KERNEL_DS;
9860+ regs.es = __KERNEL_DS; 10025+ regs.es = __KERNEL_DS;
9861 regs.fs = __KERNEL_PERCPU; 10026 regs.fs = __KERNEL_PERCPU;
10027 regs.gs = __KERNEL_STACK_CANARY;
9862 regs.orig_ax = -1; 10028 regs.orig_ax = -1;
9863 regs.ip = (unsigned long) kernel_thread_helper; 10029@@ -253,7 +254,7 @@ int copy_thread(unsigned long clone_flag
9864@@ -233,7 +236,7 @@ void exit_thread(void)
9865 struct task_struct *tsk = current;
9866 struct thread_struct *t = &tsk->thread;
9867 int cpu = get_cpu();
9868- struct tss_struct *tss = &per_cpu(init_tss, cpu);
9869+ struct tss_struct *tss = init_tss + cpu;
9870
9871 kfree(t->io_bitmap_ptr);
9872 t->io_bitmap_ptr = NULL;
9873@@ -256,6 +259,7 @@ void flush_thread(void)
9874 {
9875 struct task_struct *tsk = current;
9876
9877+ loadsegment(gs, 0);
9878 tsk->thread.debugreg0 = 0;
9879 tsk->thread.debugreg1 = 0;
9880 tsk->thread.debugreg2 = 0;
9881@@ -295,7 +299,7 @@ int copy_thread(int nr, unsigned long cl
9882 struct task_struct *tsk; 10030 struct task_struct *tsk;
9883 int err; 10031 int err;
9884 10032
@@ -9887,7 +10035,7 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/process_32.c linux-2.6.29.6/arch/x86/k
9887 *childregs = *regs; 10035 *childregs = *regs;
9888 childregs->ax = 0; 10036 childregs->ax = 0;
9889 childregs->sp = sp; 10037 childregs->sp = sp;
9890@@ -324,6 +328,7 @@ int copy_thread(int nr, unsigned long cl 10038@@ -282,6 +283,7 @@ int copy_thread(unsigned long clone_flag
9891 * Set a new TLS for the child thread? 10039 * Set a new TLS for the child thread?
9892 */ 10040 */
9893 if (clone_flags & CLONE_SETTLS) 10041 if (clone_flags & CLONE_SETTLS)
@@ -9895,7 +10043,7 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/process_32.c linux-2.6.29.6/arch/x86/k
9895 err = do_set_thread_area(p, -1, 10043 err = do_set_thread_area(p, -1,
9896 (struct user_desc __user *)childregs->si, 0); 10044 (struct user_desc __user *)childregs->si, 0);
9897 10045
9898@@ -514,7 +519,7 @@ __switch_to(struct task_struct *prev_p, 10046@@ -351,7 +353,7 @@ __switch_to(struct task_struct *prev_p,
9899 struct thread_struct *prev = &prev_p->thread, 10047 struct thread_struct *prev = &prev_p->thread,
9900 *next = &next_p->thread; 10048 *next = &next_p->thread;
9901 int cpu = smp_processor_id(); 10049 int cpu = smp_processor_id();
@@ -9904,9 +10052,9 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/process_32.c linux-2.6.29.6/arch/x86/k
9904 10052
9905 /* never put a printk in __switch_to... printk() calls wake_up*() indirectly */ 10053 /* never put a printk in __switch_to... printk() calls wake_up*() indirectly */
9906 10054
9907@@ -542,6 +547,11 @@ __switch_to(struct task_struct *prev_p, 10055@@ -379,6 +381,11 @@ __switch_to(struct task_struct *prev_p,
9908 */ 10056 */
9909 savesegment(gs, prev->gs); 10057 lazy_save_gs(prev->gs);
9910 10058
9911+#ifdef CONFIG_PAX_MEMORY_UDEREF 10059+#ifdef CONFIG_PAX_MEMORY_UDEREF
9912+ if (!segment_eq(task_thread_info(prev_p)->addr_limit, task_thread_info(next_p)->addr_limit)) 10060+ if (!segment_eq(task_thread_info(prev_p)->addr_limit, task_thread_info(next_p)->addr_limit))
@@ -9916,7 +10064,7 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/process_32.c linux-2.6.29.6/arch/x86/k
9916 /* 10064 /*
9917 * Load the per-thread Thread-Local Storage descriptor. 10065 * Load the per-thread Thread-Local Storage descriptor.
9918 */ 10066 */
9919@@ -680,15 +690,27 @@ unsigned long get_wchan(struct task_stru 10067@@ -497,15 +504,27 @@ unsigned long get_wchan(struct task_stru
9920 return 0; 10068 return 0;
9921 } 10069 }
9922 10070
@@ -9953,10 +10101,10 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/process_32.c linux-2.6.29.6/arch/x86/k
9953+ load_sp0(init_tss + smp_processor_id(), thread); 10101+ load_sp0(init_tss + smp_processor_id(), thread);
9954 } 10102 }
9955+#endif 10103+#endif
9956diff -urNp linux-2.6.29.6/arch/x86/kernel/process_64.c linux-2.6.29.6/arch/x86/kernel/process_64.c 10104diff -urNp linux-2.6.30.4/arch/x86/kernel/process_64.c linux-2.6.30.4/arch/x86/kernel/process_64.c
9957--- linux-2.6.29.6/arch/x86/kernel/process_64.c 2009-07-02 19:41:20.000000000 -0400 10105--- linux-2.6.30.4/arch/x86/kernel/process_64.c 2009-07-24 17:47:51.000000000 -0400
9958+++ linux-2.6.29.6/arch/x86/kernel/process_64.c 2009-07-23 17:34:32.073727851 -0400 10106+++ linux-2.6.30.4/arch/x86/kernel/process_64.c 2009-07-30 09:48:09.951950745 -0400
9959@@ -91,7 +91,7 @@ static void __exit_idle(void) 10107@@ -97,7 +97,7 @@ static void __exit_idle(void)
9960 void exit_idle(void) 10108 void exit_idle(void)
9961 { 10109 {
9962 /* idle loop has pid 0 */ 10110 /* idle loop has pid 0 */
@@ -9965,16 +10113,7 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/process_64.c linux-2.6.29.6/arch/x86/k
9965 return; 10113 return;
9966 __exit_idle(); 10114 __exit_idle();
9967 } 10115 }
9968@@ -112,6 +112,8 @@ static inline void play_dead(void) 10116@@ -176,7 +176,7 @@ void __show_regs(struct pt_regs *regs, i
9969 void cpu_idle(void)
9970 {
9971 current_thread_info()->status |= TS_POLLING;
9972+ current->stack_canary = pax_get_random_long();
9973+ write_pda(stack_canary, current->stack_canary);
9974 /* endless idle loop with no priority at all */
9975 while (1) {
9976 tick_nohz_stop_sched_tick(1);
9977@@ -160,7 +162,7 @@ void __show_regs(struct pt_regs *regs, i
9978 if (!board) 10117 if (!board)
9979 board = ""; 10118 board = "";
9980 printk(KERN_INFO "Pid: %d, comm: %.20s %s %s %.*s %s\n", 10119 printk(KERN_INFO "Pid: %d, comm: %.20s %s %s %.*s %s\n",
@@ -9983,16 +10122,7 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/process_64.c linux-2.6.29.6/arch/x86/k
9983 init_utsname()->release, 10122 init_utsname()->release,
9984 (int)strcspn(init_utsname()->version, " "), 10123 (int)strcspn(init_utsname()->version, " "),
9985 init_utsname()->version, board); 10124 init_utsname()->version, board);
9986@@ -230,7 +232,7 @@ void exit_thread(void) 10125@@ -386,7 +386,7 @@ __switch_to(struct task_struct *prev_p,
9987 struct thread_struct *t = &me->thread;
9988
9989 if (me->thread.io_bitmap_ptr) {
9990- struct tss_struct *tss = &per_cpu(init_tss, get_cpu());
9991+ struct tss_struct *tss = init_tss + get_cpu();
9992
9993 kfree(t->io_bitmap_ptr);
9994 t->io_bitmap_ptr = NULL;
9995@@ -537,7 +539,7 @@ __switch_to(struct task_struct *prev_p,
9996 struct thread_struct *prev = &prev_p->thread; 10126 struct thread_struct *prev = &prev_p->thread;
9997 struct thread_struct *next = &next_p->thread; 10127 struct thread_struct *next = &next_p->thread;
9998 int cpu = smp_processor_id(); 10128 int cpu = smp_processor_id();
@@ -10001,15 +10131,7 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/process_64.c linux-2.6.29.6/arch/x86/k
10001 unsigned fsindex, gsindex; 10131 unsigned fsindex, gsindex;
10002 10132
10003 /* we're going to use this soon, after a few expensive things */ 10133 /* we're going to use this soon, after a few expensive things */
10004@@ -626,7 +628,6 @@ __switch_to(struct task_struct *prev_p, 10134@@ -545,12 +545,11 @@ unsigned long get_wchan(struct task_stru
10005 (unsigned long)task_stack_page(next_p) +
10006 THREAD_SIZE - PDA_STACKOFFSET);
10007 #ifdef CONFIG_CC_STACKPROTECTOR
10008- write_pda(stack_canary, next_p->stack_canary);
10009 /*
10010 * Build time only check to make sure the stack_canary is at
10011 * offset 40 in the pda; this is a gcc ABI requirement
10012@@ -725,12 +726,11 @@ unsigned long get_wchan(struct task_stru
10013 if (!p || p == current || p->state == TASK_RUNNING) 10135 if (!p || p == current || p->state == TASK_RUNNING)
10014 return 0; 10136 return 0;
10015 stack = (unsigned long)task_stack_page(p); 10137 stack = (unsigned long)task_stack_page(p);
@@ -10024,7 +10146,7 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/process_64.c linux-2.6.29.6/arch/x86/k
10024 return 0; 10146 return 0;
10025 ip = *(u64 *)(fp+8); 10147 ip = *(u64 *)(fp+8);
10026 if (!in_sched_functions(ip)) 10148 if (!in_sched_functions(ip))
10027@@ -839,16 +839,3 @@ long sys_arch_prctl(int code, unsigned l 10149@@ -659,16 +658,3 @@ long sys_arch_prctl(int code, unsigned l
10028 { 10150 {
10029 return do_arch_prctl(current, code, addr); 10151 return do_arch_prctl(current, code, addr);
10030 } 10152 }
@@ -10041,10 +10163,32 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/process_64.c linux-2.6.29.6/arch/x86/k
10041- unsigned long range_end = mm->brk + 0x02000000; 10163- unsigned long range_end = mm->brk + 0x02000000;
10042- return randomize_range(mm->brk, range_end, 0) ? : mm->brk; 10164- return randomize_range(mm->brk, range_end, 0) ? : mm->brk;
10043-} 10165-}
10044diff -urNp linux-2.6.29.6/arch/x86/kernel/ptrace.c linux-2.6.29.6/arch/x86/kernel/ptrace.c 10166diff -urNp linux-2.6.30.4/arch/x86/kernel/process.c linux-2.6.30.4/arch/x86/kernel/process.c
10045--- linux-2.6.29.6/arch/x86/kernel/ptrace.c 2009-07-02 19:41:20.000000000 -0400 10167--- linux-2.6.30.4/arch/x86/kernel/process.c 2009-07-24 17:47:51.000000000 -0400
10046+++ linux-2.6.29.6/arch/x86/kernel/ptrace.c 2009-07-23 17:34:32.073727851 -0400 10168+++ linux-2.6.30.4/arch/x86/kernel/process.c 2009-07-30 09:48:09.950702241 -0400
10047@@ -1377,7 +1377,7 @@ void send_sigtrap(struct task_struct *ts 10169@@ -71,7 +71,7 @@ void exit_thread(void)
10170 unsigned long *bp = t->io_bitmap_ptr;
10171
10172 if (bp) {
10173- struct tss_struct *tss = &per_cpu(init_tss, get_cpu());
10174+ struct tss_struct *tss = init_tss + get_cpu();
10175
10176 t->io_bitmap_ptr = NULL;
10177 clear_thread_flag(TIF_IO_BITMAP);
10178@@ -105,6 +105,9 @@ void flush_thread(void)
10179
10180 clear_tsk_thread_flag(tsk, TIF_DEBUG);
10181
10182+#ifndef CONFIG_CC_STACKPROTECTOR
10183+ loadsegment(gs, 0);
10184+#endif
10185 tsk->thread.debugreg0 = 0;
10186 tsk->thread.debugreg1 = 0;
10187 tsk->thread.debugreg2 = 0;
10188diff -urNp linux-2.6.30.4/arch/x86/kernel/ptrace.c linux-2.6.30.4/arch/x86/kernel/ptrace.c
10189--- linux-2.6.30.4/arch/x86/kernel/ptrace.c 2009-07-24 17:47:51.000000000 -0400
10190+++ linux-2.6.30.4/arch/x86/kernel/ptrace.c 2009-07-30 09:48:09.952643339 -0400
10191@@ -1374,7 +1374,7 @@ void send_sigtrap(struct task_struct *ts
10048 info.si_code = si_code; 10192 info.si_code = si_code;
10049 10193
10050 /* User-mode ip? */ 10194 /* User-mode ip? */
@@ -10053,10 +10197,10 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/ptrace.c linux-2.6.29.6/arch/x86/kerne
10053 10197
10054 /* Send us the fake SIGTRAP */ 10198 /* Send us the fake SIGTRAP */
10055 force_sig_info(SIGTRAP, &info, tsk); 10199 force_sig_info(SIGTRAP, &info, tsk);
10056diff -urNp linux-2.6.29.6/arch/x86/kernel/reboot.c linux-2.6.29.6/arch/x86/kernel/reboot.c 10200diff -urNp linux-2.6.30.4/arch/x86/kernel/reboot.c linux-2.6.30.4/arch/x86/kernel/reboot.c
10057--- linux-2.6.29.6/arch/x86/kernel/reboot.c 2009-07-02 19:41:20.000000000 -0400 10201--- linux-2.6.30.4/arch/x86/kernel/reboot.c 2009-07-24 17:47:51.000000000 -0400
10058+++ linux-2.6.29.6/arch/x86/kernel/reboot.c 2009-07-23 17:34:32.073727851 -0400 10202+++ linux-2.6.30.4/arch/x86/kernel/reboot.c 2009-07-30 09:48:09.952643339 -0400
10059@@ -32,7 +32,7 @@ void (*pm_power_off)(void); 10203@@ -31,7 +31,7 @@ void (*pm_power_off)(void);
10060 EXPORT_SYMBOL(pm_power_off); 10204 EXPORT_SYMBOL(pm_power_off);
10061 10205
10062 static const struct desc_ptr no_idt = {}; 10206 static const struct desc_ptr no_idt = {};
@@ -10065,8 +10209,8 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/reboot.c linux-2.6.29.6/arch/x86/kerne
10065 enum reboot_type reboot_type = BOOT_KBD; 10209 enum reboot_type reboot_type = BOOT_KBD;
10066 int reboot_force; 10210 int reboot_force;
10067 10211
10068@@ -234,7 +234,7 @@ static struct dmi_system_id __initdata r 10212@@ -249,7 +249,7 @@ static struct dmi_system_id __initdata r
10069 DMI_MATCH(DMI_PRODUCT_NAME, "Dell XPS710"), 10213 DMI_MATCH(DMI_PRODUCT_NAME, "VGN-Z540N"),
10070 }, 10214 },
10071 }, 10215 },
10072- { } 10216- { }
@@ -10074,7 +10218,7 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/reboot.c linux-2.6.29.6/arch/x86/kerne
10074 }; 10218 };
10075 10219
10076 static int __init reboot_init(void) 10220 static int __init reboot_init(void)
10077@@ -250,12 +250,12 @@ core_initcall(reboot_init); 10221@@ -265,12 +265,12 @@ core_initcall(reboot_init);
10078 controller to pulse the CPU reset line, which is more thorough, but 10222 controller to pulse the CPU reset line, which is more thorough, but
10079 doesn't work with at least one type of 486 motherboard. It is easy 10223 doesn't work with at least one type of 486 motherboard. It is easy
10080 to stop this code working; hence the copious comments. */ 10224 to stop this code working; hence the copious comments. */
@@ -10092,7 +10236,7 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/reboot.c linux-2.6.29.6/arch/x86/kerne
10092 }; 10236 };
10093 10237
10094 static const struct desc_ptr 10238 static const struct desc_ptr
10095@@ -304,7 +304,7 @@ static const unsigned char jump_to_bios 10239@@ -319,7 +319,7 @@ static const unsigned char jump_to_bios
10096 * specified by the code and length parameters. 10240 * specified by the code and length parameters.
10097 * We assume that length will aways be less that 100! 10241 * We assume that length will aways be less that 100!
10098 */ 10242 */
@@ -10101,7 +10245,7 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/reboot.c linux-2.6.29.6/arch/x86/kerne
10101 { 10245 {
10102 local_irq_disable(); 10246 local_irq_disable();
10103 10247
10104@@ -324,8 +324,8 @@ void machine_real_restart(const unsigned 10248@@ -339,8 +339,8 @@ void machine_real_restart(const unsigned
10105 /* Remap the kernel at virtual address zero, as well as offset zero 10249 /* Remap the kernel at virtual address zero, as well as offset zero
10106 from the kernel segment. This assumes the kernel segment starts at 10250 from the kernel segment. This assumes the kernel segment starts at
10107 virtual address PAGE_OFFSET. */ 10251 virtual address PAGE_OFFSET. */
@@ -10112,7 +10256,7 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/reboot.c linux-2.6.29.6/arch/x86/kerne
10112 10256
10113 /* 10257 /*
10114 * Use `swapper_pg_dir' as our page directory. 10258 * Use `swapper_pg_dir' as our page directory.
10115@@ -337,16 +337,15 @@ void machine_real_restart(const unsigned 10259@@ -352,16 +352,15 @@ void machine_real_restart(const unsigned
10116 boot)". This seems like a fairly standard thing that gets set by 10260 boot)". This seems like a fairly standard thing that gets set by
10117 REBOOT.COM programs, and the previous reset routine did this 10261 REBOOT.COM programs, and the previous reset routine did this
10118 too. */ 10262 too. */
@@ -10132,10 +10276,10 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/reboot.c linux-2.6.29.6/arch/x86/kerne
10132 10276
10133 /* Set up the IDT for real mode. */ 10277 /* Set up the IDT for real mode. */
10134 load_idt(&real_mode_idt); 10278 load_idt(&real_mode_idt);
10135diff -urNp linux-2.6.29.6/arch/x86/kernel/setup.c linux-2.6.29.6/arch/x86/kernel/setup.c 10279diff -urNp linux-2.6.30.4/arch/x86/kernel/setup.c linux-2.6.30.4/arch/x86/kernel/setup.c
10136--- linux-2.6.29.6/arch/x86/kernel/setup.c 2009-07-02 19:41:20.000000000 -0400 10280--- linux-2.6.30.4/arch/x86/kernel/setup.c 2009-07-30 20:32:40.383618032 -0400
10137+++ linux-2.6.29.6/arch/x86/kernel/setup.c 2009-07-23 17:34:32.075127987 -0400 10281+++ linux-2.6.30.4/arch/x86/kernel/setup.c 2009-07-30 20:32:47.940599318 -0400
10138@@ -703,8 +703,8 @@ void __init setup_arch(char **cmdline_p) 10282@@ -740,14 +740,14 @@ void __init setup_arch(char **cmdline_p)
10139 10283
10140 if (!boot_params.hdr.root_flags) 10284 if (!boot_params.hdr.root_flags)
10141 root_mountflags &= ~MS_RDONLY; 10285 root_mountflags &= ~MS_RDONLY;
@@ -10144,11 +10288,7 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/setup.c linux-2.6.29.6/arch/x86/kernel
10144+ init_mm.start_code = ktla_ktva((unsigned long) _text); 10288+ init_mm.start_code = ktla_ktva((unsigned long) _text);
10145+ init_mm.end_code = ktla_ktva((unsigned long) _etext); 10289+ init_mm.end_code = ktla_ktva((unsigned long) _etext);
10146 init_mm.end_data = (unsigned long) _edata; 10290 init_mm.end_data = (unsigned long) _edata;
10147 #ifdef CONFIG_X86_32 10291 init_mm.brk = _brk_end;
10148 init_mm.brk = init_pg_tables_end + PAGE_OFFSET;
10149@@ -712,9 +712,9 @@ void __init setup_arch(char **cmdline_p)
10150 init_mm.brk = (unsigned long) &_end;
10151 #endif
10152 10292
10153- code_resource.start = virt_to_phys(_text); 10293- code_resource.start = virt_to_phys(_text);
10154- code_resource.end = virt_to_phys(_etext)-1; 10294- code_resource.end = virt_to_phys(_etext)-1;
@@ -10159,34 +10299,101 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/setup.c linux-2.6.29.6/arch/x86/kernel
10159 data_resource.end = virt_to_phys(_edata)-1; 10299 data_resource.end = virt_to_phys(_edata)-1;
10160 bss_resource.start = virt_to_phys(&__bss_start); 10300 bss_resource.start = virt_to_phys(&__bss_start);
10161 bss_resource.end = virt_to_phys(&__bss_stop)-1; 10301 bss_resource.end = virt_to_phys(&__bss_stop)-1;
10162diff -urNp linux-2.6.29.6/arch/x86/kernel/setup_percpu.c linux-2.6.29.6/arch/x86/kernel/setup_percpu.c 10302diff -urNp linux-2.6.30.4/arch/x86/kernel/setup_percpu.c linux-2.6.30.4/arch/x86/kernel/setup_percpu.c
10163--- linux-2.6.29.6/arch/x86/kernel/setup_percpu.c 2009-07-02 19:41:20.000000000 -0400 10303--- linux-2.6.30.4/arch/x86/kernel/setup_percpu.c 2009-07-24 17:47:51.000000000 -0400
10164+++ linux-2.6.29.6/arch/x86/kernel/setup_percpu.c 2009-07-23 17:34:32.075127987 -0400 10304+++ linux-2.6.30.4/arch/x86/kernel/setup_percpu.c 2009-08-04 17:52:34.388856060 -0400
10165@@ -197,7 +197,11 @@ void __init setup_per_cpu_areas(void) 10305@@ -25,19 +25,17 @@
10166 cpu, node, __pa(ptr)); 10306 # define DBG(x...)
10167 }
10168 #endif 10307 #endif
10169+#ifdef CONFIG_X86_32 10308
10170+ __per_cpu_offset[cpu] = ptr - __per_cpu_start; 10309+#ifdef CONFIG_SMP
10171+#else 10310 DEFINE_PER_CPU(int, cpu_number);
10172 per_cpu_offset(cpu) = ptr - __per_cpu_start; 10311 EXPORT_PER_CPU_SYMBOL(cpu_number);
10173+#endif 10312+#endif
10174 memcpy(ptr, __per_cpu_start, __per_cpu_end - __per_cpu_start);
10175 }
10176 10313
10177diff -urNp linux-2.6.29.6/arch/x86/kernel/signal.c linux-2.6.29.6/arch/x86/kernel/signal.c 10314-#ifdef CONFIG_X86_64
10178--- linux-2.6.29.6/arch/x86/kernel/signal.c 2009-07-02 19:41:20.000000000 -0400 10315 #define BOOT_PERCPU_OFFSET ((unsigned long)__per_cpu_load)
10179+++ linux-2.6.29.6/arch/x86/kernel/signal.c 2009-07-23 17:34:32.075127987 -0400 10316-#else
10180@@ -255,7 +255,7 @@ get_sigframe(struct k_sigaction *ka, str 10317-#define BOOT_PERCPU_OFFSET 0
10318-#endif
10319
10320 DEFINE_PER_CPU(unsigned long, this_cpu_off) = BOOT_PERCPU_OFFSET;
10321 EXPORT_PER_CPU_SYMBOL(this_cpu_off);
10322
10323-unsigned long __per_cpu_offset[NR_CPUS] __read_mostly = {
10324+unsigned long __per_cpu_offset[NR_CPUS] __read_only = {
10325 [0 ... NR_CPUS-1] = BOOT_PERCPU_OFFSET,
10326 };
10327 EXPORT_SYMBOL(__per_cpu_offset);
10328@@ -333,16 +331,18 @@ out_free_ar:
10329 return ret;
10330 }
10331
10332-static inline void setup_percpu_segment(int cpu)
10333+static inline void setup_percpu_segment(int cpu, size_t size)
10334 {
10335 #ifdef CONFIG_X86_32
10336- struct desc_struct gdt;
10337+ struct desc_struct d, *gdt = get_cpu_gdt_table(cpu);
10338+ unsigned long base;
10339
10340- pack_descriptor(&gdt, per_cpu_offset(cpu), 0xFFFFF,
10341- 0x2 | DESCTYPE_S, 0x8);
10342- gdt.s = 1;
10343- write_gdt_entry(get_cpu_gdt_table(cpu),
10344- GDT_ENTRY_PERCPU, &gdt, DESCTYPE_S);
10345+ base = per_cpu_offset(cpu);
10346+ if (size <= 64*1024)
10347+ pack_descriptor(&d, base, size-1, 0x80 | DESCTYPE_S | 0x3, 0x4);
10348+ else
10349+ pack_descriptor(&d, base, (size-1) >> PAGE_SHIFT, 0x80 | DESCTYPE_S | 0x3, 0xC);
10350+ write_gdt_entry(gdt, GDT_ENTRY_PERCPU, &d, DESCTYPE_S);
10351 #endif
10352 }
10353
10354@@ -381,10 +381,15 @@ void __init setup_per_cpu_areas(void)
10355 /* alrighty, percpu areas up and running */
10356 delta = (unsigned long)pcpu_base_addr - (unsigned long)__per_cpu_start;
10357 for_each_possible_cpu(cpu) {
10358+#ifdef CONFIG_CC_STACKPROTECTOR
10359+#ifdef CONFIG_x86_32
10360+ unsigned long canary = per_cpu(stack_canary, cpu);
10361+#endif
10362+#endif
10363 per_cpu_offset(cpu) = delta + cpu * pcpu_unit_size;
10364 per_cpu(this_cpu_off, cpu) = per_cpu_offset(cpu);
10365 per_cpu(cpu_number, cpu) = cpu;
10366- setup_percpu_segment(cpu);
10367+ setup_percpu_segment(cpu, static_size + PERCPU_MODULE_RESERVE + PERCPU_DYNAMIC_RESERVE);
10368 setup_stack_canary_segment(cpu);
10369 /*
10370 * Copy data used in early init routines from the
10371@@ -408,6 +413,12 @@ void __init setup_per_cpu_areas(void)
10372 early_per_cpu_map(x86_cpu_to_node_map, cpu);
10373 #endif
10374 #endif
10375+#ifdef CONFIG_CC_STACKPROTECTOR
10376+#ifdef CONFIG_x86_32
10377+ if (cpu == boot_cpu_id)
10378+ per_cpu(stack_canary, cpu) = canary;
10379+#endif
10380+#endif
10381 /*
10382 * Up to this point, the boot CPU has been using .data.init
10383 * area. Reload any changed state for the boot CPU.
10384diff -urNp linux-2.6.30.4/arch/x86/kernel/signal.c linux-2.6.30.4/arch/x86/kernel/signal.c
10385--- linux-2.6.30.4/arch/x86/kernel/signal.c 2009-07-24 17:47:51.000000000 -0400
10386+++ linux-2.6.30.4/arch/x86/kernel/signal.c 2009-07-30 09:48:09.958625901 -0400
10387@@ -198,7 +198,7 @@ static unsigned long align_sigframe(unsi
10181 * Align the stack pointer according to the i386 ABI, 10388 * Align the stack pointer according to the i386 ABI,
10182 * i.e. so that on function entry ((sp + 4) & 15) == 0. 10389 * i.e. so that on function entry ((sp + 4) & 15) == 0.
10183 */ 10390 */
10184- sp = ((sp + 4) & -16ul) - 4; 10391- sp = ((sp + 4) & -16ul) - 4;
10185+ sp = ((sp - 12) & -16ul) - 4; 10392+ sp = ((sp - 12) & -16ul) - 4;
10186 10393 #else /* !CONFIG_X86_32 */
10187 return (void __user *) sp; 10394 sp = round_down(sp, 16) - 8;
10188 } 10395 #endif
10189@@ -287,9 +287,9 @@ __setup_frame(int sig, struct k_sigactio 10396@@ -308,9 +308,9 @@ __setup_frame(int sig, struct k_sigactio
10190 } 10397 }
10191 10398
10192 if (current->mm->context.vdso) 10399 if (current->mm->context.vdso)
@@ -10198,16 +10405,16 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/signal.c linux-2.6.29.6/arch/x86/kerne
10198 if (ka->sa.sa_flags & SA_RESTORER) 10405 if (ka->sa.sa_flags & SA_RESTORER)
10199 restorer = ka->sa.sa_restorer; 10406 restorer = ka->sa.sa_restorer;
10200 10407
10201@@ -360,7 +360,7 @@ static int __setup_rt_frame(int sig, str 10408@@ -378,7 +378,7 @@ static int __setup_rt_frame(int sig, str
10202 return -EFAULT; 10409 err |= __copy_to_user(&frame->uc.uc_sigmask, set, sizeof(*set));
10203 10410
10204 /* Set up to return from userspace. */ 10411 /* Set up to return from userspace. */
10205- restorer = VDSO32_SYMBOL(current->mm->context.vdso, rt_sigreturn); 10412- restorer = VDSO32_SYMBOL(current->mm->context.vdso, rt_sigreturn);
10206+ restorer = (void __user *)VDSO32_SYMBOL(current->mm->context.vdso, rt_sigreturn); 10413+ restorer = (void __user *)VDSO32_SYMBOL(current->mm->context.vdso, rt_sigreturn);
10207 if (ka->sa.sa_flags & SA_RESTORER) 10414 if (ka->sa.sa_flags & SA_RESTORER)
10208 restorer = ka->sa.sa_restorer; 10415 restorer = ka->sa.sa_restorer;
10209 err |= __put_user(restorer, &frame->pretcode); 10416 put_user_ex(restorer, &frame->pretcode);
10210@@ -811,7 +811,7 @@ static void do_signal(struct pt_regs *re 10417@@ -790,7 +790,7 @@ static void do_signal(struct pt_regs *re
10211 * X86_32: vm86 regs switched out by assembly code before reaching 10418 * X86_32: vm86 regs switched out by assembly code before reaching
10212 * here, so testing against kernel CS suffices. 10419 * here, so testing against kernel CS suffices.
10213 */ 10420 */
@@ -10216,24 +10423,23 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/signal.c linux-2.6.29.6/arch/x86/kerne
10216 return; 10423 return;
10217 10424
10218 if (current_thread_info()->status & TS_RESTORE_SIGMASK) 10425 if (current_thread_info()->status & TS_RESTORE_SIGMASK)
10219diff -urNp linux-2.6.29.6/arch/x86/kernel/smpboot.c linux-2.6.29.6/arch/x86/kernel/smpboot.c 10426diff -urNp linux-2.6.30.4/arch/x86/kernel/smpboot.c linux-2.6.30.4/arch/x86/kernel/smpboot.c
10220--- linux-2.6.29.6/arch/x86/kernel/smpboot.c 2009-07-02 19:41:20.000000000 -0400 10427--- linux-2.6.30.4/arch/x86/kernel/smpboot.c 2009-07-24 17:47:51.000000000 -0400
10221+++ linux-2.6.29.6/arch/x86/kernel/smpboot.c 2009-07-23 17:34:32.076107253 -0400 10428+++ linux-2.6.30.4/arch/x86/kernel/smpboot.c 2009-07-30 09:48:09.958625901 -0400
10222@@ -806,6 +806,11 @@ static int __cpuinit do_boot_cpu(int api 10429@@ -685,6 +685,10 @@ static int __cpuinit do_boot_cpu(int api
10223 .cpu = cpu, 10430 .done = COMPLETION_INITIALIZER_ONSTACK(c_idle.done),
10224 .done = COMPLETION_INITIALIZER_ONSTACK(c_idle.done),
10225 }; 10431 };
10226+ 10432
10227+#ifdef CONFIG_PAX_KERNEXEC 10433+#ifdef CONFIG_PAX_KERNEXEC
10228+ unsigned long cr0; 10434+ unsigned long cr0;
10229+#endif 10435+#endif
10230+ 10436+
10231 INIT_WORK(&c_idle.work, do_fork_idle); 10437 INIT_WORK(&c_idle.work, do_fork_idle);
10232 10438
10233 #ifdef CONFIG_X86_64 10439 alternatives_smp_switch(1);
10234@@ -856,7 +861,17 @@ do_rest: 10440@@ -727,7 +731,17 @@ do_rest:
10235 cpu_pda(cpu)->pcurrent = c_idle.idle; 10441 (unsigned long)task_stack_page(c_idle.idle) -
10236 clear_tsk_thread_flag(c_idle.idle, TIF_FORK); 10442 KERNEL_STACK_OFFSET + THREAD_SIZE;
10237 #endif 10443 #endif
10238+ 10444+
10239+#ifdef CONFIG_PAX_KERNEXEC 10445+#ifdef CONFIG_PAX_KERNEXEC
@@ -10249,51 +10455,9 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/smpboot.c linux-2.6.29.6/arch/x86/kern
10249 initial_code = (unsigned long)start_secondary; 10455 initial_code = (unsigned long)start_secondary;
10250 stack_start.sp = (void *) c_idle.idle->thread.sp; 10456 stack_start.sp = (void *) c_idle.idle->thread.sp;
10251 10457
10252diff -urNp linux-2.6.29.6/arch/x86/kernel/smpcommon.c linux-2.6.29.6/arch/x86/kernel/smpcommon.c 10458diff -urNp linux-2.6.30.4/arch/x86/kernel/step.c linux-2.6.30.4/arch/x86/kernel/step.c
10253--- linux-2.6.29.6/arch/x86/kernel/smpcommon.c 2009-07-02 19:41:20.000000000 -0400 10459--- linux-2.6.30.4/arch/x86/kernel/step.c 2009-07-24 17:47:51.000000000 -0400
10254+++ linux-2.6.29.6/arch/x86/kernel/smpcommon.c 2009-07-23 17:34:32.076107253 -0400 10460+++ linux-2.6.30.4/arch/x86/kernel/step.c 2009-07-30 09:48:09.958625901 -0400
10255@@ -3,9 +3,10 @@
10256 */
10257 #include <linux/module.h>
10258 #include <asm/smp.h>
10259+#include <asm/sections.h>
10260
10261 #ifdef CONFIG_X86_32
10262-DEFINE_PER_CPU(unsigned long, this_cpu_off);
10263+DEFINE_PER_CPU(unsigned long, this_cpu_off) = (unsigned long)__per_cpu_start;
10264 EXPORT_PER_CPU_SYMBOL(this_cpu_off);
10265
10266 /*
10267@@ -15,16 +16,19 @@ EXPORT_PER_CPU_SYMBOL(this_cpu_off);
10268 */
10269 __cpuinit void init_gdt(int cpu)
10270 {
10271- struct desc_struct gdt;
10272+ struct desc_struct d, *gdt = get_cpu_gdt_table(cpu);
10273+ unsigned long base, limit;
10274
10275- pack_descriptor(&gdt, __per_cpu_offset[cpu], 0xFFFFF,
10276- 0x2 | DESCTYPE_S, 0x8);
10277- gdt.s = 1;
10278+ base = per_cpu_offset(cpu);
10279+ limit = PERCPU_ENOUGH_ROOM - 1;
10280+ if (limit < 64*1024)
10281+ pack_descriptor(&d, base, limit, 0x80 | DESCTYPE_S | 0x3, 0x4);
10282+ else
10283+ pack_descriptor(&d, base, limit >> PAGE_SHIFT, 0x80 | DESCTYPE_S | 0x3, 0xC);
10284
10285- write_gdt_entry(get_cpu_gdt_table(cpu),
10286- GDT_ENTRY_PERCPU, &gdt, DESCTYPE_S);
10287+ write_gdt_entry(gdt, GDT_ENTRY_PERCPU, &d, DESCTYPE_S);
10288
10289- per_cpu(this_cpu_off, cpu) = __per_cpu_offset[cpu];
10290+ per_cpu(this_cpu_off, cpu) = base;
10291 per_cpu(cpu_number, cpu) = cpu;
10292 }
10293 #endif
10294diff -urNp linux-2.6.29.6/arch/x86/kernel/step.c linux-2.6.29.6/arch/x86/kernel/step.c
10295--- linux-2.6.29.6/arch/x86/kernel/step.c 2009-07-02 19:41:20.000000000 -0400
10296+++ linux-2.6.29.6/arch/x86/kernel/step.c 2009-07-23 17:34:32.076107253 -0400
10297@@ -23,22 +23,20 @@ unsigned long convert_ip_to_linear(struc 10461@@ -23,22 +23,20 @@ unsigned long convert_ip_to_linear(struc
10298 * and APM bios ones we just ignore here. 10462 * and APM bios ones we just ignore here.
10299 */ 10463 */
@@ -10343,17 +10507,17 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/step.c linux-2.6.29.6/arch/x86/kernel/
10343 /* 32-bit mode: register increment */ 10507 /* 32-bit mode: register increment */
10344 return 0; 10508 return 0;
10345 /* 64-bit mode: REX prefix */ 10509 /* 64-bit mode: REX prefix */
10346diff -urNp linux-2.6.29.6/arch/x86/kernel/syscall_table_32.S linux-2.6.29.6/arch/x86/kernel/syscall_table_32.S 10510diff -urNp linux-2.6.30.4/arch/x86/kernel/syscall_table_32.S linux-2.6.30.4/arch/x86/kernel/syscall_table_32.S
10347--- linux-2.6.29.6/arch/x86/kernel/syscall_table_32.S 2009-07-02 19:41:20.000000000 -0400 10511--- linux-2.6.30.4/arch/x86/kernel/syscall_table_32.S 2009-07-24 17:47:51.000000000 -0400
10348+++ linux-2.6.29.6/arch/x86/kernel/syscall_table_32.S 2009-07-23 17:34:32.076778086 -0400 10512+++ linux-2.6.30.4/arch/x86/kernel/syscall_table_32.S 2009-07-30 09:48:09.959782846 -0400
10349@@ -1,3 +1,4 @@ 10513@@ -1,3 +1,4 @@
10350+.section .rodata,"a",@progbits 10514+.section .rodata,"a",@progbits
10351 ENTRY(sys_call_table) 10515 ENTRY(sys_call_table)
10352 .long sys_restart_syscall /* 0 - old "setup()" system call, used for restarting */ 10516 .long sys_restart_syscall /* 0 - old "setup()" system call, used for restarting */
10353 .long sys_exit 10517 .long sys_exit
10354diff -urNp linux-2.6.29.6/arch/x86/kernel/sys_i386_32.c linux-2.6.29.6/arch/x86/kernel/sys_i386_32.c 10518diff -urNp linux-2.6.30.4/arch/x86/kernel/sys_i386_32.c linux-2.6.30.4/arch/x86/kernel/sys_i386_32.c
10355--- linux-2.6.29.6/arch/x86/kernel/sys_i386_32.c 2009-07-02 19:41:20.000000000 -0400 10519--- linux-2.6.30.4/arch/x86/kernel/sys_i386_32.c 2009-07-24 17:47:51.000000000 -0400
10356+++ linux-2.6.29.6/arch/x86/kernel/sys_i386_32.c 2009-07-23 17:34:32.076778086 -0400 10520+++ linux-2.6.30.4/arch/x86/kernel/sys_i386_32.c 2009-07-30 09:48:09.958625901 -0400
10357@@ -24,6 +24,21 @@ 10521@@ -24,6 +24,21 @@
10358 10522
10359 #include <asm/syscalls.h> 10523 #include <asm/syscalls.h>
@@ -10582,9 +10746,9 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/sys_i386_32.c linux-2.6.29.6/arch/x86/
10582 10746
10583 struct sel_arg_struct { 10747 struct sel_arg_struct {
10584 unsigned long n; 10748 unsigned long n;
10585diff -urNp linux-2.6.29.6/arch/x86/kernel/sys_x86_64.c linux-2.6.29.6/arch/x86/kernel/sys_x86_64.c 10749diff -urNp linux-2.6.30.4/arch/x86/kernel/sys_x86_64.c linux-2.6.30.4/arch/x86/kernel/sys_x86_64.c
10586--- linux-2.6.29.6/arch/x86/kernel/sys_x86_64.c 2009-07-02 19:41:20.000000000 -0400 10750--- linux-2.6.30.4/arch/x86/kernel/sys_x86_64.c 2009-07-24 17:47:51.000000000 -0400
10587+++ linux-2.6.29.6/arch/x86/kernel/sys_x86_64.c 2009-07-23 17:34:32.076778086 -0400 10751+++ linux-2.6.30.4/arch/x86/kernel/sys_x86_64.c 2009-07-30 09:48:09.959782846 -0400
10588@@ -47,8 +47,8 @@ out: 10752@@ -47,8 +47,8 @@ out:
10589 return error; 10753 return error;
10590 } 10754 }
@@ -10666,9 +10830,9 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/sys_x86_64.c linux-2.6.29.6/arch/x86/k
10666 mm->cached_hole_size = ~0UL; 10830 mm->cached_hole_size = ~0UL;
10667 10831
10668 return addr; 10832 return addr;
10669diff -urNp linux-2.6.29.6/arch/x86/kernel/time_32.c linux-2.6.29.6/arch/x86/kernel/time_32.c 10833diff -urNp linux-2.6.30.4/arch/x86/kernel/time_32.c linux-2.6.30.4/arch/x86/kernel/time_32.c
10670--- linux-2.6.29.6/arch/x86/kernel/time_32.c 2009-07-02 19:41:20.000000000 -0400 10834--- linux-2.6.30.4/arch/x86/kernel/time_32.c 2009-07-24 17:47:51.000000000 -0400
10671+++ linux-2.6.29.6/arch/x86/kernel/time_32.c 2009-07-23 17:34:32.076778086 -0400 10835+++ linux-2.6.30.4/arch/x86/kernel/time_32.c 2009-07-30 09:48:09.959782846 -0400
10672@@ -47,22 +47,32 @@ unsigned long profile_pc(struct pt_regs 10836@@ -47,22 +47,32 @@ unsigned long profile_pc(struct pt_regs
10673 unsigned long pc = instruction_pointer(regs); 10837 unsigned long pc = instruction_pointer(regs);
10674 10838
@@ -10704,9 +10868,9 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/time_32.c linux-2.6.29.6/arch/x86/kern
10704 return pc; 10868 return pc;
10705 } 10869 }
10706 EXPORT_SYMBOL(profile_pc); 10870 EXPORT_SYMBOL(profile_pc);
10707diff -urNp linux-2.6.29.6/arch/x86/kernel/time_64.c linux-2.6.29.6/arch/x86/kernel/time_64.c 10871diff -urNp linux-2.6.30.4/arch/x86/kernel/time_64.c linux-2.6.30.4/arch/x86/kernel/time_64.c
10708--- linux-2.6.29.6/arch/x86/kernel/time_64.c 2009-07-02 19:41:20.000000000 -0400 10872--- linux-2.6.30.4/arch/x86/kernel/time_64.c 2009-07-24 17:47:51.000000000 -0400
10709+++ linux-2.6.29.6/arch/x86/kernel/time_64.c 2009-07-23 17:34:32.076778086 -0400 10873+++ linux-2.6.30.4/arch/x86/kernel/time_64.c 2009-07-30 09:48:09.960740129 -0400
10710@@ -25,8 +25,6 @@ 10874@@ -25,8 +25,6 @@
10711 #include <asm/time.h> 10875 #include <asm/time.h>
10712 #include <asm/timer.h> 10876 #include <asm/timer.h>
@@ -10725,21 +10889,9 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/time_64.c linux-2.6.29.6/arch/x86/kern
10725 #ifdef CONFIG_FRAME_POINTER 10889 #ifdef CONFIG_FRAME_POINTER
10726 return *(unsigned long *)(regs->bp + sizeof(long)); 10890 return *(unsigned long *)(regs->bp + sizeof(long));
10727 #else 10891 #else
10728diff -urNp linux-2.6.29.6/arch/x86/kernel/tlb_32.c linux-2.6.29.6/arch/x86/kernel/tlb_32.c 10892diff -urNp linux-2.6.30.4/arch/x86/kernel/tls.c linux-2.6.30.4/arch/x86/kernel/tls.c
10729--- linux-2.6.29.6/arch/x86/kernel/tlb_32.c 2009-07-02 19:41:20.000000000 -0400 10893--- linux-2.6.30.4/arch/x86/kernel/tls.c 2009-07-24 17:47:51.000000000 -0400
10730+++ linux-2.6.29.6/arch/x86/kernel/tlb_32.c 2009-07-23 17:34:32.076778086 -0400 10894+++ linux-2.6.30.4/arch/x86/kernel/tls.c 2009-07-30 09:48:09.960740129 -0400
10731@@ -5,7 +5,7 @@
10732 #include <asm/tlbflush.h>
10733
10734 DEFINE_PER_CPU(struct tlb_state, cpu_tlbstate)
10735- ____cacheline_aligned = { &init_mm, 0, };
10736+ ____cacheline_aligned = { &init_mm, 0, {0} };
10737
10738 /* must come after the send_IPI functions above for inlining */
10739 #include <mach_ipi.h>
10740diff -urNp linux-2.6.29.6/arch/x86/kernel/tls.c linux-2.6.29.6/arch/x86/kernel/tls.c
10741--- linux-2.6.29.6/arch/x86/kernel/tls.c 2009-07-02 19:41:20.000000000 -0400
10742+++ linux-2.6.29.6/arch/x86/kernel/tls.c 2009-07-23 17:34:32.077892704 -0400
10743@@ -85,6 +85,11 @@ int do_set_thread_area(struct task_struc 10895@@ -85,6 +85,11 @@ int do_set_thread_area(struct task_struc
10744 if (idx < GDT_ENTRY_TLS_MIN || idx > GDT_ENTRY_TLS_MAX) 10896 if (idx < GDT_ENTRY_TLS_MIN || idx > GDT_ENTRY_TLS_MAX)
10745 return -EINVAL; 10897 return -EINVAL;
@@ -10752,10 +10904,10 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/tls.c linux-2.6.29.6/arch/x86/kernel/t
10752 set_tls_desc(p, idx, &info, 1); 10904 set_tls_desc(p, idx, &info, 1);
10753 10905
10754 return 0; 10906 return 0;
10755diff -urNp linux-2.6.29.6/arch/x86/kernel/traps.c linux-2.6.29.6/arch/x86/kernel/traps.c 10907diff -urNp linux-2.6.30.4/arch/x86/kernel/traps.c linux-2.6.30.4/arch/x86/kernel/traps.c
10756--- linux-2.6.29.6/arch/x86/kernel/traps.c 2009-07-02 19:41:20.000000000 -0400 10908--- linux-2.6.30.4/arch/x86/kernel/traps.c 2009-07-24 17:47:51.000000000 -0400
10757+++ linux-2.6.29.6/arch/x86/kernel/traps.c 2009-07-23 17:34:32.077892704 -0400 10909+++ linux-2.6.30.4/arch/x86/kernel/traps.c 2009-07-30 09:48:09.961532028 -0400
10758@@ -71,14 +71,6 @@ asmlinkage int system_call(void); 10910@@ -70,14 +70,6 @@ asmlinkage int system_call(void);
10759 10911
10760 /* Do we ignore FPU interrupts ? */ 10912 /* Do we ignore FPU interrupts ? */
10761 char ignore_fpu_irq; 10913 char ignore_fpu_irq;
@@ -10770,7 +10922,7 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/traps.c linux-2.6.29.6/arch/x86/kernel
10770 #endif 10922 #endif
10771 10923
10772 DECLARE_BITMAP(used_vectors, NR_VECTORS); 10924 DECLARE_BITMAP(used_vectors, NR_VECTORS);
10773@@ -116,7 +108,7 @@ static inline void preempt_conditional_c 10925@@ -115,7 +107,7 @@ static inline void preempt_conditional_c
10774 static inline void 10926 static inline void
10775 die_if_kernel(const char *str, struct pt_regs *regs, long err) 10927 die_if_kernel(const char *str, struct pt_regs *regs, long err)
10776 { 10928 {
@@ -10778,17 +10930,8 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/traps.c linux-2.6.29.6/arch/x86/kernel
10778+ if (!user_mode(regs)) 10930+ if (!user_mode(regs))
10779 die(str, regs, err); 10931 die(str, regs, err);
10780 } 10932 }
10781 10933 #endif
10782@@ -133,7 +125,7 @@ static int lazy_iobitmap_copy(void) 10934@@ -127,7 +119,7 @@ do_trap(int trapnr, int signr, char *str
10783 int cpu;
10784
10785 cpu = get_cpu();
10786- tss = &per_cpu(init_tss, cpu);
10787+ tss = init_tss + cpu;
10788 thread = &current->thread;
10789
10790 if (tss->x86_tss.io_bitmap_base == INVALID_IO_BITMAP_OFFSET_LAZY &&
10791@@ -169,7 +161,7 @@ do_trap(int trapnr, int signr, char *str
10792 struct task_struct *tsk = current; 10935 struct task_struct *tsk = current;
10793 10936
10794 #ifdef CONFIG_X86_32 10937 #ifdef CONFIG_X86_32
@@ -10797,7 +10940,7 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/traps.c linux-2.6.29.6/arch/x86/kernel
10797 /* 10940 /*
10798 * traps 0, 1, 3, 4, and 5 should be forwarded to vm86. 10941 * traps 0, 1, 3, 4, and 5 should be forwarded to vm86.
10799 * On nmi (interrupt 2), do_trap should not be called. 10942 * On nmi (interrupt 2), do_trap should not be called.
10800@@ -180,7 +172,7 @@ do_trap(int trapnr, int signr, char *str 10943@@ -138,7 +130,7 @@ do_trap(int trapnr, int signr, char *str
10801 } 10944 }
10802 #endif 10945 #endif
10803 10946
@@ -10806,7 +10949,7 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/traps.c linux-2.6.29.6/arch/x86/kernel
10806 goto kernel_trap; 10949 goto kernel_trap;
10807 10950
10808 #ifdef CONFIG_X86_32 10951 #ifdef CONFIG_X86_32
10809@@ -203,7 +195,7 @@ trap_signal: 10952@@ -161,7 +153,7 @@ trap_signal:
10810 printk_ratelimit()) { 10953 printk_ratelimit()) {
10811 printk(KERN_INFO 10954 printk(KERN_INFO
10812 "%s[%d] trap %s ip:%lx sp:%lx error:%lx", 10955 "%s[%d] trap %s ip:%lx sp:%lx error:%lx",
@@ -10815,7 +10958,7 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/traps.c linux-2.6.29.6/arch/x86/kernel
10815 regs->ip, regs->sp, error_code); 10958 regs->ip, regs->sp, error_code);
10816 print_vma_addr(" in ", regs->ip); 10959 print_vma_addr(" in ", regs->ip);
10817 printk("\n"); 10960 printk("\n");
10818@@ -222,6 +214,12 @@ kernel_trap: 10961@@ -180,6 +172,12 @@ kernel_trap:
10819 tsk->thread.trap_no = trapnr; 10962 tsk->thread.trap_no = trapnr;
10820 die(str, regs, error_code); 10963 die(str, regs, error_code);
10821 } 10964 }
@@ -10828,10 +10971,10 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/traps.c linux-2.6.29.6/arch/x86/kernel
10828 return; 10971 return;
10829 10972
10830 #ifdef CONFIG_X86_32 10973 #ifdef CONFIG_X86_32
10831@@ -315,14 +313,30 @@ do_general_protection(struct pt_regs *re 10974@@ -268,14 +266,30 @@ do_general_protection(struct pt_regs *re
10832 return; 10975 conditional_sti(regs);
10833 }
10834 10976
10977 #ifdef CONFIG_X86_32
10835- if (regs->flags & X86_VM_MASK) 10978- if (regs->flags & X86_VM_MASK)
10836+ if (v8086_mode(regs)) 10979+ if (v8086_mode(regs))
10837 goto gp_in_vm86; 10980 goto gp_in_vm86;
@@ -10861,7 +11004,7 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/traps.c linux-2.6.29.6/arch/x86/kernel
10861 tsk->thread.error_code = error_code; 11004 tsk->thread.error_code = error_code;
10862 tsk->thread.trap_no = 13; 11005 tsk->thread.trap_no = 13;
10863 11006
10864@@ -355,6 +369,13 @@ gp_in_kernel: 11007@@ -308,6 +322,13 @@ gp_in_kernel:
10865 if (notify_die(DIE_GPF, "general protection fault", regs, 11008 if (notify_die(DIE_GPF, "general protection fault", regs,
10866 error_code, 13, SIGSEGV) == NOTIFY_STOP) 11009 error_code, 13, SIGSEGV) == NOTIFY_STOP)
10867 return; 11010 return;
@@ -10875,7 +11018,7 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/traps.c linux-2.6.29.6/arch/x86/kernel
10875 die("general protection fault", regs, error_code); 11018 die("general protection fault", regs, error_code);
10876 } 11019 }
10877 11020
10878@@ -601,7 +622,7 @@ dotraplinkage void __kprobes do_debug(st 11021@@ -554,7 +575,7 @@ dotraplinkage void __kprobes do_debug(st
10879 } 11022 }
10880 11023
10881 #ifdef CONFIG_X86_32 11024 #ifdef CONFIG_X86_32
@@ -10884,7 +11027,7 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/traps.c linux-2.6.29.6/arch/x86/kernel
10884 goto debug_vm86; 11027 goto debug_vm86;
10885 #endif 11028 #endif
10886 11029
10887@@ -613,7 +634,7 @@ dotraplinkage void __kprobes do_debug(st 11030@@ -566,7 +587,7 @@ dotraplinkage void __kprobes do_debug(st
10888 * kernel space (but re-enable TF when returning to user mode). 11031 * kernel space (but re-enable TF when returning to user mode).
10889 */ 11032 */
10890 if (condition & DR_STEP) { 11033 if (condition & DR_STEP) {
@@ -10893,7 +11036,7 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/traps.c linux-2.6.29.6/arch/x86/kernel
10893 goto clear_TF_reenable; 11036 goto clear_TF_reenable;
10894 } 11037 }
10895 11038
10896@@ -800,7 +821,7 @@ do_simd_coprocessor_error(struct pt_regs 11039@@ -753,7 +774,7 @@ do_simd_coprocessor_error(struct pt_regs
10897 * Handle strange cache flush from user space exception 11040 * Handle strange cache flush from user space exception
10898 * in all other cases. This is undocumented behaviour. 11041 * in all other cases. This is undocumented behaviour.
10899 */ 11042 */
@@ -10902,7 +11045,7 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/traps.c linux-2.6.29.6/arch/x86/kernel
10902 handle_vm86_fault((struct kernel_vm86_regs *)regs, error_code); 11045 handle_vm86_fault((struct kernel_vm86_regs *)regs, error_code);
10903 return; 11046 return;
10904 } 11047 }
10905@@ -829,19 +850,14 @@ do_spurious_interrupt_bug(struct pt_regs 11048@@ -782,19 +803,14 @@ do_spurious_interrupt_bug(struct pt_regs
10906 #ifdef CONFIG_X86_32 11049 #ifdef CONFIG_X86_32
10907 unsigned long patch_espfix_desc(unsigned long uesp, unsigned long kesp) 11050 unsigned long patch_espfix_desc(unsigned long uesp, unsigned long kesp)
10908 { 11051 {
@@ -10925,10 +11068,10 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/traps.c linux-2.6.29.6/arch/x86/kernel
10925 11068
10926 return new_kesp; 11069 return new_kesp;
10927 } 11070 }
10928diff -urNp linux-2.6.29.6/arch/x86/kernel/tsc.c linux-2.6.29.6/arch/x86/kernel/tsc.c 11071diff -urNp linux-2.6.30.4/arch/x86/kernel/tsc.c linux-2.6.30.4/arch/x86/kernel/tsc.c
10929--- linux-2.6.29.6/arch/x86/kernel/tsc.c 2009-07-02 19:41:20.000000000 -0400 11072--- linux-2.6.30.4/arch/x86/kernel/tsc.c 2009-07-24 17:47:51.000000000 -0400
10930+++ linux-2.6.29.6/arch/x86/kernel/tsc.c 2009-07-23 17:34:32.077892704 -0400 11073+++ linux-2.6.30.4/arch/x86/kernel/tsc.c 2009-07-30 09:48:09.961532028 -0400
10931@@ -765,7 +765,7 @@ static struct dmi_system_id __initdata b 11074@@ -772,7 +772,7 @@ static struct dmi_system_id __initdata b
10932 DMI_MATCH(DMI_BOARD_NAME, "2635FA0"), 11075 DMI_MATCH(DMI_BOARD_NAME, "2635FA0"),
10933 }, 11076 },
10934 }, 11077 },
@@ -10937,9 +11080,9 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/tsc.c linux-2.6.29.6/arch/x86/kernel/t
10937 }; 11080 };
10938 11081
10939 static void __init check_system_tsc_reliable(void) 11082 static void __init check_system_tsc_reliable(void)
10940diff -urNp linux-2.6.29.6/arch/x86/kernel/vm86_32.c linux-2.6.29.6/arch/x86/kernel/vm86_32.c 11083diff -urNp linux-2.6.30.4/arch/x86/kernel/vm86_32.c linux-2.6.30.4/arch/x86/kernel/vm86_32.c
10941--- linux-2.6.29.6/arch/x86/kernel/vm86_32.c 2009-07-02 19:41:20.000000000 -0400 11084--- linux-2.6.30.4/arch/x86/kernel/vm86_32.c 2009-07-24 17:47:51.000000000 -0400
10942+++ linux-2.6.29.6/arch/x86/kernel/vm86_32.c 2009-07-23 17:34:32.078863323 -0400 11085+++ linux-2.6.30.4/arch/x86/kernel/vm86_32.c 2009-07-30 09:48:09.961532028 -0400
10943@@ -148,7 +148,7 @@ struct pt_regs *save_v86_state(struct ke 11086@@ -148,7 +148,7 @@ struct pt_regs *save_v86_state(struct ke
10944 do_exit(SIGSEGV); 11087 do_exit(SIGSEGV);
10945 } 11088 }
@@ -10949,18 +11092,18 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/vm86_32.c linux-2.6.29.6/arch/x86/kern
10949 current->thread.sp0 = current->thread.saved_sp0; 11092 current->thread.sp0 = current->thread.saved_sp0;
10950 current->thread.sysenter_cs = __KERNEL_CS; 11093 current->thread.sysenter_cs = __KERNEL_CS;
10951 load_sp0(tss, &current->thread); 11094 load_sp0(tss, &current->thread);
10952@@ -325,7 +325,7 @@ static void do_sys_vm86(struct kernel_vm 11095@@ -324,7 +324,7 @@ static void do_sys_vm86(struct kernel_vm
10953 tsk->thread.saved_fs = info->regs32->fs; 11096 tsk->thread.saved_fs = info->regs32->fs;
10954 savesegment(gs, tsk->thread.saved_gs); 11097 tsk->thread.saved_gs = get_user_gs(info->regs32);
10955 11098
10956- tss = &per_cpu(init_tss, get_cpu()); 11099- tss = &per_cpu(init_tss, get_cpu());
10957+ tss = init_tss + get_cpu(); 11100+ tss = init_tss + get_cpu();
10958 tsk->thread.sp0 = (unsigned long) &info->VM86_TSS_ESP0; 11101 tsk->thread.sp0 = (unsigned long) &info->VM86_TSS_ESP0;
10959 if (cpu_has_sep) 11102 if (cpu_has_sep)
10960 tsk->thread.sysenter_cs = 0; 11103 tsk->thread.sysenter_cs = 0;
10961diff -urNp linux-2.6.29.6/arch/x86/kernel/vmi_32.c linux-2.6.29.6/arch/x86/kernel/vmi_32.c 11104diff -urNp linux-2.6.30.4/arch/x86/kernel/vmi_32.c linux-2.6.30.4/arch/x86/kernel/vmi_32.c
10962--- linux-2.6.29.6/arch/x86/kernel/vmi_32.c 2009-07-02 19:41:20.000000000 -0400 11105--- linux-2.6.30.4/arch/x86/kernel/vmi_32.c 2009-07-24 17:47:51.000000000 -0400
10963+++ linux-2.6.29.6/arch/x86/kernel/vmi_32.c 2009-07-23 17:34:32.078863323 -0400 11106+++ linux-2.6.30.4/arch/x86/kernel/vmi_32.c 2009-07-30 09:48:09.962543704 -0400
10964@@ -102,18 +102,43 @@ static unsigned patch_internal(int call, 11107@@ -102,18 +102,43 @@ static unsigned patch_internal(int call,
10965 { 11108 {
10966 u64 reloc; 11109 u64 reloc;
@@ -11005,7 +11148,7 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/vmi_32.c linux-2.6.29.6/arch/x86/kerne
11005 return 5; 11148 return 5;
11006 11149
11007 case VMI_RELOCATION_NOP: 11150 case VMI_RELOCATION_NOP:
11008@@ -409,13 +434,13 @@ static void vmi_set_pud(pud_t *pudp, pud 11151@@ -404,13 +429,13 @@ static void vmi_set_pud(pud_t *pudp, pud
11009 11152
11010 static void vmi_pte_clear(struct mm_struct *mm, unsigned long addr, pte_t *ptep) 11153 static void vmi_pte_clear(struct mm_struct *mm, unsigned long addr, pte_t *ptep)
11011 { 11154 {
@@ -11021,7 +11164,7 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/vmi_32.c linux-2.6.29.6/arch/x86/kerne
11021 vmi_ops.set_pte(pte, (pte_t *)pmd, VMI_PAGE_PD); 11164 vmi_ops.set_pte(pte, (pte_t *)pmd, VMI_PAGE_PD);
11022 } 11165 }
11023 #endif 11166 #endif
11024@@ -443,8 +468,8 @@ vmi_startup_ipi_hook(int phys_apicid, un 11167@@ -438,8 +463,8 @@ vmi_startup_ipi_hook(int phys_apicid, un
11025 ap.ss = __KERNEL_DS; 11168 ap.ss = __KERNEL_DS;
11026 ap.esp = (unsigned long) start_esp; 11169 ap.esp = (unsigned long) start_esp;
11027 11170
@@ -11032,7 +11175,7 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/vmi_32.c linux-2.6.29.6/arch/x86/kerne
11032 ap.fs = __KERNEL_PERCPU; 11175 ap.fs = __KERNEL_PERCPU;
11033 ap.gs = 0; 11176 ap.gs = 0;
11034 11177
11035@@ -639,12 +664,20 @@ static inline int __init activate_vmi(vo 11178@@ -634,12 +659,20 @@ static inline int __init activate_vmi(vo
11036 u64 reloc; 11179 u64 reloc;
11037 const struct vmi_relocation_info *rel = (struct vmi_relocation_info *)&reloc; 11180 const struct vmi_relocation_info *rel = (struct vmi_relocation_info *)&reloc;
11038 11181
@@ -11053,7 +11196,7 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/vmi_32.c linux-2.6.29.6/arch/x86/kerne
11053 pv_info.paravirt_enabled = 1; 11196 pv_info.paravirt_enabled = 1;
11054 pv_info.kernel_rpl = kernel_cs & SEGMENT_RPL_MASK; 11197 pv_info.kernel_rpl = kernel_cs & SEGMENT_RPL_MASK;
11055 pv_info.name = "vmi"; 11198 pv_info.name = "vmi";
11056@@ -835,6 +868,10 @@ static inline int __init activate_vmi(vo 11199@@ -830,6 +863,10 @@ static inline int __init activate_vmi(vo
11057 11200
11058 para_fill(pv_irq_ops.safe_halt, Halt); 11201 para_fill(pv_irq_ops.safe_halt, Halt);
11059 11202
@@ -11064,11 +11207,11 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/vmi_32.c linux-2.6.29.6/arch/x86/kerne
11064 /* 11207 /*
11065 * Alternative instruction rewriting doesn't happen soon enough 11208 * Alternative instruction rewriting doesn't happen soon enough
11066 * to convert VMI_IRET to a call instead of a jump; so we have 11209 * to convert VMI_IRET to a call instead of a jump; so we have
11067diff -urNp linux-2.6.29.6/arch/x86/kernel/vmlinux_32.lds.S linux-2.6.29.6/arch/x86/kernel/vmlinux_32.lds.S 11210diff -urNp linux-2.6.30.4/arch/x86/kernel/vmlinux_32.lds.S linux-2.6.30.4/arch/x86/kernel/vmlinux_32.lds.S
11068--- linux-2.6.29.6/arch/x86/kernel/vmlinux_32.lds.S 2009-07-02 19:41:20.000000000 -0400 11211--- linux-2.6.30.4/arch/x86/kernel/vmlinux_32.lds.S 2009-07-24 17:47:51.000000000 -0400
11069+++ linux-2.6.29.6/arch/x86/kernel/vmlinux_32.lds.S 2009-07-23 17:34:32.078863323 -0400 11212+++ linux-2.6.30.4/arch/x86/kernel/vmlinux_32.lds.S 2009-07-30 09:48:09.962543704 -0400
11070@@ -15,6 +15,20 @@ 11213@@ -15,6 +15,20 @@
11071 #include <asm/page.h> 11214 #include <asm/page_types.h>
11072 #include <asm/cache.h> 11215 #include <asm/cache.h>
11073 #include <asm/boot.h> 11216 #include <asm/boot.h>
11074+#include <asm/segment.h> 11217+#include <asm/segment.h>
@@ -11107,7 +11250,8 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/vmlinux_32.lds.S linux-2.6.29.6/arch/x
11107 { 11250 {
11108- . = LOAD_OFFSET + LOAD_PHYSICAL_ADDR; 11251- . = LOAD_OFFSET + LOAD_PHYSICAL_ADDR;
11109- phys_startup_32 = startup_32 - LOAD_OFFSET; 11252- phys_startup_32 = startup_32 - LOAD_OFFSET;
11110- 11253+ . = LOAD_OFFSET + ____LOAD_PHYSICAL_ADDR;
11254
11111- .text.head : AT(ADDR(.text.head) - LOAD_OFFSET) { 11255- .text.head : AT(ADDR(.text.head) - LOAD_OFFSET) {
11112- _text = .; /* Text and read-only data */ 11256- _text = .; /* Text and read-only data */
11113- *(.text.head) 11257- *(.text.head)
@@ -11128,8 +11272,7 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/vmlinux_32.lds.S linux-2.6.29.6/arch/x
11128- } :text = 0x9090 11272- } :text = 0x9090
11129- 11273-
11130- NOTES :text :note 11274- NOTES :text :note
11131+ . = LOAD_OFFSET + ____LOAD_PHYSICAL_ADDR; 11275-
11132
11133- . = ALIGN(16); /* Exception table */ 11276- . = ALIGN(16); /* Exception table */
11134- __ex_table : AT(ADDR(__ex_table) - LOAD_OFFSET) { 11277- __ex_table : AT(ADDR(__ex_table) - LOAD_OFFSET) {
11135- __start___ex_table = .; 11278- __start___ex_table = .;
@@ -11212,29 +11355,16 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/vmlinux_32.lds.S linux-2.6.29.6/arch/x
11212 .exit.data : AT(ADDR(.exit.data) - LOAD_OFFSET) { 11355 .exit.data : AT(ADDR(.exit.data) - LOAD_OFFSET) {
11213 EXIT_DATA 11356 EXIT_DATA
11214 } 11357 }
11215@@ -179,18 +123,139 @@ SECTIONS 11358@@ -178,12 +122,130 @@ SECTIONS
11359 __initramfs_end = .;
11216 } 11360 }
11217 #endif 11361 #endif
11362- PERCPU(PAGE_SIZE)
11218 . = ALIGN(PAGE_SIZE); 11363 . = ALIGN(PAGE_SIZE);
11219- .data.percpu : AT(ADDR(.data.percpu) - LOAD_OFFSET) { 11364+ PERCPU_VADDR(0, :percpu)
11220- __per_cpu_start = .; 11365+ . = ALIGN(PAGE_SIZE);
11221- *(.data.percpu.page_aligned) 11366+ /* freed after init ends here */
11222+ per_cpu_start = .; 11367+
11223+ .data.percpu (0) : AT(ADDR(.data.percpu) - LOAD_OFFSET + per_cpu_start) {
11224+ __per_cpu_start = . + per_cpu_start;
11225+ LONG(0)
11226 *(.data.percpu)
11227 *(.data.percpu.shared_aligned)
11228- __per_cpu_end = .;
11229- }
11230+ . = ALIGN(PAGE_SIZE);
11231+ *(.data.percpu.page_aligned)
11232+ __per_cpu_end = . + per_cpu_start;
11233+ } :percpu
11234+ . += per_cpu_start;
11235 . = ALIGN(PAGE_SIZE);
11236 /* freed after init ends here */
11237
11238+ . = ALIGN(PAGE_SIZE); /* Init code and data */ 11368+ . = ALIGN(PAGE_SIZE); /* Init code and data */
11239+ .init.text (. - __KERNEL_TEXT_OFFSET) : AT(ADDR(.init.text) - LOAD_OFFSET + __KERNEL_TEXT_OFFSET) { 11369+ .init.text (. - __KERNEL_TEXT_OFFSET) : AT(ADDR(.init.text) - LOAD_OFFSET + __KERNEL_TEXT_OFFSET) {
11240+ _sinittext = .; 11370+ _sinittext = .;
@@ -11253,8 +11383,8 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/vmlinux_32.lds.S linux-2.6.29.6/arch/x
11253+ . = ALIGN(2*PMD_SIZE) - 1; 11383+ . = ALIGN(2*PMD_SIZE) - 1;
11254+ } 11384+ }
11255+ 11385+
11256+ /* freed after init ends here */ 11386 /* freed after init ends here */
11257+ 11387
11258+ .text.head : AT(ADDR(.text.head) - LOAD_OFFSET + __KERNEL_TEXT_OFFSET) { 11388+ .text.head : AT(ADDR(.text.head) - LOAD_OFFSET + __KERNEL_TEXT_OFFSET) {
11259+ __init_end = . + __KERNEL_TEXT_OFFSET; 11389+ __init_end = . + __KERNEL_TEXT_OFFSET;
11260+ KERNEL_TEXT_OFFSET = . + __KERNEL_TEXT_OFFSET; 11390+ KERNEL_TEXT_OFFSET = . + __KERNEL_TEXT_OFFSET;
@@ -11358,16 +11488,15 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/vmlinux_32.lds.S linux-2.6.29.6/arch/x
11358 __bss_start = .; /* BSS */ 11488 __bss_start = .; /* BSS */
11359 *(.bss.page_aligned) 11489 *(.bss.page_aligned)
11360 *(.bss) 11490 *(.bss)
11361diff -urNp linux-2.6.29.6/arch/x86/kernel/vmlinux_64.lds.S linux-2.6.29.6/arch/x86/kernel/vmlinux_64.lds.S 11491diff -urNp linux-2.6.30.4/arch/x86/kernel/vmlinux_64.lds.S linux-2.6.30.4/arch/x86/kernel/vmlinux_64.lds.S
11362--- linux-2.6.29.6/arch/x86/kernel/vmlinux_64.lds.S 2009-07-02 19:41:20.000000000 -0400 11492--- linux-2.6.30.4/arch/x86/kernel/vmlinux_64.lds.S 2009-07-24 17:47:51.000000000 -0400
11363+++ linux-2.6.29.6/arch/x86/kernel/vmlinux_64.lds.S 2009-07-23 17:34:37.458887026 -0400 11493+++ linux-2.6.30.4/arch/x86/kernel/vmlinux_64.lds.S 2009-08-01 08:46:06.438873305 -0400
11364@@ -12,12 +12,12 @@ 11494@@ -13,11 +13,11 @@
11365 OUTPUT_FORMAT("elf64-x86-64", "elf64-x86-64", "elf64-x86-64") 11495 OUTPUT_FORMAT("elf64-x86-64", "elf64-x86-64", "elf64-x86-64")
11366 OUTPUT_ARCH(i386:x86-64) 11496 OUTPUT_ARCH(i386:x86-64)
11367 ENTRY(phys_startup_64) 11497 ENTRY(phys_startup_64)
11368-jiffies_64 = jiffies; 11498-jiffies_64 = jiffies;
11369+jiffies = jiffies_64; 11499+jiffies = jiffies_64;
11370 _proxy_pda = 1;
11371 PHDRS { 11500 PHDRS {
11372 text PT_LOAD FLAGS(5); /* R_E */ 11501 text PT_LOAD FLAGS(5); /* R_E */
11373- data PT_LOAD FLAGS(7); /* RWE */ 11502- data PT_LOAD FLAGS(7); /* RWE */
@@ -11375,9 +11504,9 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/vmlinux_64.lds.S linux-2.6.29.6/arch/x
11375+ data PT_LOAD FLAGS(6); /* RW_ */ 11504+ data PT_LOAD FLAGS(6); /* RW_ */
11376+ user PT_LOAD FLAGS(5); /* R_E */ 11505+ user PT_LOAD FLAGS(5); /* R_E */
11377 data.init PT_LOAD FLAGS(7); /* RWE */ 11506 data.init PT_LOAD FLAGS(7); /* RWE */
11378 note PT_NOTE FLAGS(0); /* ___ */ 11507 #ifdef CONFIG_SMP
11379 } 11508 percpu PT_LOAD FLAGS(7); /* RWE */
11380@@ -50,17 +50,20 @@ SECTIONS 11509@@ -54,14 +54,18 @@ SECTIONS
11381 __stop___ex_table = .; 11510 __stop___ex_table = .;
11382 } :text = 0x9090 11511 } :text = 0x9090
11383 11512
@@ -11390,36 +11519,36 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/vmlinux_64.lds.S linux-2.6.29.6/arch/x
11390 . = ALIGN(PAGE_SIZE); /* Align data segment to page size boundary */ 11519 . = ALIGN(PAGE_SIZE); /* Align data segment to page size boundary */
11391+#endif 11520+#endif
11392 /* Data */ 11521 /* Data */
11393+ _data = .;
11394 .data : AT(ADDR(.data) - LOAD_OFFSET) { 11522 .data : AT(ADDR(.data) - LOAD_OFFSET) {
11523+ _data = .;
11395 DATA_DATA 11524 DATA_DATA
11396 CONSTRUCTORS 11525 CONSTRUCTORS
11526- _edata = .; /* End of data section */
11397 } :data 11527 } :data
11398 11528
11399- _edata = .; /* End of data section */ 11529
11400- 11530@@ -75,9 +79,28 @@ SECTIONS
11401 . = ALIGN(PAGE_SIZE);
11402 . = ALIGN(CONFIG_X86_L1_CACHE_BYTES);
11403 .data.cacheline_aligned : AT(ADDR(.data.cacheline_aligned) - LOAD_OFFSET) {
11404@@ -71,9 +74,25 @@ SECTIONS
11405 *(.data.read_mostly) 11531 *(.data.read_mostly)
11406 } 11532 }
11407 11533
11408+ . = ALIGN(THREAD_SIZE); /* init_task */
11409+ .data.init_task : AT(ADDR(.data.init_task) - LOAD_OFFSET) { 11534+ .data.init_task : AT(ADDR(.data.init_task) - LOAD_OFFSET) {
11535+ . = ALIGN(THREAD_SIZE); /* init_task */
11410+ *(.data.init_task) 11536+ *(.data.init_task)
11411+ }:data 11537+ }
11412+ 11538+
11413+ . = ALIGN(PAGE_SIZE);
11414+ .data.page_aligned : AT(ADDR(.data.page_aligned) - LOAD_OFFSET) { 11539+ .data.page_aligned : AT(ADDR(.data.page_aligned) - LOAD_OFFSET) {
11540+ . = ALIGN(PAGE_SIZE);
11415+ *(.data.page_aligned) 11541+ *(.data.page_aligned)
11416+ } 11542+ }
11417+ 11543+
11418+ . = ALIGN(PAGE_SIZE); 11544+ .data_nosave : AT(ADDR(.data_nosave) - LOAD_OFFSET) {
11419+ __nosave_begin = .; 11545+ . = ALIGN(PAGE_SIZE);
11420+ .data_nosave : AT(ADDR(.data_nosave) - LOAD_OFFSET) { *(.data.nosave) } 11546+ __nosave_begin = .;
11421+ . = ALIGN(PAGE_SIZE); 11547+ *(.data.nosave)
11422+ __nosave_end = .; 11548+ . = ALIGN(PAGE_SIZE);
11549+ __nosave_end = .;
11550+ _edata = .; /* End of data section */
11551+ }
11423+ 11552+
11424 #define VSYSCALL_ADDR (-10*1024*1024) 11553 #define VSYSCALL_ADDR (-10*1024*1024)
11425-#define VSYSCALL_PHYS_ADDR ((LOADADDR(.data.read_mostly) + SIZEOF(.data.read_mostly) + 4095) & ~(4095)) 11554-#define VSYSCALL_PHYS_ADDR ((LOADADDR(.data.read_mostly) + SIZEOF(.data.read_mostly) + 4095) & ~(4095))
@@ -11429,7 +11558,7 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/vmlinux_64.lds.S linux-2.6.29.6/arch/x
11429 11558
11430 #define VLOAD_OFFSET (VSYSCALL_ADDR - VSYSCALL_PHYS_ADDR) 11559 #define VLOAD_OFFSET (VSYSCALL_ADDR - VSYSCALL_PHYS_ADDR)
11431 #define VLOAD(x) (ADDR(x) - VLOAD_OFFSET) 11560 #define VLOAD(x) (ADDR(x) - VLOAD_OFFSET)
11432@@ -104,10 +123,6 @@ SECTIONS 11561@@ -108,10 +131,6 @@ SECTIONS
11433 .vgetcpu_mode : AT(VLOAD(.vgetcpu_mode)) { *(.vgetcpu_mode) } 11562 .vgetcpu_mode : AT(VLOAD(.vgetcpu_mode)) { *(.vgetcpu_mode) }
11434 vgetcpu_mode = VVIRT(.vgetcpu_mode); 11563 vgetcpu_mode = VVIRT(.vgetcpu_mode);
11435 11564
@@ -11440,53 +11569,73 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/vmlinux_64.lds.S linux-2.6.29.6/arch/x
11440 .vsyscall_3 ADDR(.vsyscall_0) + 3072: AT(VLOAD(.vsyscall_3)) 11569 .vsyscall_3 ADDR(.vsyscall_0) + 3072: AT(VLOAD(.vsyscall_3))
11441 { *(.vsyscall_3) } 11570 { *(.vsyscall_3) }
11442 11571
11443@@ -121,15 +136,7 @@ SECTIONS 11572@@ -125,16 +144,6 @@ SECTIONS
11444 #undef VVIRT_OFFSET 11573 #undef VVIRT_OFFSET
11445 #undef VVIRT 11574 #undef VVIRT
11446 11575
11447- . = ALIGN(THREAD_SIZE); /* init_task */
11448- .data.init_task : AT(ADDR(.data.init_task) - LOAD_OFFSET) { 11576- .data.init_task : AT(ADDR(.data.init_task) - LOAD_OFFSET) {
11577- . = ALIGN(THREAD_SIZE); /* init_task */
11449- *(.data.init_task) 11578- *(.data.init_task)
11450- }:data.init 11579- }:data.init
11451- 11580-
11452- . = ALIGN(PAGE_SIZE);
11453- .data.page_aligned : AT(ADDR(.data.page_aligned) - LOAD_OFFSET) { 11581- .data.page_aligned : AT(ADDR(.data.page_aligned) - LOAD_OFFSET) {
11582- . = ALIGN(PAGE_SIZE);
11454- *(.data.page_aligned) 11583- *(.data.page_aligned)
11455- } 11584- }
11456+ _edata = .; /* End of data section */ 11585-
11457
11458 /* might get freed after init */
11459 . = ALIGN(PAGE_SIZE);
11460@@ -137,7 +144,7 @@ SECTIONS
11461 __smp_locks = .;
11462 .smp_locks : AT(ADDR(.smp_locks) - LOAD_OFFSET) { 11586 .smp_locks : AT(ADDR(.smp_locks) - LOAD_OFFSET) {
11463 *(.smp_locks) 11587 /* might get freed after init */
11588 . = ALIGN(PAGE_SIZE);
11589@@ -144,7 +153,7 @@ SECTIONS
11590 __smp_locks_end = .;
11591 . = ALIGN(PAGE_SIZE);
11592 __smp_alt_end = .;
11464- } 11593- }
11465+ }:data.init 11594+ }:data.init
11466 __smp_locks_end = .; 11595
11467 . = ALIGN(PAGE_SIZE); 11596 . = ALIGN(PAGE_SIZE); /* Init code and data */
11468 __smp_alt_end = .; 11597 __init_begin = .; /* paired with __init_end */
11469@@ -213,16 +220,11 @@ SECTIONS 11598@@ -233,27 +242,20 @@ SECTIONS
11470 . = ALIGN(PAGE_SIZE); 11599 . = ALIGN(PAGE_SIZE);
11471 __init_end = .; 11600 __init_end = .;
11472 11601
11473- . = ALIGN(PAGE_SIZE); 11602- .data_nosave : AT(ADDR(.data_nosave) - LOAD_OFFSET) {
11474- __nosave_begin = .; 11603- . = ALIGN(PAGE_SIZE);
11475- .data_nosave : AT(ADDR(.data_nosave) - LOAD_OFFSET) { *(.data.nosave) } 11604- __nosave_begin = .;
11476- . = ALIGN(PAGE_SIZE); 11605- *(.data.nosave)
11477- __nosave_end = .; 11606- . = ALIGN(PAGE_SIZE);
11607- __nosave_end = .;
11608- } :data.init2 /* use another section data.init2, see PERCPU_VADDR() above */
11478- 11609-
11479 __bss_start = .; /* BSS */
11480 .bss : AT(ADDR(.bss) - LOAD_OFFSET) { 11610 .bss : AT(ADDR(.bss) - LOAD_OFFSET) {
11611 . = ALIGN(PAGE_SIZE);
11612 __bss_start = .; /* BSS */
11481 *(.bss.page_aligned) 11613 *(.bss.page_aligned)
11482 *(.bss) 11614 *(.bss)
11615 __bss_stop = .;
11616- }
11617+ } :data.init2
11618
11619 .brk : AT(ADDR(.brk) - LOAD_OFFSET) {
11620 . = ALIGN(PAGE_SIZE);
11621 __brk_base = . ;
11622 . += 64 * 1024 ; /* 64k alignment slop space */
11623 *(.brk_reservation) /* areas brk users have reserved */
11483+ . = ALIGN(2*1024*1024); 11624+ . = ALIGN(2*1024*1024);
11484 } 11625 __brk_limit = . ;
11485 __bss_stop = .; 11626 }
11486 11627
11487diff -urNp linux-2.6.29.6/arch/x86/kernel/vsyscall_64.c linux-2.6.29.6/arch/x86/kernel/vsyscall_64.c 11628@@ -276,7 +278,6 @@ SECTIONS
11488--- linux-2.6.29.6/arch/x86/kernel/vsyscall_64.c 2009-07-02 19:41:20.000000000 -0400 11629 * for the boot processor.
11489+++ linux-2.6.29.6/arch/x86/kernel/vsyscall_64.c 2009-07-23 17:34:32.080014276 -0400 11630 */
11631 #define INIT_PER_CPU(x) init_per_cpu__##x = per_cpu__##x + __per_cpu_load
11632-INIT_PER_CPU(gdt_page);
11633 INIT_PER_CPU(irq_stack_union);
11634
11635 /*
11636diff -urNp linux-2.6.30.4/arch/x86/kernel/vsyscall_64.c linux-2.6.30.4/arch/x86/kernel/vsyscall_64.c
11637--- linux-2.6.30.4/arch/x86/kernel/vsyscall_64.c 2009-07-24 17:47:51.000000000 -0400
11638+++ linux-2.6.30.4/arch/x86/kernel/vsyscall_64.c 2009-07-30 09:48:09.963690654 -0400
11490@@ -79,6 +79,7 @@ void update_vsyscall(struct timespec *wa 11639@@ -79,6 +79,7 @@ void update_vsyscall(struct timespec *wa
11491 11640
11492 write_seqlock_irqsave(&vsyscall_gtod_data.lock, flags); 11641 write_seqlock_irqsave(&vsyscall_gtod_data.lock, flags);
@@ -11495,7 +11644,7 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/vsyscall_64.c linux-2.6.29.6/arch/x86/
11495 vsyscall_gtod_data.clock.vread = clock->vread; 11644 vsyscall_gtod_data.clock.vread = clock->vread;
11496 vsyscall_gtod_data.clock.cycle_last = clock->cycle_last; 11645 vsyscall_gtod_data.clock.cycle_last = clock->cycle_last;
11497 vsyscall_gtod_data.clock.mask = clock->mask; 11646 vsyscall_gtod_data.clock.mask = clock->mask;
11498@@ -209,7 +210,7 @@ vgetcpu(unsigned *cpu, unsigned *node, s 11647@@ -201,7 +202,7 @@ vgetcpu(unsigned *cpu, unsigned *node, s
11499 We do this here because otherwise user space would do it on 11648 We do this here because otherwise user space would do it on
11500 its own in a likely inferior way (no access to jiffies). 11649 its own in a likely inferior way (no access to jiffies).
11501 If you don't like it pass NULL. */ 11650 If you don't like it pass NULL. */
@@ -11504,7 +11653,7 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/vsyscall_64.c linux-2.6.29.6/arch/x86/
11504 p = tcache->blob[1]; 11653 p = tcache->blob[1];
11505 } else if (__vgetcpu_mode == VGETCPU_RDTSCP) { 11654 } else if (__vgetcpu_mode == VGETCPU_RDTSCP) {
11506 /* Load per CPU data from RDTSCP */ 11655 /* Load per CPU data from RDTSCP */
11507@@ -248,13 +249,13 @@ static ctl_table kernel_table2[] = { 11656@@ -240,13 +241,13 @@ static ctl_table kernel_table2[] = {
11508 .data = &vsyscall_gtod_data.sysctl_enabled, .maxlen = sizeof(int), 11657 .data = &vsyscall_gtod_data.sysctl_enabled, .maxlen = sizeof(int),
11509 .mode = 0644, 11658 .mode = 0644,
11510 .proc_handler = vsyscall_sysctl_change }, 11659 .proc_handler = vsyscall_sysctl_change },
@@ -11520,9 +11669,9 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/vsyscall_64.c linux-2.6.29.6/arch/x86/
11520 }; 11669 };
11521 #endif 11670 #endif
11522 11671
11523diff -urNp linux-2.6.29.6/arch/x86/kernel/x8664_ksyms_64.c linux-2.6.29.6/arch/x86/kernel/x8664_ksyms_64.c 11672diff -urNp linux-2.6.30.4/arch/x86/kernel/x8664_ksyms_64.c linux-2.6.30.4/arch/x86/kernel/x8664_ksyms_64.c
11524--- linux-2.6.29.6/arch/x86/kernel/x8664_ksyms_64.c 2009-07-02 19:41:20.000000000 -0400 11673--- linux-2.6.30.4/arch/x86/kernel/x8664_ksyms_64.c 2009-07-24 17:47:51.000000000 -0400
11525+++ linux-2.6.29.6/arch/x86/kernel/x8664_ksyms_64.c 2009-07-23 17:34:32.080014276 -0400 11674+++ linux-2.6.30.4/arch/x86/kernel/x8664_ksyms_64.c 2009-07-30 09:48:09.963690654 -0400
11526@@ -30,8 +30,6 @@ EXPORT_SYMBOL(__put_user_8); 11675@@ -30,8 +30,6 @@ EXPORT_SYMBOL(__put_user_8);
11527 11676
11528 EXPORT_SYMBOL(copy_user_generic); 11677 EXPORT_SYMBOL(copy_user_generic);
@@ -11532,10 +11681,10 @@ diff -urNp linux-2.6.29.6/arch/x86/kernel/x8664_ksyms_64.c linux-2.6.29.6/arch/x
11532 EXPORT_SYMBOL(__copy_from_user_inatomic); 11681 EXPORT_SYMBOL(__copy_from_user_inatomic);
11533 11682
11534 EXPORT_SYMBOL(copy_page); 11683 EXPORT_SYMBOL(copy_page);
11535diff -urNp linux-2.6.29.6/arch/x86/kvm/svm.c linux-2.6.29.6/arch/x86/kvm/svm.c 11684diff -urNp linux-2.6.30.4/arch/x86/kvm/svm.c linux-2.6.30.4/arch/x86/kvm/svm.c
11536--- linux-2.6.29.6/arch/x86/kvm/svm.c 2009-07-02 19:41:20.000000000 -0400 11685--- linux-2.6.30.4/arch/x86/kvm/svm.c 2009-07-24 17:47:51.000000000 -0400
11537+++ linux-2.6.29.6/arch/x86/kvm/svm.c 2009-07-23 17:34:32.080014276 -0400 11686+++ linux-2.6.30.4/arch/x86/kvm/svm.c 2009-07-30 09:48:09.964534231 -0400
11538@@ -1525,7 +1525,19 @@ static void reload_tss(struct kvm_vcpu * 11687@@ -2226,7 +2226,19 @@ static void reload_tss(struct kvm_vcpu *
11539 int cpu = raw_smp_processor_id(); 11688 int cpu = raw_smp_processor_id();
11540 11689
11541 struct svm_cpu_data *svm_data = per_cpu(svm_data, cpu); 11690 struct svm_cpu_data *svm_data = per_cpu(svm_data, cpu);
@@ -11555,7 +11704,7 @@ diff -urNp linux-2.6.29.6/arch/x86/kvm/svm.c linux-2.6.29.6/arch/x86/kvm/svm.c
11555 load_TR_desc(); 11704 load_TR_desc();
11556 } 11705 }
11557 11706
11558@@ -1936,7 +1948,7 @@ static int svm_get_mt_mask_shift(void) 11707@@ -2622,7 +2634,7 @@ static int svm_get_mt_mask_shift(void)
11559 return 0; 11708 return 0;
11560 } 11709 }
11561 11710
@@ -11564,10 +11713,10 @@ diff -urNp linux-2.6.29.6/arch/x86/kvm/svm.c linux-2.6.29.6/arch/x86/kvm/svm.c
11564 .cpu_has_kvm_support = has_svm, 11713 .cpu_has_kvm_support = has_svm,
11565 .disabled_by_bios = is_disabled, 11714 .disabled_by_bios = is_disabled,
11566 .hardware_setup = svm_hardware_setup, 11715 .hardware_setup = svm_hardware_setup,
11567diff -urNp linux-2.6.29.6/arch/x86/kvm/vmx.c linux-2.6.29.6/arch/x86/kvm/vmx.c 11716diff -urNp linux-2.6.30.4/arch/x86/kvm/vmx.c linux-2.6.30.4/arch/x86/kvm/vmx.c
11568--- linux-2.6.29.6/arch/x86/kvm/vmx.c 2009-07-02 19:41:20.000000000 -0400 11717--- linux-2.6.30.4/arch/x86/kvm/vmx.c 2009-07-24 17:47:51.000000000 -0400
11569+++ linux-2.6.29.6/arch/x86/kvm/vmx.c 2009-07-23 17:34:32.080863524 -0400 11718+++ linux-2.6.30.4/arch/x86/kvm/vmx.c 2009-07-30 09:48:09.965634801 -0400
11570@@ -497,9 +497,23 @@ static void reload_tss(void) 11719@@ -506,9 +506,23 @@ static void reload_tss(void)
11571 struct descriptor_table gdt; 11720 struct descriptor_table gdt;
11572 struct desc_struct *descs; 11721 struct desc_struct *descs;
11573 11722
@@ -11591,7 +11740,7 @@ diff -urNp linux-2.6.29.6/arch/x86/kvm/vmx.c linux-2.6.29.6/arch/x86/kvm/vmx.c
11591 load_TR_desc(); 11740 load_TR_desc();
11592 } 11741 }
11593 11742
11594@@ -2182,7 +2196,7 @@ static int vmx_vcpu_setup(struct vcpu_vm 11743@@ -2192,7 +2206,7 @@ static int vmx_vcpu_setup(struct vcpu_vm
11595 vmcs_writel(HOST_IDTR_BASE, dt.base); /* 22.2.4 */ 11744 vmcs_writel(HOST_IDTR_BASE, dt.base); /* 22.2.4 */
11596 11745
11597 asm("mov $.Lkvm_vmx_return, %0" : "=r"(kvm_vmx_return)); 11746 asm("mov $.Lkvm_vmx_return, %0" : "=r"(kvm_vmx_return));
@@ -11600,7 +11749,7 @@ diff -urNp linux-2.6.29.6/arch/x86/kvm/vmx.c linux-2.6.29.6/arch/x86/kvm/vmx.c
11600 vmcs_write32(VM_EXIT_MSR_STORE_COUNT, 0); 11749 vmcs_write32(VM_EXIT_MSR_STORE_COUNT, 0);
11601 vmcs_write32(VM_EXIT_MSR_LOAD_COUNT, 0); 11750 vmcs_write32(VM_EXIT_MSR_LOAD_COUNT, 0);
11602 vmcs_write32(VM_ENTRY_MSR_LOAD_COUNT, 0); 11751 vmcs_write32(VM_ENTRY_MSR_LOAD_COUNT, 0);
11603@@ -3379,6 +3393,12 @@ static void vmx_vcpu_run(struct kvm_vcpu 11752@@ -3494,6 +3508,12 @@ static void vmx_vcpu_run(struct kvm_vcpu
11604 "jmp .Lkvm_vmx_return \n\t" 11753 "jmp .Lkvm_vmx_return \n\t"
11605 ".Llaunched: " __ex(ASM_VMX_VMRESUME) "\n\t" 11754 ".Llaunched: " __ex(ASM_VMX_VMRESUME) "\n\t"
11606 ".Lkvm_vmx_return: " 11755 ".Lkvm_vmx_return: "
@@ -11613,7 +11762,7 @@ diff -urNp linux-2.6.29.6/arch/x86/kvm/vmx.c linux-2.6.29.6/arch/x86/kvm/vmx.c
11613 /* Save guest registers, load host registers, keep flags */ 11762 /* Save guest registers, load host registers, keep flags */
11614 "xchg %0, (%%"R"sp) \n\t" 11763 "xchg %0, (%%"R"sp) \n\t"
11615 "mov %%"R"ax, %c[rax](%0) \n\t" 11764 "mov %%"R"ax, %c[rax](%0) \n\t"
11616@@ -3425,6 +3445,11 @@ static void vmx_vcpu_run(struct kvm_vcpu 11765@@ -3540,6 +3560,11 @@ static void vmx_vcpu_run(struct kvm_vcpu
11617 [r15]"i"(offsetof(struct vcpu_vmx, vcpu.arch.regs[VCPU_REGS_R15])), 11766 [r15]"i"(offsetof(struct vcpu_vmx, vcpu.arch.regs[VCPU_REGS_R15])),
11618 #endif 11767 #endif
11619 [cr2]"i"(offsetof(struct vcpu_vmx, vcpu.arch.cr2)) 11768 [cr2]"i"(offsetof(struct vcpu_vmx, vcpu.arch.cr2))
@@ -11625,7 +11774,7 @@ diff -urNp linux-2.6.29.6/arch/x86/kvm/vmx.c linux-2.6.29.6/arch/x86/kvm/vmx.c
11625 : "cc", "memory" 11774 : "cc", "memory"
11626 , R"bx", R"di", R"si" 11775 , R"bx", R"di", R"si"
11627 #ifdef CONFIG_X86_64 11776 #ifdef CONFIG_X86_64
11628@@ -3441,7 +3466,7 @@ static void vmx_vcpu_run(struct kvm_vcpu 11777@@ -3558,7 +3583,7 @@ static void vmx_vcpu_run(struct kvm_vcpu
11629 11778
11630 vmx_update_window_states(vcpu); 11779 vmx_update_window_states(vcpu);
11631 11780
@@ -11634,7 +11783,7 @@ diff -urNp linux-2.6.29.6/arch/x86/kvm/vmx.c linux-2.6.29.6/arch/x86/kvm/vmx.c
11634 vmx->launched = 1; 11783 vmx->launched = 1;
11635 11784
11636 intr_info = vmcs_read32(VM_EXIT_INTR_INFO); 11785 intr_info = vmcs_read32(VM_EXIT_INTR_INFO);
11637@@ -3570,7 +3595,7 @@ static int vmx_get_mt_mask_shift(void) 11786@@ -3694,7 +3719,7 @@ static int vmx_get_mt_mask_shift(void)
11638 return VMX_EPT_MT_EPTE_SHIFT; 11787 return VMX_EPT_MT_EPTE_SHIFT;
11639 } 11788 }
11640 11789
@@ -11643,12 +11792,12 @@ diff -urNp linux-2.6.29.6/arch/x86/kvm/vmx.c linux-2.6.29.6/arch/x86/kvm/vmx.c
11643 .cpu_has_kvm_support = cpu_has_kvm_support, 11792 .cpu_has_kvm_support = cpu_has_kvm_support,
11644 .disabled_by_bios = vmx_disabled_by_bios, 11793 .disabled_by_bios = vmx_disabled_by_bios,
11645 .hardware_setup = hardware_setup, 11794 .hardware_setup = hardware_setup,
11646diff -urNp linux-2.6.29.6/arch/x86/kvm/x86.c linux-2.6.29.6/arch/x86/kvm/x86.c 11795diff -urNp linux-2.6.30.4/arch/x86/kvm/x86.c linux-2.6.30.4/arch/x86/kvm/x86.c
11647--- linux-2.6.29.6/arch/x86/kvm/x86.c 2009-07-02 19:41:20.000000000 -0400 11796--- linux-2.6.30.4/arch/x86/kvm/x86.c 2009-07-24 17:47:51.000000000 -0400
11648+++ linux-2.6.29.6/arch/x86/kvm/x86.c 2009-07-23 17:34:32.081957601 -0400 11797+++ linux-2.6.30.4/arch/x86/kvm/x86.c 2009-07-30 09:48:09.966523935 -0400
11649@@ -70,44 +70,44 @@ static u64 __read_mostly efer_reserved_b 11798@@ -73,44 +73,44 @@ static int kvm_dev_ioctl_get_supported_c
11650 static int kvm_dev_ioctl_get_supported_cpuid(struct kvm_cpuid2 *cpuid, 11799 struct kvm_cpuid_entry2 *kvm_find_cpuid_entry(struct kvm_vcpu *vcpu,
11651 struct kvm_cpuid_entry2 __user *entries); 11800 u32 function, u32 index);
11652 11801
11653-struct kvm_x86_ops *kvm_x86_ops; 11802-struct kvm_x86_ops *kvm_x86_ops;
11654+const struct kvm_x86_ops *kvm_x86_ops; 11803+const struct kvm_x86_ops *kvm_x86_ops;
@@ -11726,7 +11875,7 @@ diff -urNp linux-2.6.29.6/arch/x86/kvm/x86.c linux-2.6.29.6/arch/x86/kvm/x86.c
11726 { NULL } 11875 { NULL }
11727 }; 11876 };
11728 11877
11729@@ -1372,7 +1372,7 @@ static int kvm_vcpu_ioctl_set_lapic(stru 11878@@ -1417,7 +1417,7 @@ static int kvm_vcpu_ioctl_set_lapic(stru
11730 static int kvm_vcpu_ioctl_interrupt(struct kvm_vcpu *vcpu, 11879 static int kvm_vcpu_ioctl_interrupt(struct kvm_vcpu *vcpu,
11731 struct kvm_interrupt *irq) 11880 struct kvm_interrupt *irq)
11732 { 11881 {
@@ -11735,22 +11884,33 @@ diff -urNp linux-2.6.29.6/arch/x86/kvm/x86.c linux-2.6.29.6/arch/x86/kvm/x86.c
11735 return -EINVAL; 11884 return -EINVAL;
11736 if (irqchip_in_kernel(vcpu->kvm)) 11885 if (irqchip_in_kernel(vcpu->kvm))
11737 return -ENXIO; 11886 return -ENXIO;
11738@@ -2591,10 +2591,10 @@ int kvm_emulate_pio_string(struct kvm_vc 11887@@ -2731,10 +2731,10 @@ static struct notifier_block kvmclock_cp
11739 } 11888 .notifier_call = kvmclock_cpufreq_notifier
11740 EXPORT_SYMBOL_GPL(kvm_emulate_pio_string); 11889 };
11741 11890
11742-int kvm_arch_init(void *opaque) 11891-int kvm_arch_init(void *opaque)
11743+int kvm_arch_init(const void *opaque) 11892+int kvm_arch_init(const void *opaque)
11744 { 11893 {
11745 int r; 11894 int r, cpu;
11746- struct kvm_x86_ops *ops = (struct kvm_x86_ops *)opaque; 11895- struct kvm_x86_ops *ops = (struct kvm_x86_ops *)opaque;
11747+ const struct kvm_x86_ops *ops = (const struct kvm_x86_ops *)opaque; 11896+ const struct kvm_x86_ops *ops = (const struct kvm_x86_ops *)opaque;
11748 11897
11749 if (kvm_x86_ops) { 11898 if (kvm_x86_ops) {
11750 printk(KERN_ERR "kvm: already loaded the other module\n"); 11899 printk(KERN_ERR "kvm: already loaded the other module\n");
11751diff -urNp linux-2.6.29.6/arch/x86/lib/checksum_32.S linux-2.6.29.6/arch/x86/lib/checksum_32.S 11900diff -urNp linux-2.6.30.4/arch/x86/lguest/Kconfig linux-2.6.30.4/arch/x86/lguest/Kconfig
11752--- linux-2.6.29.6/arch/x86/lib/checksum_32.S 2009-07-02 19:41:20.000000000 -0400 11901--- linux-2.6.30.4/arch/x86/lguest/Kconfig 2009-07-24 17:47:51.000000000 -0400
11753+++ linux-2.6.29.6/arch/x86/lib/checksum_32.S 2009-07-23 17:34:32.081957601 -0400 11902+++ linux-2.6.30.4/arch/x86/lguest/Kconfig 2009-08-02 09:47:36.165378342 -0400
11903@@ -3,6 +3,7 @@ config LGUEST_GUEST
11904 select PARAVIRT
11905 depends on X86_32
11906 depends on !X86_PAE
11907+ depends on !PAX_KERNEXEC
11908 select VIRTIO
11909 select VIRTIO_RING
11910 select VIRTIO_CONSOLE
11911diff -urNp linux-2.6.30.4/arch/x86/lib/checksum_32.S linux-2.6.30.4/arch/x86/lib/checksum_32.S
11912--- linux-2.6.30.4/arch/x86/lib/checksum_32.S 2009-07-24 17:47:51.000000000 -0400
11913+++ linux-2.6.30.4/arch/x86/lib/checksum_32.S 2009-07-30 09:48:09.967600435 -0400
11754@@ -28,7 +28,8 @@ 11914@@ -28,7 +28,8 @@
11755 #include <linux/linkage.h> 11915 #include <linux/linkage.h>
11756 #include <asm/dwarf2.h> 11916 #include <asm/dwarf2.h>
@@ -11996,9 +12156,9 @@ diff -urNp linux-2.6.29.6/arch/x86/lib/checksum_32.S linux-2.6.29.6/arch/x86/lib
11996 12156
11997 #undef ROUND 12157 #undef ROUND
11998 #undef ROUND1 12158 #undef ROUND1
11999diff -urNp linux-2.6.29.6/arch/x86/lib/clear_page_64.S linux-2.6.29.6/arch/x86/lib/clear_page_64.S 12159diff -urNp linux-2.6.30.4/arch/x86/lib/clear_page_64.S linux-2.6.30.4/arch/x86/lib/clear_page_64.S
12000--- linux-2.6.29.6/arch/x86/lib/clear_page_64.S 2009-07-02 19:41:20.000000000 -0400 12160--- linux-2.6.30.4/arch/x86/lib/clear_page_64.S 2009-07-24 17:47:51.000000000 -0400
12001+++ linux-2.6.29.6/arch/x86/lib/clear_page_64.S 2009-07-23 17:34:32.081957601 -0400 12161+++ linux-2.6.30.4/arch/x86/lib/clear_page_64.S 2009-07-30 09:48:09.967600435 -0400
12002@@ -44,7 +44,7 @@ ENDPROC(clear_page) 12162@@ -44,7 +44,7 @@ ENDPROC(clear_page)
12003 12163
12004 #include <asm/cpufeature.h> 12164 #include <asm/cpufeature.h>
@@ -12008,9 +12168,9 @@ diff -urNp linux-2.6.29.6/arch/x86/lib/clear_page_64.S linux-2.6.29.6/arch/x86/l
12008 1: .byte 0xeb /* jmp <disp8> */ 12168 1: .byte 0xeb /* jmp <disp8> */
12009 .byte (clear_page_c - clear_page) - (2f - 1b) /* offset */ 12169 .byte (clear_page_c - clear_page) - (2f - 1b) /* offset */
12010 2: 12170 2:
12011diff -urNp linux-2.6.29.6/arch/x86/lib/copy_page_64.S linux-2.6.29.6/arch/x86/lib/copy_page_64.S 12171diff -urNp linux-2.6.30.4/arch/x86/lib/copy_page_64.S linux-2.6.30.4/arch/x86/lib/copy_page_64.S
12012--- linux-2.6.29.6/arch/x86/lib/copy_page_64.S 2009-07-02 19:41:20.000000000 -0400 12172--- linux-2.6.30.4/arch/x86/lib/copy_page_64.S 2009-07-24 17:47:51.000000000 -0400
12013+++ linux-2.6.29.6/arch/x86/lib/copy_page_64.S 2009-07-23 17:34:32.081957601 -0400 12173+++ linux-2.6.30.4/arch/x86/lib/copy_page_64.S 2009-07-30 09:48:09.967600435 -0400
12014@@ -104,7 +104,7 @@ ENDPROC(copy_page) 12174@@ -104,7 +104,7 @@ ENDPROC(copy_page)
12015 12175
12016 #include <asm/cpufeature.h> 12176 #include <asm/cpufeature.h>
@@ -12020,9 +12180,9 @@ diff -urNp linux-2.6.29.6/arch/x86/lib/copy_page_64.S linux-2.6.29.6/arch/x86/li
12020 1: .byte 0xeb /* jmp <disp8> */ 12180 1: .byte 0xeb /* jmp <disp8> */
12021 .byte (copy_page_c - copy_page) - (2f - 1b) /* offset */ 12181 .byte (copy_page_c - copy_page) - (2f - 1b) /* offset */
12022 2: 12182 2:
12023diff -urNp linux-2.6.29.6/arch/x86/lib/copy_user_64.S linux-2.6.29.6/arch/x86/lib/copy_user_64.S 12183diff -urNp linux-2.6.30.4/arch/x86/lib/copy_user_64.S linux-2.6.30.4/arch/x86/lib/copy_user_64.S
12024--- linux-2.6.29.6/arch/x86/lib/copy_user_64.S 2009-07-02 19:41:20.000000000 -0400 12184--- linux-2.6.30.4/arch/x86/lib/copy_user_64.S 2009-07-24 17:47:51.000000000 -0400
12025+++ linux-2.6.29.6/arch/x86/lib/copy_user_64.S 2009-07-23 17:34:32.082759353 -0400 12185+++ linux-2.6.30.4/arch/x86/lib/copy_user_64.S 2009-07-30 09:48:09.967600435 -0400
12026@@ -21,7 +21,7 @@ 12186@@ -21,7 +21,7 @@
12027 .byte 0xe9 /* 32bit jump */ 12187 .byte 0xe9 /* 32bit jump */
12028 .long \orig-1f /* by default jump to orig */ 12188 .long \orig-1f /* by default jump to orig */
@@ -12073,9 +12233,9 @@ diff -urNp linux-2.6.29.6/arch/x86/lib/copy_user_64.S linux-2.6.29.6/arch/x86/li
12073 movl %edx,%ecx 12233 movl %edx,%ecx
12074 xorl %eax,%eax 12234 xorl %eax,%eax
12075 rep 12235 rep
12076diff -urNp linux-2.6.29.6/arch/x86/lib/getuser.S linux-2.6.29.6/arch/x86/lib/getuser.S 12236diff -urNp linux-2.6.30.4/arch/x86/lib/getuser.S linux-2.6.30.4/arch/x86/lib/getuser.S
12077--- linux-2.6.29.6/arch/x86/lib/getuser.S 2009-07-02 19:41:20.000000000 -0400 12237--- linux-2.6.30.4/arch/x86/lib/getuser.S 2009-07-24 17:47:51.000000000 -0400
12078+++ linux-2.6.29.6/arch/x86/lib/getuser.S 2009-07-23 17:34:32.082759353 -0400 12238+++ linux-2.6.30.4/arch/x86/lib/getuser.S 2009-07-30 09:48:09.967600435 -0400
12079@@ -33,6 +33,7 @@ 12239@@ -33,6 +33,7 @@
12080 #include <asm/asm-offsets.h> 12240 #include <asm/asm-offsets.h>
12081 #include <asm/thread_info.h> 12241 #include <asm/thread_info.h>
@@ -12157,21 +12317,21 @@ diff -urNp linux-2.6.29.6/arch/x86/lib/getuser.S linux-2.6.29.6/arch/x86/lib/get
12157 xor %edx,%edx 12317 xor %edx,%edx
12158 mov $(-EFAULT),%_ASM_AX 12318 mov $(-EFAULT),%_ASM_AX
12159 ret 12319 ret
12160diff -urNp linux-2.6.29.6/arch/x86/lib/memcpy_64.S linux-2.6.29.6/arch/x86/lib/memcpy_64.S 12320diff -urNp linux-2.6.30.4/arch/x86/lib/memcpy_64.S linux-2.6.30.4/arch/x86/lib/memcpy_64.S
12161--- linux-2.6.29.6/arch/x86/lib/memcpy_64.S 2009-07-02 19:41:20.000000000 -0400 12321--- linux-2.6.30.4/arch/x86/lib/memcpy_64.S 2009-07-24 17:47:51.000000000 -0400
12162+++ linux-2.6.29.6/arch/x86/lib/memcpy_64.S 2009-07-23 17:34:32.082759353 -0400 12322+++ linux-2.6.30.4/arch/x86/lib/memcpy_64.S 2009-07-30 09:48:09.968548540 -0400
12163@@ -114,7 +114,7 @@ ENDPROC(__memcpy) 12323@@ -128,7 +128,7 @@ ENDPROC(__memcpy)
12164 /* Some CPUs run faster using the string copy instructions. 12324 * It is also a lot simpler. Use this when possible:
12165 It is also a lot simpler. Use this when possible */ 12325 */
12166 12326
12167- .section .altinstr_replacement,"ax" 12327- .section .altinstr_replacement, "ax"
12168+ .section .altinstr_replacement,"a" 12328+ .section .altinstr_replacement, "a"
12169 1: .byte 0xeb /* jmp <disp8> */ 12329 1: .byte 0xeb /* jmp <disp8> */
12170 .byte (memcpy_c - memcpy) - (2f - 1b) /* offset */ 12330 .byte (memcpy_c - memcpy) - (2f - 1b) /* offset */
12171 2: 12331 2:
12172diff -urNp linux-2.6.29.6/arch/x86/lib/memset_64.S linux-2.6.29.6/arch/x86/lib/memset_64.S 12332diff -urNp linux-2.6.30.4/arch/x86/lib/memset_64.S linux-2.6.30.4/arch/x86/lib/memset_64.S
12173--- linux-2.6.29.6/arch/x86/lib/memset_64.S 2009-07-02 19:41:20.000000000 -0400 12333--- linux-2.6.30.4/arch/x86/lib/memset_64.S 2009-07-24 17:47:51.000000000 -0400
12174+++ linux-2.6.29.6/arch/x86/lib/memset_64.S 2009-07-23 17:34:32.082759353 -0400 12334+++ linux-2.6.30.4/arch/x86/lib/memset_64.S 2009-07-30 09:48:09.968548540 -0400
12175@@ -118,7 +118,7 @@ ENDPROC(__memset) 12335@@ -118,7 +118,7 @@ ENDPROC(__memset)
12176 12336
12177 #include <asm/cpufeature.h> 12337 #include <asm/cpufeature.h>
@@ -12181,9 +12341,9 @@ diff -urNp linux-2.6.29.6/arch/x86/lib/memset_64.S linux-2.6.29.6/arch/x86/lib/m
12181 1: .byte 0xeb /* jmp <disp8> */ 12341 1: .byte 0xeb /* jmp <disp8> */
12182 .byte (memset_c - memset) - (2f - 1b) /* offset */ 12342 .byte (memset_c - memset) - (2f - 1b) /* offset */
12183 2: 12343 2:
12184diff -urNp linux-2.6.29.6/arch/x86/lib/mmx_32.c linux-2.6.29.6/arch/x86/lib/mmx_32.c 12344diff -urNp linux-2.6.30.4/arch/x86/lib/mmx_32.c linux-2.6.30.4/arch/x86/lib/mmx_32.c
12185--- linux-2.6.29.6/arch/x86/lib/mmx_32.c 2009-07-02 19:41:20.000000000 -0400 12345--- linux-2.6.30.4/arch/x86/lib/mmx_32.c 2009-07-24 17:47:51.000000000 -0400
12186+++ linux-2.6.29.6/arch/x86/lib/mmx_32.c 2009-07-23 17:34:32.083767334 -0400 12346+++ linux-2.6.30.4/arch/x86/lib/mmx_32.c 2009-07-30 09:48:09.968548540 -0400
12187@@ -29,6 +29,7 @@ void *_mmx_memcpy(void *to, const void * 12347@@ -29,6 +29,7 @@ void *_mmx_memcpy(void *to, const void *
12188 { 12348 {
12189 void *p; 12349 void *p;
@@ -12499,9 +12659,9 @@ diff -urNp linux-2.6.29.6/arch/x86/lib/mmx_32.c linux-2.6.29.6/arch/x86/lib/mmx_
12499 12659
12500 from += 64; 12660 from += 64;
12501 to += 64; 12661 to += 64;
12502diff -urNp linux-2.6.29.6/arch/x86/lib/putuser.S linux-2.6.29.6/arch/x86/lib/putuser.S 12662diff -urNp linux-2.6.30.4/arch/x86/lib/putuser.S linux-2.6.30.4/arch/x86/lib/putuser.S
12503--- linux-2.6.29.6/arch/x86/lib/putuser.S 2009-07-02 19:41:20.000000000 -0400 12663--- linux-2.6.30.4/arch/x86/lib/putuser.S 2009-07-24 17:47:51.000000000 -0400
12504+++ linux-2.6.29.6/arch/x86/lib/putuser.S 2009-07-23 17:34:32.083767334 -0400 12664+++ linux-2.6.30.4/arch/x86/lib/putuser.S 2009-07-30 09:48:09.969494268 -0400
12505@@ -15,6 +15,7 @@ 12665@@ -15,6 +15,7 @@
12506 #include <asm/thread_info.h> 12666 #include <asm/thread_info.h>
12507 #include <asm/errno.h> 12667 #include <asm/errno.h>
@@ -12605,9 +12765,9 @@ diff -urNp linux-2.6.29.6/arch/x86/lib/putuser.S linux-2.6.29.6/arch/x86/lib/put
12605 movl $-EFAULT,%eax 12765 movl $-EFAULT,%eax
12606 EXIT 12766 EXIT
12607 END(bad_put_user) 12767 END(bad_put_user)
12608diff -urNp linux-2.6.29.6/arch/x86/lib/usercopy_32.c linux-2.6.29.6/arch/x86/lib/usercopy_32.c 12768diff -urNp linux-2.6.30.4/arch/x86/lib/usercopy_32.c linux-2.6.30.4/arch/x86/lib/usercopy_32.c
12609--- linux-2.6.29.6/arch/x86/lib/usercopy_32.c 2009-07-02 19:41:20.000000000 -0400 12769--- linux-2.6.30.4/arch/x86/lib/usercopy_32.c 2009-07-24 17:47:51.000000000 -0400
12610+++ linux-2.6.29.6/arch/x86/lib/usercopy_32.c 2009-07-23 17:34:32.084899980 -0400 12770+++ linux-2.6.30.4/arch/x86/lib/usercopy_32.c 2009-07-30 09:48:09.969494268 -0400
12611@@ -36,31 +36,38 @@ static inline int __movsl_is_ok(unsigned 12771@@ -36,31 +36,38 @@ static inline int __movsl_is_ok(unsigned
12612 * Copy a null terminated string from userspace. 12772 * Copy a null terminated string from userspace.
12613 */ 12773 */
@@ -13573,76 +13733,13 @@ diff -urNp linux-2.6.29.6/arch/x86/lib/usercopy_32.c linux-2.6.29.6/arch/x86/lib
13573+#endif 13733+#endif
13574+ 13734+
13575+EXPORT_SYMBOL(set_fs); 13735+EXPORT_SYMBOL(set_fs);
13576diff -urNp linux-2.6.29.6/arch/x86/mach-voyager/voyager_basic.c linux-2.6.29.6/arch/x86/mach-voyager/voyager_basic.c 13736diff -urNp linux-2.6.30.4/arch/x86/Makefile linux-2.6.30.4/arch/x86/Makefile
13577--- linux-2.6.29.6/arch/x86/mach-voyager/voyager_basic.c 2009-07-02 19:41:20.000000000 -0400 13737--- linux-2.6.30.4/arch/x86/Makefile 2009-07-24 17:47:51.000000000 -0400
13578+++ linux-2.6.29.6/arch/x86/mach-voyager/voyager_basic.c 2009-07-23 17:34:32.084899980 -0400 13738+++ linux-2.6.30.4/arch/x86/Makefile 2009-07-30 09:48:09.917626356 -0400
13579@@ -123,7 +123,7 @@ int __init voyager_memory_detect(int reg 13739@@ -198,3 +198,12 @@ define archhelp
13580 __u8 cmos[4]; 13740 echo ' FDARGS="..." arguments for the booted kernel'
13581 ClickMap_t *map; 13741 echo ' FDINITRD=file initrd for the booted kernel'
13582 unsigned long map_addr; 13742 endef
13583- unsigned long old;
13584+ pte_t old;
13585
13586 if (region >= CLICK_ENTRIES) {
13587 printk("Voyager: Illegal ClickMap region %d\n", region);
13588@@ -138,7 +138,7 @@ int __init voyager_memory_detect(int reg
13589
13590 /* steal page 0 for this */
13591 old = pg0[0];
13592- pg0[0] = ((map_addr & PAGE_MASK) | _PAGE_RW | _PAGE_PRESENT);
13593+ pg0[0] = __pte((map_addr & PAGE_MASK) | _PAGE_RW | _PAGE_PRESENT);
13594 local_flush_tlb();
13595 /* now clear everything out but page 0 */
13596 map = (ClickMap_t *) (map_addr & (~PAGE_MASK));
13597diff -urNp linux-2.6.29.6/arch/x86/mach-voyager/voyager_smp.c linux-2.6.29.6/arch/x86/mach-voyager/voyager_smp.c
13598--- linux-2.6.29.6/arch/x86/mach-voyager/voyager_smp.c 2009-07-02 19:41:20.000000000 -0400
13599+++ linux-2.6.29.6/arch/x86/mach-voyager/voyager_smp.c 2009-07-23 17:34:32.084899980 -0400
13600@@ -511,6 +511,10 @@ static void __init do_boot_cpu(__u8 cpu)
13601 __u32 *hijack_vector;
13602 __u32 start_phys_address = setup_trampoline();
13603
13604+#ifdef CONFIG_PAX_KERNEXEC
13605+ unsigned long cr0;
13606+#endif
13607+
13608 /* There's a clever trick to this: The linux trampoline is
13609 * compiled to begin at absolute location zero, so make the
13610 * address zero but have the data segment selector compensate
13611@@ -530,7 +534,17 @@ static void __init do_boot_cpu(__u8 cpu)
13612
13613 init_gdt(cpu);
13614 per_cpu(current_task, cpu) = idle;
13615- early_gdt_descr.address = (unsigned long)get_cpu_gdt_table(cpu);
13616+
13617+#ifdef CONFIG_PAX_KERNEXEC
13618+ pax_open_kernel(cr0);
13619+#endif
13620+
13621+ early_gdt_descr.address = get_cpu_gdt_table(cpu);
13622+
13623+#ifdef CONFIG_PAX_KERNEXEC
13624+ pax_close_kernel(cr0);
13625+#endif
13626+
13627 irq_ctx_init(cpu);
13628
13629 /* Note: Don't modify initial ss override */
13630@@ -1144,7 +1158,7 @@ void smp_local_timer_interrupt(void)
13631 per_cpu(prof_counter, cpu);
13632 }
13633
13634- update_process_times(user_mode_vm(get_irq_regs()));
13635+ update_process_times(user_mode(get_irq_regs()));
13636 }
13637
13638 if (((1 << cpu) & voyager_extended_vic_processors) == 0)
13639diff -urNp linux-2.6.29.6/arch/x86/Makefile linux-2.6.29.6/arch/x86/Makefile
13640--- linux-2.6.29.6/arch/x86/Makefile 2009-07-02 19:41:20.000000000 -0400
13641+++ linux-2.6.29.6/arch/x86/Makefile 2009-07-23 17:34:32.084899980 -0400
13642@@ -232,3 +232,12 @@ endef
13643 CLEAN_FILES += arch/x86/boot/fdimage \
13644 arch/x86/boot/image.iso \
13645 arch/x86/boot/mtools.conf
13646+ 13743+
13647+define OLD_LD 13744+define OLD_LD
13648+ 13745+
@@ -13652,9 +13749,9 @@ diff -urNp linux-2.6.29.6/arch/x86/Makefile linux-2.6.29.6/arch/x86/Makefile
13652+ 13749+
13653+archprepare: 13750+archprepare:
13654+ $(if $(LDFLAGS_BUILD_ID),,$(error $(OLD_LD))) 13751+ $(if $(LDFLAGS_BUILD_ID),,$(error $(OLD_LD)))
13655diff -urNp linux-2.6.29.6/arch/x86/mm/extable.c linux-2.6.29.6/arch/x86/mm/extable.c 13752diff -urNp linux-2.6.30.4/arch/x86/mm/extable.c linux-2.6.30.4/arch/x86/mm/extable.c
13656--- linux-2.6.29.6/arch/x86/mm/extable.c 2009-07-02 19:41:20.000000000 -0400 13753--- linux-2.6.30.4/arch/x86/mm/extable.c 2009-07-24 17:47:51.000000000 -0400
13657+++ linux-2.6.29.6/arch/x86/mm/extable.c 2009-07-23 17:34:32.085744993 -0400 13754+++ linux-2.6.30.4/arch/x86/mm/extable.c 2009-07-30 09:48:09.970452952 -0400
13658@@ -1,14 +1,62 @@ 13755@@ -1,14 +1,62 @@
13659 #include <linux/module.h> 13756 #include <linux/module.h>
13660 #include <linux/spinlock.h> 13757 #include <linux/spinlock.h>
@@ -13719,29 +13816,29 @@ diff -urNp linux-2.6.29.6/arch/x86/mm/extable.c linux-2.6.29.6/arch/x86/mm/extab
13719 extern u32 pnp_bios_fault_eip, pnp_bios_fault_esp; 13816 extern u32 pnp_bios_fault_eip, pnp_bios_fault_esp;
13720 extern u32 pnp_bios_is_utter_crap; 13817 extern u32 pnp_bios_is_utter_crap;
13721 pnp_bios_is_utter_crap = 1; 13818 pnp_bios_is_utter_crap = 1;
13722diff -urNp linux-2.6.29.6/arch/x86/mm/fault.c linux-2.6.29.6/arch/x86/mm/fault.c 13819diff -urNp linux-2.6.30.4/arch/x86/mm/fault.c linux-2.6.30.4/arch/x86/mm/fault.c
13723--- linux-2.6.29.6/arch/x86/mm/fault.c 2009-07-02 19:41:20.000000000 -0400 13820--- linux-2.6.30.4/arch/x86/mm/fault.c 2009-07-24 17:47:51.000000000 -0400
13724+++ linux-2.6.29.6/arch/x86/mm/fault.c 2009-07-23 17:34:32.085744993 -0400 13821+++ linux-2.6.30.4/arch/x86/mm/fault.c 2009-07-30 11:10:48.941676108 -0400
13725@@ -26,6 +26,8 @@ 13822@@ -27,6 +27,8 @@
13726 #include <linux/kprobes.h> 13823 #include <linux/tty.h>
13727 #include <linux/uaccess.h> 13824 #include <linux/smp.h>
13728 #include <linux/kdebug.h> 13825 #include <linux/mm.h>
13729+#include <linux/unistd.h> 13826+#include <linux/unistd.h>
13730+#include <linux/compiler.h> 13827+#include <linux/compiler.h>
13731 13828
13732 #include <asm/system.h> 13829 #include <asm-generic/sections.h>
13733 #include <asm/desc.h> 13830
13734@@ -67,7 +69,7 @@ static inline int notify_page_fault(stru 13831@@ -73,7 +75,7 @@ static inline int notify_page_fault(stru
13735 int ret = 0; 13832 int ret = 0;
13736 13833
13737 /* kprobe_running() needs smp_processor_id() */ 13834 /* kprobe_running() needs smp_processor_id() */
13738- if (!user_mode_vm(regs)) { 13835- if (kprobes_built_in() && !user_mode_vm(regs)) {
13739+ if (!user_mode(regs)) { 13836+ if (kprobes_built_in() && !user_mode(regs)) {
13740 preempt_disable(); 13837 preempt_disable();
13741 if (kprobe_running() && kprobe_fault_handler(regs, 14)) 13838 if (kprobe_running() && kprobe_fault_handler(regs, 14))
13742 ret = 1; 13839 ret = 1;
13743@@ -265,6 +267,30 @@ bad: 13840@@ -193,6 +195,30 @@ force_sig_info_fault(int si_signo, int s
13744 #endif 13841 force_sig_info(si_signo, &info, tsk);
13745 } 13842 }
13746 13843
13747+#ifdef CONFIG_PAX_EMUTRAMP 13844+#ifdef CONFIG_PAX_EMUTRAMP
@@ -13768,36 +13865,42 @@ diff -urNp linux-2.6.29.6/arch/x86/mm/fault.c linux-2.6.29.6/arch/x86/mm/fault.c
13768+} 13865+}
13769+#endif 13866+#endif
13770+ 13867+
13771 #ifdef CONFIG_X86_32 13868 DEFINE_SPINLOCK(pgd_lock);
13772 static inline pmd_t *vmalloc_sync_one(pgd_t *pgd, unsigned long address) 13869 LIST_HEAD(pgd_list);
13773 { 13870
13774@@ -351,7 +377,7 @@ static int is_errata93(struct pt_regs *r 13871@@ -571,7 +597,7 @@ static int is_errata93(struct pt_regs *r
13775 static int is_errata100(struct pt_regs *regs, unsigned long address) 13872 static int is_errata100(struct pt_regs *regs, unsigned long address)
13776 { 13873 {
13777 #ifdef CONFIG_X86_64 13874 #ifdef CONFIG_X86_64
13778- if ((regs->cs == __USER32_CS || (regs->cs & (1<<2))) && 13875- if ((regs->cs == __USER32_CS || (regs->cs & (1<<2))) && (address >> 32))
13779+ if ((regs->cs == __USER32_CS || (regs->cs & SEGMENT_LDT)) && 13876+ if ((regs->cs == __USER32_CS || (regs->cs & SEGMENT_LDT)) && (address >> 32))
13780 (address >> 32))
13781 return 1; 13877 return 1;
13782 #endif 13878 #endif
13783@@ -386,14 +412,31 @@ static void show_fault_oops(struct pt_re 13879 return 0;
13784 #endif 13880@@ -598,7 +624,7 @@ static int is_f00f_bug(struct pt_regs *r
13881 }
13882
13883 static const char nx_warning[] = KERN_CRIT
13884-"kernel tried to execute NX-protected page - exploit attempt? (uid: %d)\n";
13885+"kernel tried to execute NX-protected page - exploit attempt? (uid: %d, task: %s, pid: %d)\n";
13886
13887 static void
13888 show_fault_oops(struct pt_regs *regs, unsigned long error_code,
13889@@ -607,15 +633,31 @@ show_fault_oops(struct pt_regs *regs, un
13890 if (!oops_may_print())
13891 return;
13785 13892
13786 #ifdef CONFIG_X86_PAE
13787- if (error_code & PF_INSTR) { 13893- if (error_code & PF_INSTR) {
13788+ if (nx_enabled && (error_code & PF_INSTR)) { 13894+ if (nx_enabled && (error_code & PF_INSTR)) {
13789 unsigned int level; 13895 unsigned int level;
13896
13790 pte_t *pte = lookup_address(address, &level); 13897 pte_t *pte = lookup_address(address, &level);
13791 13898
13792 if (pte && pte_present(*pte) && !pte_exec(*pte)) 13899 if (pte && pte_present(*pte) && !pte_exec(*pte))
13793 printk(KERN_CRIT "kernel tried to execute " 13900- printk(nx_warning, current_uid());
13794 "NX-protected page - exploit attempt? " 13901+ printk(nx_warning, current_uid(), current->comm, task_pid_nr(current));
13795- "(uid: %d)\n", current_uid()); 13902 }
13796+ "(uid: %d, task: %s, pid: %d)\n", 13903
13797+ current_uid(), current->comm, task_pid_nr(current));
13798+ }
13799+#endif
13800+
13801+#ifdef CONFIG_PAX_KERNEXEC 13904+#ifdef CONFIG_PAX_KERNEXEC
13802+#ifdef CONFIG_MODULES 13905+#ifdef CONFIG_MODULES
13803+ if (init_mm.start_code <= address && address < (unsigned long)MODULES_END) 13906+ if (init_mm.start_code <= address && address < (unsigned long)MODULES_END)
@@ -13811,72 +13914,96 @@ diff -urNp linux-2.6.29.6/arch/x86/mm/fault.c linux-2.6.29.6/arch/x86/mm/fault.c
13811+ else 13914+ else
13812+ printk(KERN_ERR "PAX: %s:%d, uid/euid: %u/%u, attempted to modify kernel code\n", 13915+ printk(KERN_ERR "PAX: %s:%d, uid/euid: %u/%u, attempted to modify kernel code\n",
13813+ current->comm, task_pid_nr(current), current_uid(), current_euid()); 13916+ current->comm, task_pid_nr(current), current_uid(), current_euid());
13814 } 13917+ }
13815 #endif 13918+#endif
13919+
13920 printk(KERN_ALERT "BUG: unable to handle kernel ");
13921 if (address < PAGE_SIZE)
13922 printk(KERN_CONT "NULL pointer dereference");
13923@@ -740,6 +782,68 @@ __bad_area_nosemaphore(struct pt_regs *r
13924 unsigned long address, int si_code)
13925 {
13926 struct task_struct *tsk = current;
13927+ struct mm_struct *mm = tsk->mm;
13928+
13929+#ifdef CONFIG_X86_64
13930+ if (mm && (error_code & PF_INSTR)) {
13931+ if (regs->ip == (unsigned long)vgettimeofday) {
13932+ regs->ip = (unsigned long)VDSO64_SYMBOL(mm->context.vdso, fallback_gettimeofday);
13933+ return;
13934+ } else if (regs->ip == (unsigned long)vtime) {
13935+ regs->ip = (unsigned long)VDSO64_SYMBOL(mm->context.vdso, fallback_time);
13936+ return;
13937+ } else if (regs->ip == (unsigned long)vgetcpu) {
13938+ regs->ip = (unsigned long)VDSO64_SYMBOL(mm->context.vdso, getcpu);
13939+ return;
13940+ }
13941+ }
13942+#endif
13943+
13944+#if defined(CONFIG_PAX_PAGEEXEC) || defined(CONFIG_PAX_SEGMEXEC)
13945+ if (mm && (error_code & PF_USER)) {
13946+ unsigned long ip = regs->ip;
13947+
13948+ if (v8086_mode(regs))
13949+ ip = ((regs->cs & 0xffff) << 4) + (regs->ip & 0xffff);
13950+
13951+ /*
13952+ * It's possible to have interrupts off here:
13953+ */
13954+ local_irq_enable();
13955+
13956+#ifdef CONFIG_PAX_PAGEEXEC
13957+ if ((mm->pax_flags & MF_PAX_PAGEEXEC) &&
13958+ ((nx_enabled && (error_code & PF_INSTR)) || (!(error_code & (PF_PROT | PF_WRITE)) && regs->ip == address))) {
13959+
13960+#ifdef CONFIG_PAX_EMUTRAMP
13961+ switch (pax_handle_fetch_fault(regs)) {
13962+ case 2:
13963+ return;
13964+ }
13965+#endif
13966+
13967+ pax_report_fault(regs, (void *)regs->ip, (void *)regs->sp);
13968+ do_group_exit(SIGKILL);
13969+ }
13970+#endif
13971+
13972+#ifdef CONFIG_PAX_SEGMEXEC
13973+ if ((mm->pax_flags & MF_PAX_SEGMEXEC) && !(error_code & (PF_PROT | PF_WRITE)) && (regs->ip + SEGMEXEC_TASK_SIZE == address)) {
13974+
13975+#ifdef CONFIG_PAX_EMUTRAMP
13976+ switch (pax_handle_fetch_fault(regs)) {
13977+ case 2:
13978+ return;
13979+ }
13980+#endif
13981+
13982+ pax_report_fault(regs, (void *)regs->ip, (void *)regs->sp);
13983+ do_group_exit(SIGKILL);
13984+ }
13985+#endif
13986+
13987+ }
13988+#endif
13816 13989
13817@@ -586,7 +629,6 @@ void __kprobes do_page_fault(struct pt_r 13990 /* User mode accesses just cause a SIGSEGV */
13818 struct task_struct *tsk; 13991 if (error_code & PF_USER) {
13819 struct mm_struct *mm; 13992@@ -874,6 +978,106 @@ static int spurious_fault_check(unsigned
13820 struct vm_area_struct *vma; 13993 return 1;
13821- unsigned long address; 13994 }
13822 int write, si_code;
13823 int fault;
13824 #ifdef CONFIG_X86_64
13825@@ -594,13 +636,20 @@ void __kprobes do_page_fault(struct pt_r
13826 int sig;
13827 #endif
13828 13995
13829+#if defined(CONFIG_X86_32) && defined(CONFIG_PAX_PAGEEXEC) 13996+#if defined(CONFIG_X86_32) && defined(CONFIG_PAX_PAGEEXEC)
13997+static int pax_handle_pageexec_fault(struct pt_regs *regs, struct mm_struct *mm, unsigned long address, unsigned long error_code)
13998+{
13830+ pte_t *pte; 13999+ pte_t *pte;
13831+ pmd_t *pmd; 14000+ pmd_t *pmd;
13832+ spinlock_t *ptl; 14001+ spinlock_t *ptl;
13833+ unsigned char pte_mask; 14002+ unsigned char pte_mask;
13834+#endif
13835+
13836+ /* get the address */
13837+ const unsigned long address = read_cr2();
13838+ 14003+
13839 tsk = current;
13840 mm = tsk->mm;
13841 prefetchw(&mm->mmap_sem);
13842
13843- /* get the address */
13844- address = read_cr2();
13845-
13846 si_code = SEGV_MAPERR;
13847
13848 if (unlikely(kmmio_fault(regs, address)))
13849@@ -653,7 +702,7 @@ void __kprobes do_page_fault(struct pt_r
13850 * User-mode registers count as a user access even for any
13851 * potential system fault or CPU buglet.
13852 */
13853- if (user_mode_vm(regs)) {
13854+ if (user_mode(regs)) {
13855 local_irq_enable();
13856 error_code |= PF_USER;
13857 } else if (regs->flags & X86_EFLAGS_IF)
13858@@ -669,7 +718,7 @@ void __kprobes do_page_fault(struct pt_r
13859 * atomic region then we must not take the fault.
13860 */
13861 if (unlikely(in_atomic() || !mm))
13862- goto bad_area_nosemaphore;
13863+ goto bad_area_nopax;
13864
13865 /*
13866 * When running in the kernel we expect faults to occur only to
13867@@ -690,10 +739,104 @@ void __kprobes do_page_fault(struct pt_r
13868 if (!down_read_trylock(&mm->mmap_sem)) {
13869 if ((error_code & PF_USER) == 0 &&
13870 !search_exception_tables(regs->ip))
13871- goto bad_area_nosemaphore;
13872+ goto bad_area_nopax;
13873 down_read(&mm->mmap_sem);
13874 }
13875
13876+#if defined(CONFIG_X86_32) && defined(CONFIG_PAX_PAGEEXEC)
13877+ if (nx_enabled || (error_code & (PF_PROT|PF_USER)) != (PF_PROT|PF_USER) || v8086_mode(regs) || 14004+ if (nx_enabled || (error_code & (PF_PROT|PF_USER)) != (PF_PROT|PF_USER) || v8086_mode(regs) ||
13878+ !(mm->pax_flags & MF_PAX_PAGEEXEC)) 14005+ !(mm->pax_flags & MF_PAX_PAGEEXEC))
13879+ goto not_pax_fault; 14006+ return 0;
13880+ 14007+
13881+ /* PaX: it's our fault, let's handle it if we can */ 14008+ /* PaX: it's our fault, let's handle it if we can */
13882+ 14009+
@@ -13888,7 +14015,7 @@ diff -urNp linux-2.6.29.6/arch/x86/mm/fault.c linux-2.6.29.6/arch/x86/mm/fault.c
13888+#ifdef CONFIG_PAX_EMUTRAMP 14015+#ifdef CONFIG_PAX_EMUTRAMP
13889+ switch (pax_handle_fetch_fault(regs)) { 14016+ switch (pax_handle_fetch_fault(regs)) {
13890+ case 2: 14017+ case 2:
13891+ return; 14018+ return 1;
13892+ } 14019+ }
13893+#endif 14020+#endif
13894+ 14021+
@@ -13898,18 +14025,18 @@ diff -urNp linux-2.6.29.6/arch/x86/mm/fault.c linux-2.6.29.6/arch/x86/mm/fault.c
13898+ 14025+
13899+ pmd = pax_get_pmd(mm, address); 14026+ pmd = pax_get_pmd(mm, address);
13900+ if (unlikely(!pmd)) 14027+ if (unlikely(!pmd))
13901+ goto not_pax_fault; 14028+ return 0;
13902+ 14029+
13903+ pte = pte_offset_map_lock(mm, pmd, address, &ptl); 14030+ pte = pte_offset_map_lock(mm, pmd, address, &ptl);
13904+ if (unlikely(!(pte_val(*pte) & _PAGE_PRESENT) || pte_user(*pte))) { 14031+ if (unlikely(!(pte_val(*pte) & _PAGE_PRESENT) || pte_user(*pte))) {
13905+ pte_unmap_unlock(pte, ptl); 14032+ pte_unmap_unlock(pte, ptl);
13906+ goto not_pax_fault; 14033+ return 0;
13907+ } 14034+ }
13908+ 14035+
13909+ if (unlikely((error_code & PF_WRITE) && !pte_write(*pte))) { 14036+ if (unlikely((error_code & PF_WRITE) && !pte_write(*pte))) {
13910+ /* write attempt to a protected page in user mode */ 14037+ /* write attempt to a protected page in user mode */
13911+ pte_unmap_unlock(pte, ptl); 14038+ pte_unmap_unlock(pte, ptl);
13912+ goto not_pax_fault; 14039+ return 0;
13913+ } 14040+ }
13914+ 14041+
13915+#ifdef CONFIG_SMP 14042+#ifdef CONFIG_SMP
@@ -13922,7 +14049,7 @@ diff -urNp linux-2.6.29.6/arch/x86/mm/fault.c linux-2.6.29.6/arch/x86/mm/fault.c
13922+ __flush_tlb_one(address); 14049+ __flush_tlb_one(address);
13923+ pte_unmap_unlock(pte, ptl); 14050+ pte_unmap_unlock(pte, ptl);
13924+ up_read(&mm->mmap_sem); 14051+ up_read(&mm->mmap_sem);
13925+ return; 14052+ return 1;
13926+ } 14053+ }
13927+ 14054+
13928+ pte_mask = _PAGE_ACCESSED | _PAGE_USER | ((error_code & PF_WRITE) << (_PAGE_BIT_DIRTY-1)); 14055+ pte_mask = _PAGE_ACCESSED | _PAGE_USER | ((error_code & PF_WRITE) << (_PAGE_BIT_DIRTY-1));
@@ -13962,136 +14089,106 @@ diff -urNp linux-2.6.29.6/arch/x86/mm/fault.c linux-2.6.29.6/arch/x86/mm/fault.c
13962+ : "memory", "cc"); 14089+ : "memory", "cc");
13963+ pte_unmap_unlock(pte, ptl); 14090+ pte_unmap_unlock(pte, ptl);
13964+ up_read(&mm->mmap_sem); 14091+ up_read(&mm->mmap_sem);
13965+ return; 14092+ return 1;
14093+}
14094+#endif
14095+
14096 /*
14097 * Handle a spurious fault caused by a stale TLB entry.
14098 *
14099@@ -940,6 +1144,9 @@ int show_unhandled_signals = 1;
14100 static inline int
14101 access_error(unsigned long error_code, int write, struct vm_area_struct *vma)
14102 {
14103+ if (nx_enabled && (error_code & PF_INSTR) && !(vma->vm_flags & VM_EXEC))
14104+ return 1;
13966+ 14105+
13967+not_pax_fault: 14106 if (write) {
14107 /* write, present and write, not present: */
14108 if (unlikely(!(vma->vm_flags & VM_WRITE)))
14109@@ -973,19 +1180,18 @@ do_page_fault(struct pt_regs *regs, unsi
14110 {
14111 struct vm_area_struct *vma;
14112 struct task_struct *tsk;
14113- unsigned long address;
14114 struct mm_struct *mm;
14115 int write;
14116 int fault;
14117
14118+ /* Get the faulting address: */
14119+ const unsigned long address = read_cr2();
14120+
14121 tsk = current;
14122 mm = tsk->mm;
14123
14124 prefetchw(&mm->mmap_sem);
14125
14126- /* Get the faulting address: */
14127- address = read_cr2();
14128-
14129 if (unlikely(kmmio_fault(regs, address)))
14130 return;
14131
14132@@ -1033,7 +1239,7 @@ do_page_fault(struct pt_regs *regs, unsi
14133 * User-mode registers count as a user access even for any
14134 * potential system fault or CPU buglet:
14135 */
14136- if (user_mode_vm(regs)) {
14137+ if (user_mode(regs)) {
14138 local_irq_enable();
14139 error_code |= PF_USER;
14140 } else {
14141@@ -1085,6 +1291,11 @@ do_page_fault(struct pt_regs *regs, unsi
14142 might_sleep();
14143 }
14144
14145+#if defined(CONFIG_X86_32) && defined(CONFIG_PAX_PAGEEXEC)
14146+ if (pax_handle_pageexec_fault(regs, mm, address, error_code))
14147+ return;
13968+#endif 14148+#endif
13969+ 14149+
13970 vma = find_vma(mm, address); 14150 vma = find_vma(mm, address);
13971 if (!vma) 14151 if (unlikely(!vma)) {
13972 goto bad_area; 14152 bad_area(regs, error_code, address);
13973@@ -701,16 +844,20 @@ void __kprobes do_page_fault(struct pt_r 14153@@ -1096,18 +1307,24 @@ do_page_fault(struct pt_regs *regs, unsi
13974 goto good_area; 14154 bad_area(regs, error_code, address);
13975 if (!(vma->vm_flags & VM_GROWSDOWN)) 14155 return;
13976 goto bad_area; 14156 }
13977- if (error_code & PF_USER) { 14157- if (error_code & PF_USER) {
13978- /* 14158- /*
13979- * Accessing the stack below %sp is always a bug. 14159- * Accessing the stack below %sp is always a bug.
13980- * The large cushion allows instructions like enter 14160- * The large cushion allows instructions like enter
13981- * and pusha to work. ("enter $65535,$31" pushes 14161- * and pusha to work. ("enter $65535, $31" pushes
13982- * 32 pointers and then decrements %sp by 65535.) 14162- * 32 pointers and then decrements %sp by 65535.)
13983- */ 14163- */
13984- if (address + 65536 + 32 * sizeof(unsigned long) < regs->sp) 14164- if (unlikely(address + 65536 + 32 * sizeof(unsigned long) < regs->sp)) {
13985- goto bad_area; 14165- bad_area(regs, error_code, address);
13986- } 14166- return;
14167- }
13987+ /* 14168+ /*
13988+ * Accessing the stack below %sp is always a bug. 14169+ * Accessing the stack below %sp is always a bug.
13989+ * The large cushion allows instructions like enter 14170+ * The large cushion allows instructions like enter
13990+ * and pusha to work. ("enter $65535,$31" pushes 14171+ * and pusha to work. ("enter $65535, $31" pushes
13991+ * 32 pointers and then decrements %sp by 65535.) 14172+ * 32 pointers and then decrements %sp by 65535.)
13992+ */ 14173+ */
13993+ if (address + 65536 + 32 * sizeof(unsigned long) < task_pt_regs(tsk)->sp) 14174+ if (unlikely(address + 65536 + 32 * sizeof(unsigned long) < task_pt_regs(tsk)->sp)) {
13994+ goto bad_area; 14175+ bad_area(regs, error_code, address);
13995+ 14176+ return;
13996+#ifdef CONFIG_PAX_SEGMEXEC 14177 }
13997+ if ((mm->pax_flags & MF_PAX_SEGMEXEC) && vma->vm_end - SEGMEXEC_TASK_SIZE - 1 < address - SEGMEXEC_TASK_SIZE - 1)
13998+ goto bad_area;
13999+#endif
14000+
14001 if (expand_stack(vma, address))
14002 goto bad_area;
14003 /*
14004@@ -720,6 +867,8 @@ void __kprobes do_page_fault(struct pt_r
14005 good_area:
14006 si_code = SEGV_ACCERR;
14007 write = 0;
14008+ if (nx_enabled && (error_code & PF_INSTR) && !(vma->vm_flags & VM_EXEC))
14009+ goto bad_area;
14010 switch (error_code & (PF_PROT|PF_WRITE)) {
14011 default: /* 3: write, present */
14012 /* fall through */
14013@@ -774,6 +923,69 @@ bad_area:
14014 up_read(&mm->mmap_sem);
14015
14016 bad_area_nosemaphore:
14017+
14018+#ifdef CONFIG_X86_64
14019+ if (mm && (error_code & PF_INSTR)) {
14020+ if (regs->ip == (unsigned long)vgettimeofday) {
14021+ regs->ip = (unsigned long)VDSO64_SYMBOL(mm->context.vdso, fallback_gettimeofday);
14022+ return;
14023+ } else if (regs->ip == (unsigned long)vtime) {
14024+ regs->ip = (unsigned long)VDSO64_SYMBOL(mm->context.vdso, fallback_time);
14025+ return;
14026+ } else if (regs->ip == (unsigned long)vgetcpu) {
14027+ regs->ip = (unsigned long)VDSO64_SYMBOL(mm->context.vdso, getcpu);
14028+ return;
14029+ }
14030+ }
14031+#endif
14032+
14033+#if defined(CONFIG_PAX_PAGEEXEC) || defined(CONFIG_PAX_SEGMEXEC)
14034+ if (mm && (error_code & PF_USER)) {
14035+ unsigned long ip = regs->ip;
14036+
14037+ if (v8086_mode(regs))
14038+ ip = ((regs->cs & 0xffff) << 4) + (regs->ip & 0xffff);
14039+
14040+ /*
14041+ * It's possible to have interrupts off here.
14042+ */
14043+ local_irq_enable();
14044+
14045+#ifdef CONFIG_PAX_PAGEEXEC
14046+ if ((mm->pax_flags & MF_PAX_PAGEEXEC) &&
14047+ ((nx_enabled && (error_code & PF_INSTR)) || (!(error_code & (PF_PROT | PF_WRITE)) && regs->ip == address))) {
14048+
14049+#ifdef CONFIG_PAX_EMUTRAMP
14050+ switch (pax_handle_fetch_fault(regs)) {
14051+ case 2:
14052+ return;
14053+ }
14054+#endif
14055+
14056+ pax_report_fault(regs, (void *)regs->ip, (void *)regs->sp);
14057+ do_group_exit(SIGKILL);
14058+ }
14059+#endif
14060+ 14178+
14061+#ifdef CONFIG_PAX_SEGMEXEC 14179+#ifdef CONFIG_PAX_SEGMEXEC
14062+ if ((mm->pax_flags & MF_PAX_SEGMEXEC) && !(error_code & (PF_PROT | PF_WRITE)) && (regs->ip + SEGMEXEC_TASK_SIZE == address)) { 14180+ if (unlikely((mm->pax_flags & MF_PAX_SEGMEXEC) && vma->vm_end - SEGMEXEC_TASK_SIZE - 1 < address - SEGMEXEC_TASK_SIZE - 1)) {
14063+ 14181+ bad_area(regs, error_code, address);
14064+#ifdef CONFIG_PAX_EMUTRAMP 14182+ return;
14065+ switch (pax_handle_fetch_fault(regs)) {
14066+ case 2:
14067+ return;
14068+ }
14069+#endif
14070+
14071+ pax_report_fault(regs, (void *)regs->ip, (void *)regs->sp);
14072+ do_group_exit(SIGKILL);
14073+ }
14074+#endif
14075+
14076+ } 14183+ }
14077+#endif 14184+#endif
14078+ 14185+
14079+bad_area_nopax: 14186 if (unlikely(expand_stack(vma, address))) {
14080 /* User mode accesses just cause a SIGSEGV */ 14187 bad_area(regs, error_code, address);
14081 if (error_code & PF_USER) { 14188 return;
14082 /* 14189@@ -1146,3 +1363,174 @@ good_area:
14083@@ -852,7 +1064,7 @@ no_context: 14190
14084 #ifdef CONFIG_X86_32 14191 up_read(&mm->mmap_sem);
14085 die("Oops", regs, error_code);
14086 bust_spinlocks(0);
14087- do_exit(SIGKILL);
14088+ do_group_exit(SIGKILL);
14089 #else
14090 sig = SIGKILL;
14091 if (__die("Oops", regs, error_code))
14092@@ -935,3 +1147,174 @@ void vmalloc_sync_all(void)
14093 }
14094 #endif
14095 } 14192 }
14096+ 14193+
14097+#ifdef CONFIG_PAX_EMUTRAMP 14194+#ifdef CONFIG_PAX_EMUTRAMP
@@ -14264,10 +14361,10 @@ diff -urNp linux-2.6.29.6/arch/x86/mm/fault.c linux-2.6.29.6/arch/x86/mm/fault.c
14264+ printk("\n"); 14361+ printk("\n");
14265+} 14362+}
14266+#endif 14363+#endif
14267diff -urNp linux-2.6.29.6/arch/x86/mm/highmem_32.c linux-2.6.29.6/arch/x86/mm/highmem_32.c 14364diff -urNp linux-2.6.30.4/arch/x86/mm/highmem_32.c linux-2.6.30.4/arch/x86/mm/highmem_32.c
14268--- linux-2.6.29.6/arch/x86/mm/highmem_32.c 2009-07-02 19:41:20.000000000 -0400 14365--- linux-2.6.30.4/arch/x86/mm/highmem_32.c 2009-07-24 17:47:51.000000000 -0400
14269+++ linux-2.6.29.6/arch/x86/mm/highmem_32.c 2009-07-23 17:34:32.085744993 -0400 14366+++ linux-2.6.30.4/arch/x86/mm/highmem_32.c 2009-07-30 09:48:09.970452952 -0400
14270@@ -74,6 +74,10 @@ void *kmap_atomic_prot(struct page *page 14367@@ -32,6 +32,10 @@ void *kmap_atomic_prot(struct page *page
14271 enum fixed_addresses idx; 14368 enum fixed_addresses idx;
14272 unsigned long vaddr; 14369 unsigned long vaddr;
14273 14370
@@ -14278,7 +14375,7 @@ diff -urNp linux-2.6.29.6/arch/x86/mm/highmem_32.c linux-2.6.29.6/arch/x86/mm/hi
14278 /* even !CONFIG_PREEMPT needs this, for in_atomic in do_page_fault */ 14375 /* even !CONFIG_PREEMPT needs this, for in_atomic in do_page_fault */
14279 pagefault_disable(); 14376 pagefault_disable();
14280 14377
14281@@ -85,7 +89,17 @@ void *kmap_atomic_prot(struct page *page 14378@@ -43,7 +47,17 @@ void *kmap_atomic_prot(struct page *page
14282 idx = type + KM_TYPE_NR*smp_processor_id(); 14379 idx = type + KM_TYPE_NR*smp_processor_id();
14283 vaddr = __fix_to_virt(FIX_KMAP_BEGIN + idx); 14380 vaddr = __fix_to_virt(FIX_KMAP_BEGIN + idx);
14284 BUG_ON(!pte_none(*(kmap_pte-idx))); 14381 BUG_ON(!pte_none(*(kmap_pte-idx)));
@@ -14296,7 +14393,7 @@ diff -urNp linux-2.6.29.6/arch/x86/mm/highmem_32.c linux-2.6.29.6/arch/x86/mm/hi
14296 arch_flush_lazy_mmu_mode(); 14393 arch_flush_lazy_mmu_mode();
14297 14394
14298 return (void *)vaddr; 14395 return (void *)vaddr;
14299@@ -101,15 +115,29 @@ void kunmap_atomic(void *kvaddr, enum km 14396@@ -59,15 +73,29 @@ void kunmap_atomic(void *kvaddr, enum km
14300 unsigned long vaddr = (unsigned long) kvaddr & PAGE_MASK; 14397 unsigned long vaddr = (unsigned long) kvaddr & PAGE_MASK;
14301 enum fixed_addresses idx = type + KM_TYPE_NR*smp_processor_id(); 14398 enum fixed_addresses idx = type + KM_TYPE_NR*smp_processor_id();
14302 14399
@@ -14328,35 +14425,9 @@ diff -urNp linux-2.6.29.6/arch/x86/mm/highmem_32.c linux-2.6.29.6/arch/x86/mm/hi
14328 #ifdef CONFIG_DEBUG_HIGHMEM 14425 #ifdef CONFIG_DEBUG_HIGHMEM
14329 BUG_ON(vaddr < PAGE_OFFSET); 14426 BUG_ON(vaddr < PAGE_OFFSET);
14330 BUG_ON(vaddr >= (unsigned long)high_memory); 14427 BUG_ON(vaddr >= (unsigned long)high_memory);
14331@@ -128,11 +156,25 @@ void *kmap_atomic_pfn(unsigned long pfn, 14428diff -urNp linux-2.6.30.4/arch/x86/mm/hugetlbpage.c linux-2.6.30.4/arch/x86/mm/hugetlbpage.c
14332 enum fixed_addresses idx; 14429--- linux-2.6.30.4/arch/x86/mm/hugetlbpage.c 2009-07-24 17:47:51.000000000 -0400
14333 unsigned long vaddr; 14430+++ linux-2.6.30.4/arch/x86/mm/hugetlbpage.c 2009-07-30 09:48:09.971412512 -0400
14334
14335+#ifdef CONFIG_PAX_KERNEXEC
14336+ unsigned long cr0;
14337+#endif
14338+
14339 pagefault_disable();
14340
14341 idx = type + KM_TYPE_NR*smp_processor_id();
14342 vaddr = __fix_to_virt(FIX_KMAP_BEGIN + idx);
14343+
14344+#ifdef CONFIG_PAX_KERNEXEC
14345+ pax_open_kernel(cr0);
14346+#endif
14347+
14348 set_pte(kmap_pte-idx, pfn_pte(pfn, kmap_prot));
14349+
14350+#ifdef CONFIG_PAX_KERNEXEC
14351+ pax_close_kernel(cr0);
14352+#endif
14353+
14354 arch_flush_lazy_mmu_mode();
14355
14356 return (void*) vaddr;
14357diff -urNp linux-2.6.29.6/arch/x86/mm/hugetlbpage.c linux-2.6.29.6/arch/x86/mm/hugetlbpage.c
14358--- linux-2.6.29.6/arch/x86/mm/hugetlbpage.c 2009-07-02 19:41:20.000000000 -0400
14359+++ linux-2.6.29.6/arch/x86/mm/hugetlbpage.c 2009-07-23 17:34:32.085744993 -0400
14360@@ -267,13 +267,18 @@ static unsigned long hugetlb_get_unmappe 14431@@ -267,13 +267,18 @@ static unsigned long hugetlb_get_unmappe
14361 struct hstate *h = hstate_file(file); 14432 struct hstate *h = hstate_file(file);
14362 struct mm_struct *mm = current->mm; 14433 struct mm_struct *mm = current->mm;
@@ -14491,18 +14562,18 @@ diff -urNp linux-2.6.29.6/arch/x86/mm/hugetlbpage.c linux-2.6.29.6/arch/x86/mm/h
14491 (!vma || addr + len <= vma->vm_start)) 14562 (!vma || addr + len <= vma->vm_start))
14492 return addr; 14563 return addr;
14493 } 14564 }
14494diff -urNp linux-2.6.29.6/arch/x86/mm/init_32.c linux-2.6.29.6/arch/x86/mm/init_32.c 14565diff -urNp linux-2.6.30.4/arch/x86/mm/init_32.c linux-2.6.30.4/arch/x86/mm/init_32.c
14495--- linux-2.6.29.6/arch/x86/mm/init_32.c 2009-07-02 19:41:20.000000000 -0400 14566--- linux-2.6.30.4/arch/x86/mm/init_32.c 2009-07-24 17:47:51.000000000 -0400
14496+++ linux-2.6.29.6/arch/x86/mm/init_32.c 2009-07-23 17:34:32.086818444 -0400 14567+++ linux-2.6.30.4/arch/x86/mm/init_32.c 2009-07-30 09:48:09.972413251 -0400
14497@@ -50,6 +50,7 @@ 14568@@ -50,6 +50,7 @@
14498 #include <asm/setup.h> 14569 #include <asm/setup.h>
14499 #include <asm/cacheflush.h> 14570 #include <asm/cacheflush.h>
14500 #include <asm/smp.h> 14571 #include <asm/init.h>
14501+#include <asm/desc.h> 14572+#include <asm/desc.h>
14502 14573
14503 unsigned int __VMALLOC_RESERVE = 128 << 20; 14574 unsigned long max_low_pfn_mapped;
14504 14575 unsigned long max_pfn_mapped;
14505@@ -82,36 +83,6 @@ static __init void *alloc_low_page(void) 14576@@ -75,36 +76,6 @@ static __init void *alloc_low_page(void)
14506 } 14577 }
14507 14578
14508 /* 14579 /*
@@ -14517,7 +14588,7 @@ diff -urNp linux-2.6.29.6/arch/x86/mm/init_32.c linux-2.6.29.6/arch/x86/mm/init_
14517- 14588-
14518-#ifdef CONFIG_X86_PAE 14589-#ifdef CONFIG_X86_PAE
14519- if (!(pgd_val(*pgd) & _PAGE_PRESENT)) { 14590- if (!(pgd_val(*pgd) & _PAGE_PRESENT)) {
14520- if (after_init_bootmem) 14591- if (after_bootmem)
14521- pmd_table = (pmd_t *)alloc_bootmem_low_pages(PAGE_SIZE); 14592- pmd_table = (pmd_t *)alloc_bootmem_low_pages(PAGE_SIZE);
14522- else 14593- else
14523- pmd_table = (pmd_t *)alloc_low_page(); 14594- pmd_table = (pmd_t *)alloc_low_page();
@@ -14539,7 +14610,7 @@ diff -urNp linux-2.6.29.6/arch/x86/mm/init_32.c linux-2.6.29.6/arch/x86/mm/init_
14539 * Create a page table and place a pointer to it in a middle page 14610 * Create a page table and place a pointer to it in a middle page
14540 * directory entry: 14611 * directory entry:
14541 */ 14612 */
14542@@ -131,7 +102,11 @@ static pte_t * __init one_page_table_ini 14613@@ -124,13 +95,28 @@ static pte_t * __init one_page_table_ini
14543 page_table = (pte_t *)alloc_low_page(); 14614 page_table = (pte_t *)alloc_low_page();
14544 14615
14545 paravirt_alloc_pte(&init_mm, __pa(page_table) >> PAGE_SHIFT); 14616 paravirt_alloc_pte(&init_mm, __pa(page_table) >> PAGE_SHIFT);
@@ -14551,7 +14622,24 @@ diff -urNp linux-2.6.29.6/arch/x86/mm/init_32.c linux-2.6.29.6/arch/x86/mm/init_
14551 BUG_ON(page_table != pte_offset_kernel(pmd, 0)); 14622 BUG_ON(page_table != pte_offset_kernel(pmd, 0));
14552 } 14623 }
14553 14624
14554@@ -194,6 +169,7 @@ page_table_range_init(unsigned long star 14625 return pte_offset_kernel(pmd, 0);
14626 }
14627
14628+static pmd_t * __init one_md_table_init(pgd_t *pgd)
14629+{
14630+ pud_t *pud;
14631+ pmd_t *pmd_table;
14632+
14633+ pud = pud_offset(pgd, 0);
14634+ pmd_table = pmd_offset(pud, 0);
14635+
14636+ return pmd_table;
14637+}
14638+
14639 pmd_t * __init populate_extra_pmd(unsigned long vaddr)
14640 {
14641 int pgd_idx = pgd_index(vaddr);
14642@@ -204,6 +190,7 @@ page_table_range_init(unsigned long star
14555 int pgd_idx, pmd_idx; 14643 int pgd_idx, pmd_idx;
14556 unsigned long vaddr; 14644 unsigned long vaddr;
14557 pgd_t *pgd; 14645 pgd_t *pgd;
@@ -14559,7 +14647,7 @@ diff -urNp linux-2.6.29.6/arch/x86/mm/init_32.c linux-2.6.29.6/arch/x86/mm/init_
14559 pmd_t *pmd; 14647 pmd_t *pmd;
14560 pte_t *pte = NULL; 14648 pte_t *pte = NULL;
14561 14649
14562@@ -203,8 +179,13 @@ page_table_range_init(unsigned long star 14650@@ -213,8 +200,13 @@ page_table_range_init(unsigned long star
14563 pgd = pgd_base + pgd_idx; 14651 pgd = pgd_base + pgd_idx;
14564 14652
14565 for ( ; (pgd_idx < PTRS_PER_PGD) && (vaddr != end); pgd++, pgd_idx++) { 14653 for ( ; (pgd_idx < PTRS_PER_PGD) && (vaddr != end); pgd++, pgd_idx++) {
@@ -14575,7 +14663,7 @@ diff -urNp linux-2.6.29.6/arch/x86/mm/init_32.c linux-2.6.29.6/arch/x86/mm/init_
14575 for (; (pmd_idx < PTRS_PER_PMD) && (vaddr != end); 14663 for (; (pmd_idx < PTRS_PER_PMD) && (vaddr != end);
14576 pmd++, pmd_idx++) { 14664 pmd++, pmd_idx++) {
14577 pte = page_table_kmap_check(one_page_table_init(pmd), 14665 pte = page_table_kmap_check(one_page_table_init(pmd),
14578@@ -216,11 +197,23 @@ page_table_range_init(unsigned long star 14666@@ -226,11 +218,23 @@ page_table_range_init(unsigned long star
14579 } 14667 }
14580 } 14668 }
14581 14669
@@ -14603,10 +14691,10 @@ diff -urNp linux-2.6.29.6/arch/x86/mm/init_32.c linux-2.6.29.6/arch/x86/mm/init_
14603 } 14691 }
14604 14692
14605 /* 14693 /*
14606@@ -233,9 +226,10 @@ static void __init kernel_physical_mappi 14694@@ -246,9 +250,10 @@ kernel_physical_mapping_init(unsigned lo
14607 unsigned long end_pfn, 14695 int use_pse = page_size_mask == (1<<PG_LEVEL_2M);
14608 int use_pse) 14696 unsigned long start_pfn, end_pfn;
14609 { 14697 pgd_t *pgd_base = swapper_pg_dir;
14610- int pgd_idx, pmd_idx, pte_ofs; 14698- int pgd_idx, pmd_idx, pte_ofs;
14611+ unsigned int pgd_idx, pmd_idx, pte_ofs; 14699+ unsigned int pgd_idx, pmd_idx, pte_ofs;
14612 unsigned long pfn; 14700 unsigned long pfn;
@@ -14615,7 +14703,7 @@ diff -urNp linux-2.6.29.6/arch/x86/mm/init_32.c linux-2.6.29.6/arch/x86/mm/init_
14615 pmd_t *pmd; 14703 pmd_t *pmd;
14616 pte_t *pte; 14704 pte_t *pte;
14617 unsigned pages_2m, pages_4k; 14705 unsigned pages_2m, pages_4k;
14618@@ -265,8 +259,13 @@ repeat: 14706@@ -281,8 +286,13 @@ repeat:
14619 pfn = start_pfn; 14707 pfn = start_pfn;
14620 pgd_idx = pgd_index((pfn<<PAGE_SHIFT) + PAGE_OFFSET); 14708 pgd_idx = pgd_index((pfn<<PAGE_SHIFT) + PAGE_OFFSET);
14621 pgd = pgd_base + pgd_idx; 14709 pgd = pgd_base + pgd_idx;
@@ -14631,7 +14719,7 @@ diff -urNp linux-2.6.29.6/arch/x86/mm/init_32.c linux-2.6.29.6/arch/x86/mm/init_
14631 14719
14632 if (pfn >= end_pfn) 14720 if (pfn >= end_pfn)
14633 continue; 14721 continue;
14634@@ -278,14 +277,13 @@ repeat: 14722@@ -294,14 +304,13 @@ repeat:
14635 #endif 14723 #endif
14636 for (; pmd_idx < PTRS_PER_PMD && pfn < end_pfn; 14724 for (; pmd_idx < PTRS_PER_PMD && pfn < end_pfn;
14637 pmd++, pmd_idx++) { 14725 pmd++, pmd_idx++) {
@@ -14647,7 +14735,7 @@ diff -urNp linux-2.6.29.6/arch/x86/mm/init_32.c linux-2.6.29.6/arch/x86/mm/init_
14647 pgprot_t prot = PAGE_KERNEL_LARGE; 14735 pgprot_t prot = PAGE_KERNEL_LARGE;
14648 /* 14736 /*
14649 * first pass will use the same initial 14737 * first pass will use the same initial
14650@@ -295,11 +293,7 @@ repeat: 14738@@ -311,11 +320,7 @@ repeat:
14651 __pgprot(PTE_IDENT_ATTR | 14739 __pgprot(PTE_IDENT_ATTR |
14652 _PAGE_PSE); 14740 _PAGE_PSE);
14653 14741
@@ -14660,7 +14748,7 @@ diff -urNp linux-2.6.29.6/arch/x86/mm/init_32.c linux-2.6.29.6/arch/x86/mm/init_
14660 prot = PAGE_KERNEL_LARGE_EXEC; 14748 prot = PAGE_KERNEL_LARGE_EXEC;
14661 14749
14662 pages_2m++; 14750 pages_2m++;
14663@@ -316,7 +310,7 @@ repeat: 14751@@ -332,7 +337,7 @@ repeat:
14664 pte_ofs = pte_index((pfn<<PAGE_SHIFT) + PAGE_OFFSET); 14752 pte_ofs = pte_index((pfn<<PAGE_SHIFT) + PAGE_OFFSET);
14665 pte += pte_ofs; 14753 pte += pte_ofs;
14666 for (; pte_ofs < PTRS_PER_PTE && pfn < end_pfn; 14754 for (; pte_ofs < PTRS_PER_PTE && pfn < end_pfn;
@@ -14669,7 +14757,7 @@ diff -urNp linux-2.6.29.6/arch/x86/mm/init_32.c linux-2.6.29.6/arch/x86/mm/init_
14669 pgprot_t prot = PAGE_KERNEL; 14757 pgprot_t prot = PAGE_KERNEL;
14670 /* 14758 /*
14671 * first pass will use the same initial 14759 * first pass will use the same initial
14672@@ -324,7 +318,7 @@ repeat: 14760@@ -340,7 +345,7 @@ repeat:
14673 */ 14761 */
14674 pgprot_t init_prot = __pgprot(PTE_IDENT_ATTR); 14762 pgprot_t init_prot = __pgprot(PTE_IDENT_ATTR);
14675 14763
@@ -14678,22 +14766,7 @@ diff -urNp linux-2.6.29.6/arch/x86/mm/init_32.c linux-2.6.29.6/arch/x86/mm/init_
14678 prot = PAGE_KERNEL_EXEC; 14766 prot = PAGE_KERNEL_EXEC;
14679 14767
14680 pages_4k++; 14768 pages_4k++;
14681@@ -369,7 +363,13 @@ repeat: 14769@@ -492,7 +497,7 @@ void __init native_pagetable_setup_start
14682 */
14683 int devmem_is_allowed(unsigned long pagenr)
14684 {
14685- if (pagenr <= 256)
14686+ if (!pagenr)
14687+ return 1;
14688+#ifdef CONFIG_VM86
14689+ if (pagenr < (ISA_START_ADDRESS >> PAGE_SHIFT))
14690+ return 1;
14691+#endif
14692+ if ((ISA_START_ADDRESS >> PAGE_SHIFT) <= pagenr && pagenr < (ISA_END_ADDRESS >> PAGE_SHIFT))
14693 return 1;
14694 if (iomem_is_exclusive(pagenr << PAGE_SHIFT))
14695 return 0;
14696@@ -508,7 +508,7 @@ void __init native_pagetable_setup_start
14697 14770
14698 pud = pud_offset(pgd, va); 14771 pud = pud_offset(pgd, va);
14699 pmd = pmd_offset(pud, va); 14772 pmd = pmd_offset(pud, va);
@@ -14702,7 +14775,7 @@ diff -urNp linux-2.6.29.6/arch/x86/mm/init_32.c linux-2.6.29.6/arch/x86/mm/init_
14702 break; 14775 break;
14703 14776
14704 pte = pte_offset_kernel(pmd, va); 14777 pte = pte_offset_kernel(pmd, va);
14705@@ -559,9 +559,7 @@ static void __init early_ioremap_page_ta 14778@@ -544,9 +549,7 @@ void __init early_ioremap_page_table_ran
14706 14779
14707 static void __init pagetable_init(void) 14780 static void __init pagetable_init(void)
14708 { 14781 {
@@ -14713,7 +14786,7 @@ diff -urNp linux-2.6.29.6/arch/x86/mm/init_32.c linux-2.6.29.6/arch/x86/mm/init_
14713 } 14786 }
14714 14787
14715 #ifdef CONFIG_ACPI_SLEEP 14788 #ifdef CONFIG_ACPI_SLEEP
14716@@ -569,12 +567,12 @@ static void __init pagetable_init(void) 14789@@ -554,12 +557,12 @@ static void __init pagetable_init(void)
14717 * ACPI suspend needs this for resume, because things like the intel-agp 14790 * ACPI suspend needs this for resume, because things like the intel-agp
14718 * driver might have split up a kernel 4MB mapping. 14791 * driver might have split up a kernel 4MB mapping.
14719 */ 14792 */
@@ -14728,7 +14801,7 @@ diff -urNp linux-2.6.29.6/arch/x86/mm/init_32.c linux-2.6.29.6/arch/x86/mm/init_
14728 } 14801 }
14729 #else /* !CONFIG_ACPI_SLEEP */ 14802 #else /* !CONFIG_ACPI_SLEEP */
14730 static inline void save_pg_dir(void) 14803 static inline void save_pg_dir(void)
14731@@ -604,13 +602,11 @@ void zap_low_mappings(void) 14804@@ -589,13 +592,11 @@ void zap_low_mappings(void)
14732 14805
14733 int nx_enabled; 14806 int nx_enabled;
14734 14807
@@ -14743,7 +14816,7 @@ diff -urNp linux-2.6.29.6/arch/x86/mm/init_32.c linux-2.6.29.6/arch/x86/mm/init_
14743 /* 14816 /*
14744 * noexec = on|off 14817 * noexec = on|off
14745 * 14818 *
14746@@ -619,40 +615,33 @@ static int disable_nx __initdata; 14819@@ -604,40 +605,33 @@ static int disable_nx __initdata;
14747 * on Enable 14820 * on Enable
14748 * off Disable 14821 * off Disable
14749 */ 14822 */
@@ -14774,7 +14847,7 @@ diff -urNp linux-2.6.29.6/arch/x86/mm/init_32.c linux-2.6.29.6/arch/x86/mm/init_
14774 early_param("noexec", noexec_setup); 14847 early_param("noexec", noexec_setup);
14775+#endif 14848+#endif
14776 14849
14777 static void __init set_nx(void) 14850 void __init set_nx(void)
14778 { 14851 {
14779- unsigned int v[4], l, h; 14852- unsigned int v[4], l, h;
14780+ if (!nx_enabled && cpu_has_nx) { 14853+ if (!nx_enabled && cpu_has_nx) {
@@ -14797,7 +14870,7 @@ diff -urNp linux-2.6.29.6/arch/x86/mm/init_32.c linux-2.6.29.6/arch/x86/mm/init_
14797 } 14870 }
14798 } 14871 }
14799 #endif 14872 #endif
14800@@ -1035,7 +1024,7 @@ void __init mem_init(void) 14873@@ -934,7 +928,7 @@ void __init mem_init(void)
14801 set_highmem_pages_init(); 14874 set_highmem_pages_init();
14802 14875
14803 codesize = (unsigned long) &_etext - (unsigned long) &_text; 14876 codesize = (unsigned long) &_etext - (unsigned long) &_text;
@@ -14806,7 +14879,7 @@ diff -urNp linux-2.6.29.6/arch/x86/mm/init_32.c linux-2.6.29.6/arch/x86/mm/init_
14806 initsize = (unsigned long) &__init_end - (unsigned long) &__init_begin; 14879 initsize = (unsigned long) &__init_end - (unsigned long) &__init_begin;
14807 14880
14808 kclist_add(&kcore_mem, __va(0), max_low_pfn << PAGE_SHIFT); 14881 kclist_add(&kcore_mem, __va(0), max_low_pfn << PAGE_SHIFT);
14809@@ -1081,10 +1070,10 @@ void __init mem_init(void) 14882@@ -980,10 +974,10 @@ void __init mem_init(void)
14810 ((unsigned long)&__init_end - 14883 ((unsigned long)&__init_end -
14811 (unsigned long)&__init_begin) >> 10, 14884 (unsigned long)&__init_begin) >> 10,
14812 14885
@@ -14820,57 +14893,10 @@ diff -urNp linux-2.6.29.6/arch/x86/mm/init_32.c linux-2.6.29.6/arch/x86/mm/init_
14820 ((unsigned long)&_etext - (unsigned long)&_text) >> 10); 14893 ((unsigned long)&_etext - (unsigned long)&_text) >> 10);
14821 14894
14822 /* 14895 /*
14823@@ -1227,6 +1216,46 @@ void free_init_pages(char *what, unsigne 14896diff -urNp linux-2.6.30.4/arch/x86/mm/init_64.c linux-2.6.30.4/arch/x86/mm/init_64.c
14824 14897--- linux-2.6.30.4/arch/x86/mm/init_64.c 2009-07-24 17:47:51.000000000 -0400
14825 void free_initmem(void) 14898+++ linux-2.6.30.4/arch/x86/mm/init_64.c 2009-07-30 09:48:09.972413251 -0400
14826 { 14899@@ -202,12 +202,24 @@ void set_pte_vaddr_pud(pud_t *pud_page,
14827+
14828+#ifdef CONFIG_PAX_KERNEXEC
14829+ /* PaX: limit KERNEL_CS to actual size */
14830+ unsigned long addr, limit;
14831+ struct desc_struct d;
14832+ int cpu;
14833+ pgd_t *pgd;
14834+ pud_t *pud;
14835+ pmd_t *pmd;
14836+
14837+#ifdef CONFIG_MODULES
14838+ limit = ktva_ktla((unsigned long)&MODULES_END);
14839+#else
14840+ limit = (unsigned long)&_etext;
14841+#endif
14842+ limit = (limit - 1UL) >> PAGE_SHIFT;
14843+
14844+ for (cpu = 0; cpu < NR_CPUS; cpu++) {
14845+ pack_descriptor(&d, get_desc_base(&get_cpu_gdt_table(cpu)[GDT_ENTRY_KERNEL_CS]), limit, 0x9B, 0xC);
14846+ write_gdt_entry(get_cpu_gdt_table(cpu), GDT_ENTRY_KERNEL_CS, &d, DESCTYPE_S);
14847+ }
14848+
14849+ /* PaX: make KERNEL_CS read-only */
14850+ for (addr = ktla_ktva((unsigned long)&_text); addr < (unsigned long)&_data; addr += PMD_SIZE) {
14851+ pgd = pgd_offset_k(addr);
14852+ pud = pud_offset(pgd, addr);
14853+ pmd = pmd_offset(pud, addr);
14854+ set_pmd(pmd, __pmd(pmd_val(*pmd) & ~_PAGE_RW));
14855+ }
14856+#ifdef CONFIG_X86_PAE
14857+ for (addr = (unsigned long)&__init_begin; addr < (unsigned long)&__init_end; addr += PMD_SIZE) {
14858+ pgd = pgd_offset_k(addr);
14859+ pud = pud_offset(pgd, addr);
14860+ pmd = pmd_offset(pud, addr);
14861+ set_pmd(pmd, __pmd(pmd_val(*pmd) | (_PAGE_NX & __supported_pte_mask)));
14862+ }
14863+#endif
14864+ flush_tlb_all();
14865+#endif
14866+
14867 free_init_pages("unused kernel memory",
14868 (unsigned long)(&__init_begin),
14869 (unsigned long)(&__init_end));
14870diff -urNp linux-2.6.29.6/arch/x86/mm/init_64.c linux-2.6.29.6/arch/x86/mm/init_64.c
14871--- linux-2.6.29.6/arch/x86/mm/init_64.c 2009-07-02 19:41:20.000000000 -0400
14872+++ linux-2.6.29.6/arch/x86/mm/init_64.c 2009-07-23 17:34:32.086818444 -0400
14873@@ -175,6 +175,10 @@ set_pte_vaddr_pud(pud_t *pud_page, unsig
14874 pmd_t *pmd; 14900 pmd_t *pmd;
14875 pte_t *pte; 14901 pte_t *pte;
14876 14902
@@ -14879,13 +14905,9 @@ diff -urNp linux-2.6.29.6/arch/x86/mm/init_64.c linux-2.6.29.6/arch/x86/mm/init_
14879+#endif 14905+#endif
14880+ 14906+
14881 pud = pud_page + pud_index(vaddr); 14907 pud = pud_page + pud_index(vaddr);
14882 if (pud_none(*pud)) { 14908 pmd = fill_pmd(pud, vaddr);
14883 pmd = (pmd_t *) spp_getpage(); 14909 pte = fill_pte(pmd, vaddr);
14884@@ -196,8 +200,17 @@ set_pte_vaddr_pud(pud_t *pud_page, unsig
14885 }
14886 14910
14887 pte = pte_offset_kernel(pmd, vaddr);
14888+
14889+#ifdef CONFIG_PAX_KERNEXEC 14911+#ifdef CONFIG_PAX_KERNEXEC
14890+ pax_open_kernel(cr0); 14912+ pax_open_kernel(cr0);
14891+#endif 14913+#endif
@@ -14899,7 +14921,7 @@ diff -urNp linux-2.6.29.6/arch/x86/mm/init_64.c linux-2.6.29.6/arch/x86/mm/init_
14899 /* 14921 /*
14900 * It's enough to flush this one mapping. 14922 * It's enough to flush this one mapping.
14901 * (PGE mappings get flushed as well) 14923 * (PGE mappings get flushed as well)
14902@@ -238,14 +251,12 @@ static void __init __init_extra_mapping( 14924@@ -265,14 +277,12 @@ static void __init __init_extra_mapping(
14903 pgd = pgd_offset_k((unsigned long)__va(phys)); 14925 pgd = pgd_offset_k((unsigned long)__va(phys));
14904 if (pgd_none(*pgd)) { 14926 if (pgd_none(*pgd)) {
14905 pud = (pud_t *) spp_getpage(); 14927 pud = (pud_t *) spp_getpage();
@@ -14916,28 +14938,90 @@ diff -urNp linux-2.6.29.6/arch/x86/mm/init_64.c linux-2.6.29.6/arch/x86/mm/init_
14916 } 14938 }
14917 pmd = pmd_offset(pud, phys); 14939 pmd = pmd_offset(pud, phys);
14918 BUG_ON(!pmd_none(*pmd)); 14940 BUG_ON(!pmd_none(*pmd));
14919@@ -888,7 +899,9 @@ EXPORT_SYMBOL_GPL(memory_add_physaddr_to 14941@@ -882,8 +892,8 @@ int kern_addr_valid(unsigned long addr)
14942 static struct vm_area_struct gate_vma = {
14943 .vm_start = VSYSCALL_START,
14944 .vm_end = VSYSCALL_START + (VSYSCALL_MAPPED_PAGES * PAGE_SIZE),
14945- .vm_page_prot = PAGE_READONLY_EXEC,
14946- .vm_flags = VM_READ | VM_EXEC
14947+ .vm_page_prot = PAGE_READONLY,
14948+ .vm_flags = VM_READ
14949 };
14950
14951 struct vm_area_struct *get_gate_vma(struct task_struct *tsk)
14952@@ -917,7 +927,7 @@ int in_gate_area_no_task(unsigned long a
14953
14954 const char *arch_vma_name(struct vm_area_struct *vma)
14955 {
14956- if (vma->vm_mm && vma->vm_start == (long)vma->vm_mm->context.vdso)
14957+ if (vma->vm_mm && vma->vm_start == vma->vm_mm->context.vdso)
14958 return "[vdso]";
14959 if (vma == &gate_vma)
14960 return "[vsyscall]";
14961diff -urNp linux-2.6.30.4/arch/x86/mm/init.c linux-2.6.30.4/arch/x86/mm/init.c
14962--- linux-2.6.30.4/arch/x86/mm/init.c 2009-07-24 17:47:51.000000000 -0400
14963+++ linux-2.6.30.4/arch/x86/mm/init.c 2009-07-30 09:48:09.971412512 -0400
14964@@ -348,7 +348,13 @@ unsigned long __init_refok init_memory_m
14920 */ 14965 */
14921 int devmem_is_allowed(unsigned long pagenr) 14966 int devmem_is_allowed(unsigned long pagenr)
14922 { 14967 {
14923- if (pagenr <= 256) 14968- if (pagenr <= 256)
14924+ if (!pagenr) 14969+ if (!pagenr)
14925+ return 1; 14970+ return 1;
14971+#ifdef CONFIG_VM86
14972+ if (pagenr < (ISA_START_ADDRESS >> PAGE_SHIFT))
14973+ return 1;
14974+#endif
14926+ if ((ISA_START_ADDRESS >> PAGE_SHIFT) <= pagenr && pagenr < (ISA_END_ADDRESS >> PAGE_SHIFT)) 14975+ if ((ISA_START_ADDRESS >> PAGE_SHIFT) <= pagenr && pagenr < (ISA_END_ADDRESS >> PAGE_SHIFT))
14927 return 1; 14976 return 1;
14928 if (iomem_is_exclusive(pagenr << PAGE_SHIFT)) 14977 if (iomem_is_exclusive(pagenr << PAGE_SHIFT))
14929 return 0; 14978 return 0;
14930@@ -979,6 +992,39 @@ void free_init_pages(char *what, unsigne 14979@@ -396,6 +402,75 @@ void free_init_pages(char *what, unsigne
14931 14980
14932 void free_initmem(void) 14981 void free_initmem(void)
14933 { 14982 {
14934+ 14983+
14935+#ifdef CONFIG_PAX_KERNEXEC 14984+#ifdef CONFIG_PAX_KERNEXEC
14936+ unsigned long addr, end;
14937+ pgd_t *pgd; 14985+ pgd_t *pgd;
14938+ pud_t *pud; 14986+ pud_t *pud;
14939+ pmd_t *pmd; 14987+ pmd_t *pmd;
14940+ 14988+
14989+#ifdef CONFIG_X86_32
14990+ /* PaX: limit KERNEL_CS to actual size */
14991+ unsigned long addr, limit;
14992+ struct desc_struct d;
14993+ int cpu;
14994+
14995+#ifdef CONFIG_MODULES
14996+ limit = ktva_ktla((unsigned long)&MODULES_END);
14997+#else
14998+ limit = (unsigned long)&_etext;
14999+#endif
15000+ limit = (limit - 1UL) >> PAGE_SHIFT;
15001+
15002+ for (cpu = 0; cpu < NR_CPUS; cpu++) {
15003+ pack_descriptor(&d, get_desc_base(&get_cpu_gdt_table(cpu)[GDT_ENTRY_KERNEL_CS]), limit, 0x9B, 0xC);
15004+ write_gdt_entry(get_cpu_gdt_table(cpu), GDT_ENTRY_KERNEL_CS, &d, DESCTYPE_S);
15005+ }
15006+
15007+ /* PaX: make KERNEL_CS read-only */
15008+ for (addr = ktla_ktva((unsigned long)&_text); addr < (unsigned long)&_data; addr += PMD_SIZE) {
15009+ pgd = pgd_offset_k(addr);
15010+ pud = pud_offset(pgd, addr);
15011+ pmd = pmd_offset(pud, addr);
15012+ set_pmd(pmd, __pmd(pmd_val(*pmd) & ~_PAGE_RW));
15013+ }
15014+#ifdef CONFIG_X86_PAE
15015+ for (addr = (unsigned long)&__init_begin; addr < (unsigned long)&__init_end; addr += PMD_SIZE) {
15016+ pgd = pgd_offset_k(addr);
15017+ pud = pud_offset(pgd, addr);
15018+ pmd = pmd_offset(pud, addr);
15019+ set_pmd(pmd, __pmd(pmd_val(*pmd) | (_PAGE_NX & __supported_pte_mask)));
15020+ }
15021+#endif
15022+#else
15023+ unsigned long addr, end;
15024+
14941+ /* PaX: make kernel code/rodata read-only, rest non-executable */ 15025+ /* PaX: make kernel code/rodata read-only, rest non-executable */
14942+ for (addr = __START_KERNEL_map; addr < __START_KERNEL_map + KERNEL_IMAGE_SIZE; addr += PMD_SIZE) { 15026+ for (addr = __START_KERNEL_map; addr < __START_KERNEL_map + KERNEL_IMAGE_SIZE; addr += PMD_SIZE) {
14943+ pgd = pgd_offset_k(addr); 15027+ pgd = pgd_offset_k(addr);
@@ -14960,6 +15044,7 @@ diff -urNp linux-2.6.29.6/arch/x86/mm/init_64.c linux-2.6.29.6/arch/x86/mm/init_
14960+ else 15044+ else
14961+ set_pmd(pmd, __pmd(pmd_val(*pmd) | (_PAGE_NX & __supported_pte_mask))); 15045+ set_pmd(pmd, __pmd(pmd_val(*pmd) | (_PAGE_NX & __supported_pte_mask)));
14962+ } 15046+ }
15047+#endif
14963+ 15048+
14964+ flush_tlb_all(); 15049+ flush_tlb_all();
14965+#endif 15050+#endif
@@ -14967,42 +15052,40 @@ diff -urNp linux-2.6.29.6/arch/x86/mm/init_64.c linux-2.6.29.6/arch/x86/mm/init_
14967 free_init_pages("unused kernel memory", 15052 free_init_pages("unused kernel memory",
14968 (unsigned long)(&__init_begin), 15053 (unsigned long)(&__init_begin),
14969 (unsigned long)(&__init_end)); 15054 (unsigned long)(&__init_end));
14970@@ -1116,8 +1162,8 @@ int kern_addr_valid(unsigned long addr) 15055diff -urNp linux-2.6.30.4/arch/x86/mm/iomap_32.c linux-2.6.30.4/arch/x86/mm/iomap_32.c
14971 static struct vm_area_struct gate_vma = { 15056--- linux-2.6.30.4/arch/x86/mm/iomap_32.c 2009-07-24 17:47:51.000000000 -0400
14972 .vm_start = VSYSCALL_START, 15057+++ linux-2.6.30.4/arch/x86/mm/iomap_32.c 2009-07-30 09:48:09.973477350 -0400
14973 .vm_end = VSYSCALL_START + (VSYSCALL_MAPPED_PAGES * PAGE_SIZE), 15058@@ -37,12 +37,26 @@ void *kmap_atomic_prot_pfn(unsigned long
14974- .vm_page_prot = PAGE_READONLY_EXEC, 15059 enum fixed_addresses idx;
14975- .vm_flags = VM_READ | VM_EXEC 15060 unsigned long vaddr;
14976+ .vm_page_prot = PAGE_READONLY,
14977+ .vm_flags = VM_READ
14978 };
14979 15061
14980 struct vm_area_struct *get_gate_vma(struct task_struct *tsk) 15062+#ifdef CONFIG_PAX_KERNEXEC
14981@@ -1151,7 +1197,7 @@ int in_gate_area_no_task(unsigned long a 15063+ unsigned long cr0;
15064+#endif
15065+
15066 pagefault_disable();
14982 15067
14983 const char *arch_vma_name(struct vm_area_struct *vma) 15068 debug_kmap_atomic(type);
14984 { 15069 idx = type + KM_TYPE_NR * smp_processor_id();
14985- if (vma->vm_mm && vma->vm_start == (long)vma->vm_mm->context.vdso) 15070 vaddr = __fix_to_virt(FIX_KMAP_BEGIN + idx);
14986+ if (vma->vm_mm && vma->vm_start == vma->vm_mm->context.vdso) 15071+
14987 return "[vdso]"; 15072+#ifdef CONFIG_PAX_KERNEXEC
14988 if (vma == &gate_vma) 15073+ pax_open_kernel(cr0);
14989 return "[vsyscall]"; 15074+#endif
14990diff -urNp linux-2.6.29.6/arch/x86/mm/iomap_32.c linux-2.6.29.6/arch/x86/mm/iomap_32.c 15075+
14991--- linux-2.6.29.6/arch/x86/mm/iomap_32.c 2009-07-02 19:41:20.000000000 -0400 15076 set_pte(kmap_pte - idx, pfn_pte(pfn, prot));
14992+++ linux-2.6.29.6/arch/x86/mm/iomap_32.c 2009-07-23 17:34:32.086818444 -0400 15077+
14993@@ -24,7 +24,7 @@ int is_io_mapping_possible(resource_size 15078+#ifdef CONFIG_PAX_KERNEXEC
14994 { 15079+ pax_close_kernel(cr0);
14995 #ifndef CONFIG_X86_PAE 15080+#endif
14996 /* There is no way to map greater than 1 << 32 address without PAE */ 15081+
14997- if (base + size > 0x100000000ULL) 15082 arch_flush_lazy_mmu_mode();
14998+ if ((u64)base + size > 0x100000000ULL) 15083
14999 return 0; 15084 return (void *)vaddr;
15000 #endif 15085diff -urNp linux-2.6.30.4/arch/x86/mm/ioremap.c linux-2.6.30.4/arch/x86/mm/ioremap.c
15001 return 1; 15086--- linux-2.6.30.4/arch/x86/mm/ioremap.c 2009-07-24 17:47:51.000000000 -0400
15002diff -urNp linux-2.6.29.6/arch/x86/mm/ioremap.c linux-2.6.29.6/arch/x86/mm/ioremap.c 15087+++ linux-2.6.30.4/arch/x86/mm/ioremap.c 2009-07-30 19:56:23.514032300 -0400
15003--- linux-2.6.29.6/arch/x86/mm/ioremap.c 2009-07-02 19:41:20.000000000 -0400 15088@@ -111,8 +111,8 @@ int page_is_ram(unsigned long pagenr)
15004+++ linux-2.6.29.6/arch/x86/mm/ioremap.c 2009-07-23 17:34:37.458887026 -0400
15005@@ -114,8 +114,8 @@ int page_is_ram(unsigned long pagenr)
15006 * Second special case: Some BIOSen report the PC BIOS 15089 * Second special case: Some BIOSen report the PC BIOS
15007 * area (640->1Mb) as ram even though it is not. 15090 * area (640->1Mb) as ram even though it is not.
15008 */ 15091 */
@@ -15013,7 +15096,7 @@ diff -urNp linux-2.6.29.6/arch/x86/mm/ioremap.c linux-2.6.29.6/arch/x86/mm/iorem
15013 return 0; 15096 return 0;
15014 15097
15015 for (i = 0; i < e820.nr_map; i++) { 15098 for (i = 0; i < e820.nr_map; i++) {
15016@@ -210,10 +210,7 @@ static void __iomem *__ioremap_caller(re 15099@@ -207,10 +207,7 @@ static void __iomem *__ioremap_caller(re
15017 /* 15100 /*
15018 * Don't allow anybody to remap normal RAM that we're using.. 15101 * Don't allow anybody to remap normal RAM that we're using..
15019 */ 15102 */
@@ -15025,7 +15108,7 @@ diff -urNp linux-2.6.29.6/arch/x86/mm/ioremap.c linux-2.6.29.6/arch/x86/mm/iorem
15025 int is_ram = page_is_ram(pfn); 15108 int is_ram = page_is_ram(pfn);
15026 15109
15027 if (is_ram && pfn_valid(pfn) && !PageReserved(pfn_to_page(pfn))) 15110 if (is_ram && pfn_valid(pfn) && !PageReserved(pfn_to_page(pfn)))
15028@@ -275,6 +272,8 @@ static void __iomem *__ioremap_caller(re 15111@@ -272,6 +269,8 @@ static void __iomem *__ioremap_caller(re
15029 break; 15112 break;
15030 } 15113 }
15031 15114
@@ -15034,7 +15117,7 @@ diff -urNp linux-2.6.29.6/arch/x86/mm/ioremap.c linux-2.6.29.6/arch/x86/mm/iorem
15034 /* 15117 /*
15035 * Ok, go for it.. 15118 * Ok, go for it..
15036 */ 15119 */
15037@@ -490,7 +489,6 @@ static int __init early_ioremap_debug_se 15120@@ -489,7 +488,6 @@ static int __init early_ioremap_debug_se
15038 early_param("early_ioremap_debug", early_ioremap_debug_setup); 15121 early_param("early_ioremap_debug", early_ioremap_debug_setup);
15039 15122
15040 static __initdata int after_paging_init; 15123 static __initdata int after_paging_init;
@@ -15042,21 +15125,20 @@ diff -urNp linux-2.6.29.6/arch/x86/mm/ioremap.c linux-2.6.29.6/arch/x86/mm/iorem
15042 15125
15043 static inline pmd_t * __init early_ioremap_pmd(unsigned long addr) 15126 static inline pmd_t * __init early_ioremap_pmd(unsigned long addr)
15044 { 15127 {
15045@@ -505,7 +503,11 @@ static inline pmd_t * __init early_iorem 15128@@ -502,11 +500,6 @@ static inline pmd_t * __init early_iorem
15129 return pmd;
15130 }
15046 15131
15047 static inline pte_t * __init early_ioremap_pte(unsigned long addr) 15132-static inline pte_t * __init early_ioremap_pte(unsigned long addr)
15048 { 15133-{
15049- return &bm_pte[pte_index(addr)]; 15134- return &bm_pte[pte_index(addr)];
15050+#ifdef CONFIG_X86_32 15135-}
15051+ return &swapper_pg_fixmap[pte_index(addr)]; 15136-
15052+#else 15137 static unsigned long slot_virt[FIX_BTMAPS_SLOTS] __initdata;
15053+ return &level1_fixmap_pgt[pte_index(addr)];
15054+#endif
15055 }
15056 15138
15057 void __init early_ioremap_init(void) 15139 void __init early_ioremap_init(void)
15058@@ -516,8 +518,6 @@ void __init early_ioremap_init(void) 15140@@ -521,8 +514,6 @@ void __init early_ioremap_init(void)
15059 printk(KERN_INFO "early_ioremap_init()\n"); 15141 slot_virt[i] = __fix_to_virt(FIX_BTMAP_BEGIN - NR_FIX_BTMAPS*i);
15060 15142
15061 pmd = early_ioremap_pmd(fix_to_virt(FIX_BTMAP_BEGIN)); 15143 pmd = early_ioremap_pmd(fix_to_virt(FIX_BTMAP_BEGIN));
15062- memset(bm_pte, 0, sizeof(bm_pte)); 15144- memset(bm_pte, 0, sizeof(bm_pte));
@@ -15064,9 +15146,26 @@ diff -urNp linux-2.6.29.6/arch/x86/mm/ioremap.c linux-2.6.29.6/arch/x86/mm/iorem
15064 15146
15065 /* 15147 /*
15066 * The boot-ioremap range spans multiple pmds, for which 15148 * The boot-ioremap range spans multiple pmds, for which
15067diff -urNp linux-2.6.29.6/arch/x86/mm/mmap.c linux-2.6.29.6/arch/x86/mm/mmap.c 15149@@ -552,13 +543,15 @@ static void __init __early_set_fixmap(en
15068--- linux-2.6.29.6/arch/x86/mm/mmap.c 2009-07-02 19:41:20.000000000 -0400 15150 phys_addr_t phys, pgprot_t flags)
15069+++ linux-2.6.29.6/arch/x86/mm/mmap.c 2009-07-23 17:34:32.087725848 -0400 15151 {
15152 unsigned long addr = __fix_to_virt(idx);
15153+ unsigned int level;
15154 pte_t *pte;
15155
15156 if (idx >= __end_of_fixed_addresses) {
15157 BUG();
15158 return;
15159 }
15160- pte = early_ioremap_pte(addr);
15161+ pte = lookup_address(addr, &level);
15162+ BUG_ON(!pte || level != PG_LEVEL_4K);
15163
15164 if (pgprot_val(flags))
15165 set_pte(pte, pfn_pte(phys >> PAGE_SHIFT, flags));
15166diff -urNp linux-2.6.30.4/arch/x86/mm/mmap.c linux-2.6.30.4/arch/x86/mm/mmap.c
15167--- linux-2.6.30.4/arch/x86/mm/mmap.c 2009-07-24 17:47:51.000000000 -0400
15168+++ linux-2.6.30.4/arch/x86/mm/mmap.c 2009-07-30 09:48:09.973477350 -0400
15070@@ -36,7 +36,7 @@ 15169@@ -36,7 +36,7 @@
15071 * Leave an at least ~128 MB hole. 15170 * Leave an at least ~128 MB hole.
15072 */ 15171 */
@@ -15148,9 +15247,9 @@ diff -urNp linux-2.6.29.6/arch/x86/mm/mmap.c linux-2.6.29.6/arch/x86/mm/mmap.c
15148 mm->get_unmapped_area = arch_get_unmapped_area_topdown; 15247 mm->get_unmapped_area = arch_get_unmapped_area_topdown;
15149 mm->unmap_area = arch_unmap_area_topdown; 15248 mm->unmap_area = arch_unmap_area_topdown;
15150 } 15249 }
15151diff -urNp linux-2.6.29.6/arch/x86/mm/numa_32.c linux-2.6.29.6/arch/x86/mm/numa_32.c 15250diff -urNp linux-2.6.30.4/arch/x86/mm/numa_32.c linux-2.6.30.4/arch/x86/mm/numa_32.c
15152--- linux-2.6.29.6/arch/x86/mm/numa_32.c 2009-07-02 19:41:20.000000000 -0400 15251--- linux-2.6.30.4/arch/x86/mm/numa_32.c 2009-07-24 17:47:51.000000000 -0400
15153+++ linux-2.6.29.6/arch/x86/mm/numa_32.c 2009-07-23 17:34:32.087725848 -0400 15252+++ linux-2.6.30.4/arch/x86/mm/numa_32.c 2009-07-30 09:48:09.974436034 -0400
15154@@ -98,7 +98,6 @@ unsigned long node_memmap_size_bytes(int 15253@@ -98,7 +98,6 @@ unsigned long node_memmap_size_bytes(int
15155 } 15254 }
15156 #endif 15255 #endif
@@ -15159,10 +15258,10 @@ diff -urNp linux-2.6.29.6/arch/x86/mm/numa_32.c linux-2.6.29.6/arch/x86/mm/numa_
15159 extern unsigned long highend_pfn, highstart_pfn; 15258 extern unsigned long highend_pfn, highstart_pfn;
15160 15259
15161 #define LARGE_PAGE_BYTES (PTRS_PER_PTE * PAGE_SIZE) 15260 #define LARGE_PAGE_BYTES (PTRS_PER_PTE * PAGE_SIZE)
15162diff -urNp linux-2.6.29.6/arch/x86/mm/pageattr.c linux-2.6.29.6/arch/x86/mm/pageattr.c 15261diff -urNp linux-2.6.30.4/arch/x86/mm/pageattr.c linux-2.6.30.4/arch/x86/mm/pageattr.c
15163--- linux-2.6.29.6/arch/x86/mm/pageattr.c 2009-07-02 19:41:20.000000000 -0400 15262--- linux-2.6.30.4/arch/x86/mm/pageattr.c 2009-07-24 17:47:51.000000000 -0400
15164+++ linux-2.6.29.6/arch/x86/mm/pageattr.c 2009-07-23 17:34:32.087725848 -0400 15263+++ linux-2.6.30.4/arch/x86/mm/pageattr.c 2009-07-30 09:48:09.974436034 -0400
15165@@ -20,6 +20,7 @@ 15264@@ -21,6 +21,7 @@
15166 #include <asm/pgalloc.h> 15265 #include <asm/pgalloc.h>
15167 #include <asm/proto.h> 15266 #include <asm/proto.h>
15168 #include <asm/pat.h> 15267 #include <asm/pat.h>
@@ -15170,7 +15269,7 @@ diff -urNp linux-2.6.29.6/arch/x86/mm/pageattr.c linux-2.6.29.6/arch/x86/mm/page
15170 15269
15171 /* 15270 /*
15172 * The current flushing context - we pass it instead of 5 arguments: 15271 * The current flushing context - we pass it instead of 5 arguments:
15173@@ -259,9 +260,10 @@ static inline pgprot_t static_protection 15272@@ -265,9 +266,10 @@ static inline pgprot_t static_protection
15174 * Does not cover __inittext since that is gone later on. On 15273 * Does not cover __inittext since that is gone later on. On
15175 * 64bit we do not enforce !NX on the low mapping 15274 * 64bit we do not enforce !NX on the low mapping
15176 */ 15275 */
@@ -15182,7 +15281,7 @@ diff -urNp linux-2.6.29.6/arch/x86/mm/pageattr.c linux-2.6.29.6/arch/x86/mm/page
15182 /* 15281 /*
15183 * The .rodata section needs to be read-only. Using the pfn 15282 * The .rodata section needs to be read-only. Using the pfn
15184 * catches all aliases. 15283 * catches all aliases.
15185@@ -269,6 +271,7 @@ static inline pgprot_t static_protection 15284@@ -275,6 +277,7 @@ static inline pgprot_t static_protection
15186 if (within(pfn, __pa((unsigned long)__start_rodata) >> PAGE_SHIFT, 15285 if (within(pfn, __pa((unsigned long)__start_rodata) >> PAGE_SHIFT,
15187 __pa((unsigned long)__end_rodata) >> PAGE_SHIFT)) 15286 __pa((unsigned long)__end_rodata) >> PAGE_SHIFT))
15188 pgprot_val(forbidden) |= _PAGE_RW; 15287 pgprot_val(forbidden) |= _PAGE_RW;
@@ -15190,7 +15289,7 @@ diff -urNp linux-2.6.29.6/arch/x86/mm/pageattr.c linux-2.6.29.6/arch/x86/mm/page
15190 15289
15191 prot = __pgprot(pgprot_val(prot) & ~pgprot_val(forbidden)); 15290 prot = __pgprot(pgprot_val(prot) & ~pgprot_val(forbidden));
15192 15291
15193@@ -321,8 +324,20 @@ EXPORT_SYMBOL_GPL(lookup_address); 15292@@ -327,8 +330,20 @@ EXPORT_SYMBOL_GPL(lookup_address);
15194 */ 15293 */
15195 static void __set_pmd_pte(pte_t *kpte, unsigned long address, pte_t pte) 15294 static void __set_pmd_pte(pte_t *kpte, unsigned long address, pte_t pte)
15196 { 15295 {
@@ -15211,9 +15310,9 @@ diff -urNp linux-2.6.29.6/arch/x86/mm/pageattr.c linux-2.6.29.6/arch/x86/mm/page
15211 #ifdef CONFIG_X86_32 15310 #ifdef CONFIG_X86_32
15212 if (!SHARED_KERNEL_PMD) { 15311 if (!SHARED_KERNEL_PMD) {
15213 struct page *page; 15312 struct page *page;
15214diff -urNp linux-2.6.29.6/arch/x86/mm/pageattr-test.c linux-2.6.29.6/arch/x86/mm/pageattr-test.c 15313diff -urNp linux-2.6.30.4/arch/x86/mm/pageattr-test.c linux-2.6.30.4/arch/x86/mm/pageattr-test.c
15215--- linux-2.6.29.6/arch/x86/mm/pageattr-test.c 2009-07-02 19:41:20.000000000 -0400 15314--- linux-2.6.30.4/arch/x86/mm/pageattr-test.c 2009-07-24 17:47:51.000000000 -0400
15216+++ linux-2.6.29.6/arch/x86/mm/pageattr-test.c 2009-07-23 17:34:32.088730317 -0400 15315+++ linux-2.6.30.4/arch/x86/mm/pageattr-test.c 2009-07-30 09:48:09.974436034 -0400
15217@@ -36,7 +36,7 @@ enum { 15316@@ -36,7 +36,7 @@ enum {
15218 15317
15219 static int pte_testbit(pte_t pte) 15318 static int pte_testbit(pte_t pte)
@@ -15223,10 +15322,10 @@ diff -urNp linux-2.6.29.6/arch/x86/mm/pageattr-test.c linux-2.6.29.6/arch/x86/mm
15223 } 15322 }
15224 15323
15225 struct split_state { 15324 struct split_state {
15226diff -urNp linux-2.6.29.6/arch/x86/mm/pat.c linux-2.6.29.6/arch/x86/mm/pat.c 15325diff -urNp linux-2.6.30.4/arch/x86/mm/pat.c linux-2.6.30.4/arch/x86/mm/pat.c
15227--- linux-2.6.29.6/arch/x86/mm/pat.c 2009-07-02 19:41:20.000000000 -0400 15326--- linux-2.6.30.4/arch/x86/mm/pat.c 2009-07-24 17:47:51.000000000 -0400
15228+++ linux-2.6.29.6/arch/x86/mm/pat.c 2009-07-23 18:40:27.466429820 -0400 15327+++ linux-2.6.30.4/arch/x86/mm/pat.c 2009-07-30 09:48:09.975412278 -0400
15229@@ -204,7 +204,7 @@ chk_conflict(struct memtype *new, struct 15328@@ -213,7 +213,7 @@ chk_conflict(struct memtype *new, struct
15230 15329
15231 conflict: 15330 conflict:
15232 printk(KERN_INFO "%s:%d conflicting memory types " 15331 printk(KERN_INFO "%s:%d conflicting memory types "
@@ -15235,7 +15334,7 @@ diff -urNp linux-2.6.29.6/arch/x86/mm/pat.c linux-2.6.29.6/arch/x86/mm/pat.c
15235 new->end, cattr_name(new->type), cattr_name(entry->type)); 15334 new->end, cattr_name(new->type), cattr_name(entry->type));
15236 return -EBUSY; 15335 return -EBUSY;
15237 } 15336 }
15238@@ -488,7 +488,7 @@ int free_memtype(u64 start, u64 end) 15337@@ -487,7 +487,7 @@ int free_memtype(u64 start, u64 end)
15239 15338
15240 if (err) { 15339 if (err) {
15241 printk(KERN_INFO "%s:%d freeing invalid memtype %Lx-%Lx\n", 15340 printk(KERN_INFO "%s:%d freeing invalid memtype %Lx-%Lx\n",
@@ -15244,25 +15343,16 @@ diff -urNp linux-2.6.29.6/arch/x86/mm/pat.c linux-2.6.29.6/arch/x86/mm/pat.c
15244 } 15343 }
15245 15344
15246 dprintk("free_memtype request 0x%Lx-0x%Lx\n", start, end); 15345 dprintk("free_memtype request 0x%Lx-0x%Lx\n", start, end);
15247@@ -590,7 +590,7 @@ int phys_mem_access_prot_allowed(struct 15346@@ -588,7 +588,7 @@ int kernel_map_sync_memtype(u64 base, un
15248 free_memtype(offset, offset + size);
15249 printk(KERN_INFO 15347 printk(KERN_INFO
15250 "%s:%d /dev/mem ioremap_change_attr failed %s for %Lx-%Lx\n", 15348 "%s:%d ioremap_change_attr failed %s "
15349 "for %Lx-%Lx\n",
15251- current->comm, current->pid, 15350- current->comm, current->pid,
15252+ current->comm, task_pid_nr(current), 15351+ current->comm, task_pid_nr(current),
15253 cattr_name(flags), 15352 cattr_name(flags),
15254 offset, (unsigned long long)(offset + size)); 15353 base, (unsigned long long)(base + size));
15255 return 0; 15354 return -EINVAL;
15256@@ -611,7 +611,7 @@ void map_devmem(unsigned long pfn, unsig 15355@@ -627,7 +627,7 @@ static int reserve_pfn_range(u64 paddr,
15257 if (flags != want_flags) {
15258 printk(KERN_INFO
15259 "%s:%d /dev/mem expected mapping type %s for %Lx-%Lx, got %s\n",
15260- current->comm, current->pid,
15261+ current->comm, task_pid_nr(current),
15262 cattr_name(want_flags),
15263 addr, (unsigned long long)(addr + size),
15264 cattr_name(flags));
15265@@ -656,7 +656,7 @@ static int reserve_pfn_range(u64 paddr,
15266 free_memtype(paddr, paddr + size); 15356 free_memtype(paddr, paddr + size);
15267 printk(KERN_ERR "%s:%d map pfn expected mapping type %s" 15357 printk(KERN_ERR "%s:%d map pfn expected mapping type %s"
15268 " for %Lx-%Lx, got %s\n", 15358 " for %Lx-%Lx, got %s\n",
@@ -15271,16 +15361,7 @@ diff -urNp linux-2.6.29.6/arch/x86/mm/pat.c linux-2.6.29.6/arch/x86/mm/pat.c
15271 cattr_name(want_flags), 15361 cattr_name(want_flags),
15272 (unsigned long long)paddr, 15362 (unsigned long long)paddr,
15273 (unsigned long long)(paddr + size), 15363 (unsigned long long)(paddr + size),
15274@@ -685,7 +685,7 @@ static int reserve_pfn_range(u64 paddr, 15364@@ -826,7 +826,7 @@ static int memtype_seq_show(struct seq_f
15275 printk(KERN_ERR
15276 "%s:%d reserve_pfn_range ioremap_change_attr failed %s "
15277 "for %Lx-%Lx\n",
15278- current->comm, current->pid,
15279+ current->comm, task_pid_nr(current),
15280 cattr_name(flags),
15281 (unsigned long long)paddr,
15282 (unsigned long long)(paddr + size));
15283@@ -870,7 +870,7 @@ static int memtype_seq_show(struct seq_f
15284 return 0; 15365 return 0;
15285 } 15366 }
15286 15367
@@ -15289,10 +15370,10 @@ diff -urNp linux-2.6.29.6/arch/x86/mm/pat.c linux-2.6.29.6/arch/x86/mm/pat.c
15289 .start = memtype_seq_start, 15370 .start = memtype_seq_start,
15290 .next = memtype_seq_next, 15371 .next = memtype_seq_next,
15291 .stop = memtype_seq_stop, 15372 .stop = memtype_seq_stop,
15292diff -urNp linux-2.6.29.6/arch/x86/mm/pgtable_32.c linux-2.6.29.6/arch/x86/mm/pgtable_32.c 15373diff -urNp linux-2.6.30.4/arch/x86/mm/pgtable_32.c linux-2.6.30.4/arch/x86/mm/pgtable_32.c
15293--- linux-2.6.29.6/arch/x86/mm/pgtable_32.c 2009-07-02 19:41:20.000000000 -0400 15374--- linux-2.6.30.4/arch/x86/mm/pgtable_32.c 2009-07-24 17:47:51.000000000 -0400
15294+++ linux-2.6.29.6/arch/x86/mm/pgtable_32.c 2009-07-23 17:34:32.088730317 -0400 15375+++ linux-2.6.30.4/arch/x86/mm/pgtable_32.c 2009-07-30 09:48:09.975412278 -0400
15295@@ -31,6 +31,10 @@ void set_pte_vaddr(unsigned long vaddr, 15376@@ -33,6 +33,10 @@ void set_pte_vaddr(unsigned long vaddr,
15296 pmd_t *pmd; 15377 pmd_t *pmd;
15297 pte_t *pte; 15378 pte_t *pte;
15298 15379
@@ -15303,7 +15384,7 @@ diff -urNp linux-2.6.29.6/arch/x86/mm/pgtable_32.c linux-2.6.29.6/arch/x86/mm/pg
15303 pgd = swapper_pg_dir + pgd_index(vaddr); 15384 pgd = swapper_pg_dir + pgd_index(vaddr);
15304 if (pgd_none(*pgd)) { 15385 if (pgd_none(*pgd)) {
15305 BUG(); 15386 BUG();
15306@@ -47,11 +51,20 @@ void set_pte_vaddr(unsigned long vaddr, 15387@@ -49,11 +53,20 @@ void set_pte_vaddr(unsigned long vaddr,
15307 return; 15388 return;
15308 } 15389 }
15309 pte = pte_offset_kernel(pmd, vaddr); 15390 pte = pte_offset_kernel(pmd, vaddr);
@@ -15313,7 +15394,7 @@ diff -urNp linux-2.6.29.6/arch/x86/mm/pgtable_32.c linux-2.6.29.6/arch/x86/mm/pg
15313+#endif 15394+#endif
15314+ 15395+
15315 if (pte_val(pteval)) 15396 if (pte_val(pteval))
15316 set_pte_present(&init_mm, vaddr, pte, pteval); 15397 set_pte_at(&init_mm, vaddr, pte, pteval);
15317 else 15398 else
15318 pte_clear(&init_mm, vaddr, pte); 15399 pte_clear(&init_mm, vaddr, pte);
15319 15400
@@ -15324,9 +15405,21 @@ diff -urNp linux-2.6.29.6/arch/x86/mm/pgtable_32.c linux-2.6.29.6/arch/x86/mm/pg
15324 /* 15405 /*
15325 * It's enough to flush this one mapping. 15406 * It's enough to flush this one mapping.
15326 * (PGE mappings get flushed as well) 15407 * (PGE mappings get flushed as well)
15327diff -urNp linux-2.6.29.6/arch/x86/oprofile/backtrace.c linux-2.6.29.6/arch/x86/oprofile/backtrace.c 15408diff -urNp linux-2.6.30.4/arch/x86/mm/tlb.c linux-2.6.30.4/arch/x86/mm/tlb.c
15328--- linux-2.6.29.6/arch/x86/oprofile/backtrace.c 2009-07-02 19:41:20.000000000 -0400 15409--- linux-2.6.30.4/arch/x86/mm/tlb.c 2009-07-24 17:47:51.000000000 -0400
15329+++ linux-2.6.29.6/arch/x86/oprofile/backtrace.c 2009-07-23 17:34:32.088730317 -0400 15410+++ linux-2.6.30.4/arch/x86/mm/tlb.c 2009-07-30 09:48:09.975412278 -0400
15411@@ -12,7 +12,7 @@
15412 #include <asm/uv/uv.h>
15413
15414 DEFINE_PER_CPU_SHARED_ALIGNED(struct tlb_state, cpu_tlbstate)
15415- = { &init_mm, 0, };
15416+ = { &init_mm, 0 };
15417
15418 /*
15419 * Smarter SMP flushing macros.
15420diff -urNp linux-2.6.30.4/arch/x86/oprofile/backtrace.c linux-2.6.30.4/arch/x86/oprofile/backtrace.c
15421--- linux-2.6.30.4/arch/x86/oprofile/backtrace.c 2009-07-24 17:47:51.000000000 -0400
15422+++ linux-2.6.30.4/arch/x86/oprofile/backtrace.c 2009-07-30 09:48:09.975412278 -0400
15330@@ -37,7 +37,7 @@ static void backtrace_address(void *data 15423@@ -37,7 +37,7 @@ static void backtrace_address(void *data
15331 unsigned int *depth = data; 15424 unsigned int *depth = data;
15332 15425
@@ -15336,18 +15429,18 @@ diff -urNp linux-2.6.29.6/arch/x86/oprofile/backtrace.c linux-2.6.29.6/arch/x86/
15336 } 15429 }
15337 15430
15338 static struct stacktrace_ops backtrace_ops = { 15431 static struct stacktrace_ops backtrace_ops = {
15339@@ -78,7 +78,7 @@ x86_backtrace(struct pt_regs * const reg 15432@@ -77,7 +77,7 @@ x86_backtrace(struct pt_regs * const reg
15433 {
15340 struct frame_head *head = (struct frame_head *)frame_pointer(regs); 15434 struct frame_head *head = (struct frame_head *)frame_pointer(regs);
15341 unsigned long stack = kernel_trap_sp(regs);
15342 15435
15343- if (!user_mode_vm(regs)) { 15436- if (!user_mode_vm(regs)) {
15344+ if (!user_mode(regs)) { 15437+ if (!user_mode(regs)) {
15438 unsigned long stack = kernel_stack_pointer(regs);
15345 if (depth) 15439 if (depth)
15346 dump_trace(NULL, regs, (unsigned long *)stack, 0, 15440 dump_trace(NULL, regs, (unsigned long *)stack, 0,
15347 &backtrace_ops, &depth); 15441diff -urNp linux-2.6.30.4/arch/x86/oprofile/op_model_p4.c linux-2.6.30.4/arch/x86/oprofile/op_model_p4.c
15348diff -urNp linux-2.6.29.6/arch/x86/oprofile/op_model_p4.c linux-2.6.29.6/arch/x86/oprofile/op_model_p4.c 15442--- linux-2.6.30.4/arch/x86/oprofile/op_model_p4.c 2009-07-24 17:47:51.000000000 -0400
15349--- linux-2.6.29.6/arch/x86/oprofile/op_model_p4.c 2009-07-02 19:41:20.000000000 -0400 15443+++ linux-2.6.30.4/arch/x86/oprofile/op_model_p4.c 2009-07-30 09:48:09.976413155 -0400
15350+++ linux-2.6.29.6/arch/x86/oprofile/op_model_p4.c 2009-07-23 17:34:32.089719706 -0400
15351@@ -48,7 +48,7 @@ static inline void setup_num_counters(vo 15444@@ -48,7 +48,7 @@ static inline void setup_num_counters(vo
15352 #endif 15445 #endif
15353 } 15446 }
@@ -15357,10 +15450,10 @@ diff -urNp linux-2.6.29.6/arch/x86/oprofile/op_model_p4.c linux-2.6.29.6/arch/x8
15357 { 15450 {
15358 #ifdef CONFIG_SMP 15451 #ifdef CONFIG_SMP
15359 return smp_num_siblings == 2 ? 2 : 1; 15452 return smp_num_siblings == 2 ? 2 : 1;
15360diff -urNp linux-2.6.29.6/arch/x86/pci/common.c linux-2.6.29.6/arch/x86/pci/common.c 15453diff -urNp linux-2.6.30.4/arch/x86/pci/common.c linux-2.6.30.4/arch/x86/pci/common.c
15361--- linux-2.6.29.6/arch/x86/pci/common.c 2009-07-02 19:41:20.000000000 -0400 15454--- linux-2.6.30.4/arch/x86/pci/common.c 2009-07-24 17:47:51.000000000 -0400
15362+++ linux-2.6.29.6/arch/x86/pci/common.c 2009-07-23 17:34:32.089719706 -0400 15455+++ linux-2.6.30.4/arch/x86/pci/common.c 2009-07-30 09:48:09.976413155 -0400
15363@@ -367,7 +367,7 @@ static struct dmi_system_id __devinitdat 15456@@ -370,7 +370,7 @@ static const struct dmi_system_id __devi
15364 DMI_MATCH(DMI_PRODUCT_NAME, "ProLiant DL585 G2"), 15457 DMI_MATCH(DMI_PRODUCT_NAME, "ProLiant DL585 G2"),
15365 }, 15458 },
15366 }, 15459 },
@@ -15369,10 +15462,10 @@ diff -urNp linux-2.6.29.6/arch/x86/pci/common.c linux-2.6.29.6/arch/x86/pci/comm
15369 }; 15462 };
15370 15463
15371 void __init dmi_check_pciprobe(void) 15464 void __init dmi_check_pciprobe(void)
15372diff -urNp linux-2.6.29.6/arch/x86/pci/fixup.c linux-2.6.29.6/arch/x86/pci/fixup.c 15465diff -urNp linux-2.6.30.4/arch/x86/pci/fixup.c linux-2.6.30.4/arch/x86/pci/fixup.c
15373--- linux-2.6.29.6/arch/x86/pci/fixup.c 2009-07-02 19:41:20.000000000 -0400 15466--- linux-2.6.30.4/arch/x86/pci/fixup.c 2009-07-24 17:47:51.000000000 -0400
15374+++ linux-2.6.29.6/arch/x86/pci/fixup.c 2009-07-23 17:34:32.089719706 -0400 15467+++ linux-2.6.30.4/arch/x86/pci/fixup.c 2009-07-30 09:48:09.976413155 -0400
15375@@ -364,7 +364,7 @@ static struct dmi_system_id __devinitdat 15468@@ -364,7 +364,7 @@ static const struct dmi_system_id __devi
15376 DMI_MATCH(DMI_PRODUCT_NAME, "MS-6702E"), 15469 DMI_MATCH(DMI_PRODUCT_NAME, "MS-6702E"),
15377 }, 15470 },
15378 }, 15471 },
@@ -15381,7 +15474,7 @@ diff -urNp linux-2.6.29.6/arch/x86/pci/fixup.c linux-2.6.29.6/arch/x86/pci/fixup
15381 }; 15474 };
15382 15475
15383 /* 15476 /*
15384@@ -435,7 +435,7 @@ static struct dmi_system_id __devinitdat 15477@@ -435,7 +435,7 @@ static const struct dmi_system_id __devi
15385 DMI_MATCH(DMI_PRODUCT_VERSION, "PSA40U"), 15478 DMI_MATCH(DMI_PRODUCT_VERSION, "PSA40U"),
15386 }, 15479 },
15387 }, 15480 },
@@ -15390,21 +15483,21 @@ diff -urNp linux-2.6.29.6/arch/x86/pci/fixup.c linux-2.6.29.6/arch/x86/pci/fixup
15390 }; 15483 };
15391 15484
15392 static void __devinit pci_pre_fixup_toshiba_ohci1394(struct pci_dev *dev) 15485 static void __devinit pci_pre_fixup_toshiba_ohci1394(struct pci_dev *dev)
15393diff -urNp linux-2.6.29.6/arch/x86/pci/i386.c linux-2.6.29.6/arch/x86/pci/i386.c 15486diff -urNp linux-2.6.30.4/arch/x86/pci/i386.c linux-2.6.30.4/arch/x86/pci/i386.c
15394--- linux-2.6.29.6/arch/x86/pci/i386.c 2009-07-02 19:41:20.000000000 -0400 15487--- linux-2.6.30.4/arch/x86/pci/i386.c 2009-07-30 20:32:40.384629006 -0400
15395+++ linux-2.6.29.6/arch/x86/pci/i386.c 2009-07-23 18:40:27.495305970 -0400 15488+++ linux-2.6.30.4/arch/x86/pci/i386.c 2009-07-30 20:32:47.941604516 -0400
15396@@ -273,7 +273,7 @@ static void pci_track_mmap_page_range(st 15489@@ -269,7 +269,7 @@ void pcibios_set_master(struct pci_dev *
15397 reserve_memtype(addr, addr + vma->vm_end - vma->vm_start, flags, NULL); 15490 pci_write_config_byte(dev, PCI_LATENCY_TIMER, lat);
15398 } 15491 }
15399 15492
15400-static struct vm_operations_struct pci_mmap_ops = { 15493-static struct vm_operations_struct pci_mmap_ops = {
15401+static const struct vm_operations_struct pci_mmap_ops = { 15494+static const struct vm_operations_struct pci_mmap_ops = {
15402 .open = pci_track_mmap_page_range,
15403 .close = pci_unmap_page_range,
15404 .access = generic_access_phys, 15495 .access = generic_access_phys,
15405diff -urNp linux-2.6.29.6/arch/x86/pci/irq.c linux-2.6.29.6/arch/x86/pci/irq.c 15496 };
15406--- linux-2.6.29.6/arch/x86/pci/irq.c 2009-07-02 19:41:20.000000000 -0400 15497
15407+++ linux-2.6.29.6/arch/x86/pci/irq.c 2009-07-23 17:34:32.089719706 -0400 15498diff -urNp linux-2.6.30.4/arch/x86/pci/irq.c linux-2.6.30.4/arch/x86/pci/irq.c
15499--- linux-2.6.30.4/arch/x86/pci/irq.c 2009-07-24 17:47:51.000000000 -0400
15500+++ linux-2.6.30.4/arch/x86/pci/irq.c 2009-07-30 09:48:09.976413155 -0400
15408@@ -543,7 +543,7 @@ static __init int intel_router_probe(str 15501@@ -543,7 +543,7 @@ static __init int intel_router_probe(str
15409 static struct pci_device_id __initdata pirq_440gx[] = { 15502 static struct pci_device_id __initdata pirq_440gx[] = {
15410 { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82443GX_0) }, 15503 { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82443GX_0) },
@@ -15423,9 +15516,9 @@ diff -urNp linux-2.6.29.6/arch/x86/pci/irq.c linux-2.6.29.6/arch/x86/pci/irq.c
15423 }; 15516 };
15424 15517
15425 int __init pcibios_irq_init(void) 15518 int __init pcibios_irq_init(void)
15426diff -urNp linux-2.6.29.6/arch/x86/pci/pcbios.c linux-2.6.29.6/arch/x86/pci/pcbios.c 15519diff -urNp linux-2.6.30.4/arch/x86/pci/pcbios.c linux-2.6.30.4/arch/x86/pci/pcbios.c
15427--- linux-2.6.29.6/arch/x86/pci/pcbios.c 2009-07-02 19:41:20.000000000 -0400 15520--- linux-2.6.30.4/arch/x86/pci/pcbios.c 2009-07-24 17:47:51.000000000 -0400
15428+++ linux-2.6.29.6/arch/x86/pci/pcbios.c 2009-07-23 17:34:32.090717052 -0400 15521+++ linux-2.6.30.4/arch/x86/pci/pcbios.c 2009-07-30 09:48:09.976413155 -0400
15429@@ -56,50 +56,120 @@ union bios32 { 15522@@ -56,50 +56,120 @@ union bios32 {
15430 static struct { 15523 static struct {
15431 unsigned long address; 15524 unsigned long address;
@@ -15757,10 +15850,10 @@ diff -urNp linux-2.6.29.6/arch/x86/pci/pcbios.c linux-2.6.29.6/arch/x86/pci/pcbi
15757 return !(ret & 0xff00); 15850 return !(ret & 0xff00);
15758 } 15851 }
15759 EXPORT_SYMBOL(pcibios_set_irq_routing); 15852 EXPORT_SYMBOL(pcibios_set_irq_routing);
15760diff -urNp linux-2.6.29.6/arch/x86/power/cpu_32.c linux-2.6.29.6/arch/x86/power/cpu_32.c 15853diff -urNp linux-2.6.30.4/arch/x86/power/cpu_32.c linux-2.6.30.4/arch/x86/power/cpu_32.c
15761--- linux-2.6.29.6/arch/x86/power/cpu_32.c 2009-07-02 19:41:20.000000000 -0400 15854--- linux-2.6.30.4/arch/x86/power/cpu_32.c 2009-07-24 17:47:51.000000000 -0400
15762+++ linux-2.6.29.6/arch/x86/power/cpu_32.c 2009-07-23 17:34:32.090717052 -0400 15855+++ linux-2.6.30.4/arch/x86/power/cpu_32.c 2009-07-30 09:48:09.976413155 -0400
15763@@ -67,7 +67,7 @@ static void do_fpu_end(void) 15856@@ -68,7 +68,7 @@ static void do_fpu_end(void)
15764 static void fix_processor_context(void) 15857 static void fix_processor_context(void)
15765 { 15858 {
15766 int cpu = smp_processor_id(); 15859 int cpu = smp_processor_id();
@@ -15769,10 +15862,10 @@ diff -urNp linux-2.6.29.6/arch/x86/power/cpu_32.c linux-2.6.29.6/arch/x86/power/
15769 15862
15770 set_tss_desc(cpu, t); /* 15863 set_tss_desc(cpu, t); /*
15771 * This just modifies memory; should not be 15864 * This just modifies memory; should not be
15772diff -urNp linux-2.6.29.6/arch/x86/power/cpu_64.c linux-2.6.29.6/arch/x86/power/cpu_64.c 15865diff -urNp linux-2.6.30.4/arch/x86/power/cpu_64.c linux-2.6.30.4/arch/x86/power/cpu_64.c
15773--- linux-2.6.29.6/arch/x86/power/cpu_64.c 2009-07-02 19:41:20.000000000 -0400 15866--- linux-2.6.30.4/arch/x86/power/cpu_64.c 2009-07-24 17:47:51.000000000 -0400
15774+++ linux-2.6.29.6/arch/x86/power/cpu_64.c 2009-07-23 17:34:32.090717052 -0400 15867+++ linux-2.6.30.4/arch/x86/power/cpu_64.c 2009-07-30 09:48:09.978339754 -0400
15775@@ -143,7 +143,11 @@ void restore_processor_state(void) 15868@@ -144,7 +144,11 @@ void restore_processor_state(void)
15776 static void fix_processor_context(void) 15869 static void fix_processor_context(void)
15777 { 15870 {
15778 int cpu = smp_processor_id(); 15871 int cpu = smp_processor_id();
@@ -15785,7 +15878,7 @@ diff -urNp linux-2.6.29.6/arch/x86/power/cpu_64.c linux-2.6.29.6/arch/x86/power/
15785 15878
15786 /* 15879 /*
15787 * This just modifies memory; should not be necessary. But... This 15880 * This just modifies memory; should not be necessary. But... This
15788@@ -152,8 +156,16 @@ static void fix_processor_context(void) 15881@@ -153,8 +157,16 @@ static void fix_processor_context(void)
15789 */ 15882 */
15790 set_tss_desc(cpu, t); 15883 set_tss_desc(cpu, t);
15791 15884
@@ -15802,9 +15895,9 @@ diff -urNp linux-2.6.29.6/arch/x86/power/cpu_64.c linux-2.6.29.6/arch/x86/power/
15802 syscall_init(); /* This sets MSR_*STAR and related */ 15895 syscall_init(); /* This sets MSR_*STAR and related */
15803 load_TR_desc(); /* This does ltr */ 15896 load_TR_desc(); /* This does ltr */
15804 load_LDT(&current->active_mm->context); /* This does lldt */ 15897 load_LDT(&current->active_mm->context); /* This does lldt */
15805diff -urNp linux-2.6.29.6/arch/x86/vdso/Makefile linux-2.6.29.6/arch/x86/vdso/Makefile 15898diff -urNp linux-2.6.30.4/arch/x86/vdso/Makefile linux-2.6.30.4/arch/x86/vdso/Makefile
15806--- linux-2.6.29.6/arch/x86/vdso/Makefile 2009-07-02 19:41:20.000000000 -0400 15899--- linux-2.6.30.4/arch/x86/vdso/Makefile 2009-07-24 17:47:51.000000000 -0400
15807+++ linux-2.6.29.6/arch/x86/vdso/Makefile 2009-07-23 17:34:32.090717052 -0400 15900+++ linux-2.6.30.4/arch/x86/vdso/Makefile 2009-07-30 09:48:09.978339754 -0400
15808@@ -122,7 +122,7 @@ quiet_cmd_vdso = VDSO $@ 15901@@ -122,7 +122,7 @@ quiet_cmd_vdso = VDSO $@
15809 $(VDSO_LDFLAGS) $(VDSO_LDFLAGS_$(filter %.lds,$(^F))) \ 15902 $(VDSO_LDFLAGS) $(VDSO_LDFLAGS_$(filter %.lds,$(^F))) \
15810 -Wl,-T,$(filter %.lds,$^) $(filter %.o,$^) 15903 -Wl,-T,$(filter %.lds,$^) $(filter %.o,$^)
@@ -15814,9 +15907,9 @@ diff -urNp linux-2.6.29.6/arch/x86/vdso/Makefile linux-2.6.29.6/arch/x86/vdso/Ma
15814 15907
15815 # 15908 #
15816 # Install the unstripped copy of vdso*.so listed in $(vdso-install-y). 15909 # Install the unstripped copy of vdso*.so listed in $(vdso-install-y).
15817diff -urNp linux-2.6.29.6/arch/x86/vdso/vclock_gettime.c linux-2.6.29.6/arch/x86/vdso/vclock_gettime.c 15910diff -urNp linux-2.6.30.4/arch/x86/vdso/vclock_gettime.c linux-2.6.30.4/arch/x86/vdso/vclock_gettime.c
15818--- linux-2.6.29.6/arch/x86/vdso/vclock_gettime.c 2009-07-02 19:41:20.000000000 -0400 15911--- linux-2.6.30.4/arch/x86/vdso/vclock_gettime.c 2009-07-24 17:47:51.000000000 -0400
15819+++ linux-2.6.29.6/arch/x86/vdso/vclock_gettime.c 2009-07-23 17:34:32.091740281 -0400 15912+++ linux-2.6.30.4/arch/x86/vdso/vclock_gettime.c 2009-07-30 09:48:09.978662746 -0400
15820@@ -26,20 +26,43 @@ 15913@@ -26,20 +26,43 @@
15821 15914
15822 #define gtod vdso_vsyscall_gtod_data 15915 #define gtod vdso_vsyscall_gtod_data
@@ -15896,10 +15989,10 @@ diff -urNp linux-2.6.29.6/arch/x86/vdso/vclock_gettime.c linux-2.6.29.6/arch/x86
15896+ ((gtod->clock.name[0] == 'h' && gtod->clock.name[1] == 'p' && gtod->clock.name[2] == 'e' && gtod->clock.name[3] == 't' && !gtod->clock.name[4]) || 15989+ ((gtod->clock.name[0] == 'h' && gtod->clock.name[1] == 'p' && gtod->clock.name[2] == 'e' && gtod->clock.name[3] == 't' && !gtod->clock.name[4]) ||
15897+ (gtod->clock.name[0] == 't' && gtod->clock.name[1] == 's' && gtod->clock.name[2] == 'c' && !gtod->clock.name[3])))) 15990+ (gtod->clock.name[0] == 't' && gtod->clock.name[1] == 's' && gtod->clock.name[2] == 'c' && !gtod->clock.name[3]))))
15898+ { 15991+ {
15899 BUILD_BUG_ON(offsetof(struct timeval, tv_usec) != 15992 if (likely(tv != NULL)) {
15900 offsetof(struct timespec, tv_nsec) || 15993 BUILD_BUG_ON(offsetof(struct timeval, tv_usec) !=
15901 sizeof(*tv) != sizeof(struct timespec)); 15994 offsetof(struct timespec, tv_nsec) ||
15902@@ -116,9 +151,7 @@ notrace int __vdso_gettimeofday(struct t 15995@@ -118,9 +153,7 @@ notrace int __vdso_gettimeofday(struct t
15903 } 15996 }
15904 return 0; 15997 return 0;
15905 } 15998 }
@@ -15910,9 +16003,9 @@ diff -urNp linux-2.6.29.6/arch/x86/vdso/vclock_gettime.c linux-2.6.29.6/arch/x86
15910 } 16003 }
15911 int gettimeofday(struct timeval *, struct timezone *) 16004 int gettimeofday(struct timeval *, struct timezone *)
15912 __attribute__((weak, alias("__vdso_gettimeofday"))); 16005 __attribute__((weak, alias("__vdso_gettimeofday")));
15913diff -urNp linux-2.6.29.6/arch/x86/vdso/vdso32-setup.c linux-2.6.29.6/arch/x86/vdso/vdso32-setup.c 16006diff -urNp linux-2.6.30.4/arch/x86/vdso/vdso32-setup.c linux-2.6.30.4/arch/x86/vdso/vdso32-setup.c
15914--- linux-2.6.29.6/arch/x86/vdso/vdso32-setup.c 2009-07-02 19:41:20.000000000 -0400 16007--- linux-2.6.30.4/arch/x86/vdso/vdso32-setup.c 2009-07-24 17:47:51.000000000 -0400
15915+++ linux-2.6.29.6/arch/x86/vdso/vdso32-setup.c 2009-07-23 17:34:32.091740281 -0400 16008+++ linux-2.6.30.4/arch/x86/vdso/vdso32-setup.c 2009-07-30 09:48:09.979439324 -0400
15916@@ -226,7 +226,7 @@ static inline void map_compat_vdso(int m 16009@@ -226,7 +226,7 @@ static inline void map_compat_vdso(int m
15917 void enable_sep_cpu(void) 16010 void enable_sep_cpu(void)
15918 { 16011 {
@@ -15992,9 +16085,9 @@ diff -urNp linux-2.6.29.6/arch/x86/vdso/vdso32-setup.c linux-2.6.29.6/arch/x86/v
15992 return &gate_vma; 16085 return &gate_vma;
15993 return NULL; 16086 return NULL;
15994 } 16087 }
15995diff -urNp linux-2.6.29.6/arch/x86/vdso/vdso.lds.S linux-2.6.29.6/arch/x86/vdso/vdso.lds.S 16088diff -urNp linux-2.6.30.4/arch/x86/vdso/vdso.lds.S linux-2.6.30.4/arch/x86/vdso/vdso.lds.S
15996--- linux-2.6.29.6/arch/x86/vdso/vdso.lds.S 2009-07-02 19:41:20.000000000 -0400 16089--- linux-2.6.30.4/arch/x86/vdso/vdso.lds.S 2009-07-24 17:47:51.000000000 -0400
15997+++ linux-2.6.29.6/arch/x86/vdso/vdso.lds.S 2009-07-23 17:34:32.091740281 -0400 16090+++ linux-2.6.30.4/arch/x86/vdso/vdso.lds.S 2009-07-30 09:48:09.978662746 -0400
15998@@ -35,3 +35,9 @@ VDSO64_PRELINK = VDSO_PRELINK; 16091@@ -35,3 +35,9 @@ VDSO64_PRELINK = VDSO_PRELINK;
15999 #define VEXTERN(x) VDSO64_ ## x = vdso_ ## x; 16092 #define VEXTERN(x) VDSO64_ ## x = vdso_ ## x;
16000 #include "vextern.h" 16093 #include "vextern.h"
@@ -16005,9 +16098,9 @@ diff -urNp linux-2.6.29.6/arch/x86/vdso/vdso.lds.S linux-2.6.29.6/arch/x86/vdso/
16005+VEXTERN(fallback_time) 16098+VEXTERN(fallback_time)
16006+VEXTERN(getcpu) 16099+VEXTERN(getcpu)
16007+#undef VEXTERN 16100+#undef VEXTERN
16008diff -urNp linux-2.6.29.6/arch/x86/vdso/vextern.h linux-2.6.29.6/arch/x86/vdso/vextern.h 16101diff -urNp linux-2.6.30.4/arch/x86/vdso/vextern.h linux-2.6.30.4/arch/x86/vdso/vextern.h
16009--- linux-2.6.29.6/arch/x86/vdso/vextern.h 2009-07-02 19:41:20.000000000 -0400 16102--- linux-2.6.30.4/arch/x86/vdso/vextern.h 2009-07-24 17:47:51.000000000 -0400
16010+++ linux-2.6.29.6/arch/x86/vdso/vextern.h 2009-07-23 17:34:32.091740281 -0400 16103+++ linux-2.6.30.4/arch/x86/vdso/vextern.h 2009-07-30 09:48:09.979439324 -0400
16011@@ -11,6 +11,5 @@ 16104@@ -11,6 +11,5 @@
16012 put into vextern.h and be referenced as a pointer with vdso prefix. 16105 put into vextern.h and be referenced as a pointer with vdso prefix.
16013 The main kernel later fills in the values. */ 16106 The main kernel later fills in the values. */
@@ -16015,9 +16108,9 @@ diff -urNp linux-2.6.29.6/arch/x86/vdso/vextern.h linux-2.6.29.6/arch/x86/vdso/v
16015-VEXTERN(jiffies) 16108-VEXTERN(jiffies)
16016 VEXTERN(vgetcpu_mode) 16109 VEXTERN(vgetcpu_mode)
16017 VEXTERN(vsyscall_gtod_data) 16110 VEXTERN(vsyscall_gtod_data)
16018diff -urNp linux-2.6.29.6/arch/x86/vdso/vma.c linux-2.6.29.6/arch/x86/vdso/vma.c 16111diff -urNp linux-2.6.30.4/arch/x86/vdso/vma.c linux-2.6.30.4/arch/x86/vdso/vma.c
16019--- linux-2.6.29.6/arch/x86/vdso/vma.c 2009-07-02 19:41:20.000000000 -0400 16112--- linux-2.6.30.4/arch/x86/vdso/vma.c 2009-07-24 17:47:51.000000000 -0400
16020+++ linux-2.6.29.6/arch/x86/vdso/vma.c 2009-07-23 17:34:37.458887026 -0400 16113+++ linux-2.6.30.4/arch/x86/vdso/vma.c 2009-07-30 09:48:09.979439324 -0400
16021@@ -8,6 +8,7 @@ 16114@@ -8,6 +8,7 @@
16022 #include <linux/sched.h> 16115 #include <linux/sched.h>
16023 #include <linux/init.h> 16116 #include <linux/init.h>
@@ -16060,9 +16153,9 @@ diff -urNp linux-2.6.29.6/arch/x86/vdso/vma.c linux-2.6.29.6/arch/x86/vdso/vma.c
16060- return 0; 16153- return 0;
16061-} 16154-}
16062-__setup("vdso=", vdso_setup); 16155-__setup("vdso=", vdso_setup);
16063diff -urNp linux-2.6.29.6/arch/x86/xen/debugfs.c linux-2.6.29.6/arch/x86/xen/debugfs.c 16156diff -urNp linux-2.6.30.4/arch/x86/xen/debugfs.c linux-2.6.30.4/arch/x86/xen/debugfs.c
16064--- linux-2.6.29.6/arch/x86/xen/debugfs.c 2009-07-02 19:41:20.000000000 -0400 16157--- linux-2.6.30.4/arch/x86/xen/debugfs.c 2009-07-24 17:47:51.000000000 -0400
16065+++ linux-2.6.29.6/arch/x86/xen/debugfs.c 2009-07-23 18:40:27.496274044 -0400 16158+++ linux-2.6.30.4/arch/x86/xen/debugfs.c 2009-07-30 09:48:09.979439324 -0400
16066@@ -100,7 +100,7 @@ static int xen_array_release(struct inod 16159@@ -100,7 +100,7 @@ static int xen_array_release(struct inod
16067 return 0; 16160 return 0;
16068 } 16161 }
@@ -16072,28 +16165,19 @@ diff -urNp linux-2.6.29.6/arch/x86/xen/debugfs.c linux-2.6.29.6/arch/x86/xen/deb
16072 .owner = THIS_MODULE, 16165 .owner = THIS_MODULE,
16073 .open = u32_array_open, 16166 .open = u32_array_open,
16074 .release= xen_array_release, 16167 .release= xen_array_release,
16075diff -urNp linux-2.6.29.6/arch/x86/xen/enlighten.c linux-2.6.29.6/arch/x86/xen/enlighten.c 16168diff -urNp linux-2.6.30.4/arch/x86/xen/enlighten.c linux-2.6.30.4/arch/x86/xen/enlighten.c
16076--- linux-2.6.29.6/arch/x86/xen/enlighten.c 2009-07-02 19:41:20.000000000 -0400 16169--- linux-2.6.30.4/arch/x86/xen/enlighten.c 2009-07-24 17:47:51.000000000 -0400
16077+++ linux-2.6.29.6/arch/x86/xen/enlighten.c 2009-07-23 17:34:32.092715999 -0400 16170+++ linux-2.6.30.4/arch/x86/xen/enlighten.c 2009-08-04 17:23:47.808223131 -0400
16078@@ -319,7 +319,7 @@ static void xen_set_ldt(const void *addr 16171@@ -67,8 +67,6 @@ EXPORT_SYMBOL_GPL(xen_start_info);
16079 static void xen_load_gdt(const struct desc_ptr *dtr) 16172
16080 { 16173 struct shared_info xen_dummy_shared_info;
16081 unsigned long *frames; 16174
16082- unsigned long va = dtr->address; 16175-void *xen_initial_gdt;
16083+ unsigned long va = (unsigned long)dtr->address; 16176-
16084 unsigned int size = dtr->size + 1; 16177 /*
16085 unsigned pages = (size + PAGE_SIZE - 1) / PAGE_SIZE; 16178 * Point at some empty memory to start with. We map the real shared_info
16086 int f; 16179 * page as soon as fixmap is up and running.
16087@@ -334,7 +334,7 @@ static void xen_load_gdt(const struct de 16180@@ -454,7 +452,7 @@ static void xen_write_idt_entry(gate_des
16088 mcs = xen_mc_entry(sizeof(*frames) * pages);
16089 frames = mcs.args;
16090
16091- for (f = 0; va < dtr->address + size; va += PAGE_SIZE, f++) {
16092+ for (f = 0; va < (unsigned long)dtr->address + size; va += PAGE_SIZE, f++) {
16093 frames[f] = virt_to_mfn(va);
16094 make_lowmem_page_readonly((void *)va);
16095 }
16096@@ -442,7 +442,7 @@ static void xen_write_idt_entry(gate_des
16097 16181
16098 preempt_disable(); 16182 preempt_disable();
16099 16183
@@ -16102,7 +16186,34 @@ diff -urNp linux-2.6.29.6/arch/x86/xen/enlighten.c linux-2.6.29.6/arch/x86/xen/e
16102 end = start + __get_cpu_var(idt_desc).size + 1; 16186 end = start + __get_cpu_var(idt_desc).size + 1;
16103 16187
16104 xen_mc_flush(); 16188 xen_mc_flush();
16105@@ -1528,6 +1528,8 @@ static __init pgd_t *xen_setup_kernel_pa 16189@@ -962,12 +960,6 @@ asmlinkage void __init xen_start_kernel(
16190 */
16191 load_percpu_segment(0);
16192 #endif
16193- /*
16194- * The only reliable way to retain the initial address of the
16195- * percpu gdt_page is to remember it here, so we can go and
16196- * mark it RW later, when the initial percpu area is freed.
16197- */
16198- xen_initial_gdt = &per_cpu(gdt_page, 0);
16199
16200 xen_smp_init();
16201
16202diff -urNp linux-2.6.30.4/arch/x86/xen/Kconfig linux-2.6.30.4/arch/x86/xen/Kconfig
16203--- linux-2.6.30.4/arch/x86/xen/Kconfig 2009-07-24 17:47:51.000000000 -0400
16204+++ linux-2.6.30.4/arch/x86/xen/Kconfig 2009-08-02 09:47:15.079210101 -0400
16205@@ -8,6 +8,7 @@ config XEN
16206 select PARAVIRT_CLOCK
16207 depends on X86_64 || (X86_32 && X86_PAE && !X86_VISWS)
16208 depends on X86_CMPXCHG && X86_TSC
16209+ depends on !PAX_KERNEXEC
16210 help
16211 This is the Linux Xen port. Enabling this will allow the
16212 kernel to boot in a paravirtualized environment under the
16213diff -urNp linux-2.6.30.4/arch/x86/xen/mmu.c linux-2.6.30.4/arch/x86/xen/mmu.c
16214--- linux-2.6.30.4/arch/x86/xen/mmu.c 2009-07-24 17:47:51.000000000 -0400
16215+++ linux-2.6.30.4/arch/x86/xen/mmu.c 2009-07-30 09:48:09.980662517 -0400
16216@@ -1716,6 +1716,8 @@ __init pgd_t *xen_setup_kernel_pagetable
16106 convert_pfn_mfn(init_level4_pgt); 16217 convert_pfn_mfn(init_level4_pgt);
16107 convert_pfn_mfn(level3_ident_pgt); 16218 convert_pfn_mfn(level3_ident_pgt);
16108 convert_pfn_mfn(level3_kernel_pgt); 16219 convert_pfn_mfn(level3_kernel_pgt);
@@ -16111,7 +16222,7 @@ diff -urNp linux-2.6.29.6/arch/x86/xen/enlighten.c linux-2.6.29.6/arch/x86/xen/e
16111 16222
16112 l3 = m2v(pgd[pgd_index(__START_KERNEL_map)].pgd); 16223 l3 = m2v(pgd[pgd_index(__START_KERNEL_map)].pgd);
16113 l2 = m2v(l3[pud_index(__START_KERNEL_map)].pud); 16224 l2 = m2v(l3[pud_index(__START_KERNEL_map)].pud);
16114@@ -1546,9 +1548,12 @@ static __init pgd_t *xen_setup_kernel_pa 16225@@ -1734,9 +1736,12 @@ __init pgd_t *xen_setup_kernel_pagetable
16115 set_page_prot(init_level4_pgt, PAGE_KERNEL_RO); 16226 set_page_prot(init_level4_pgt, PAGE_KERNEL_RO);
16116 set_page_prot(level3_ident_pgt, PAGE_KERNEL_RO); 16227 set_page_prot(level3_ident_pgt, PAGE_KERNEL_RO);
16117 set_page_prot(level3_kernel_pgt, PAGE_KERNEL_RO); 16228 set_page_prot(level3_kernel_pgt, PAGE_KERNEL_RO);
@@ -16124,22 +16235,22 @@ diff -urNp linux-2.6.29.6/arch/x86/xen/enlighten.c linux-2.6.29.6/arch/x86/xen/e
16124 16235
16125 /* Pin down new L4 */ 16236 /* Pin down new L4 */
16126 pin_pagetable_pfn(MMUEXT_PIN_L4_TABLE, 16237 pin_pagetable_pfn(MMUEXT_PIN_L4_TABLE,
16127diff -urNp linux-2.6.29.6/arch/x86/xen/smp.c linux-2.6.29.6/arch/x86/xen/smp.c 16238diff -urNp linux-2.6.30.4/arch/x86/xen/smp.c linux-2.6.30.4/arch/x86/xen/smp.c
16128--- linux-2.6.29.6/arch/x86/xen/smp.c 2009-07-02 19:41:20.000000000 -0400 16239--- linux-2.6.30.4/arch/x86/xen/smp.c 2009-07-24 17:47:51.000000000 -0400
16129+++ linux-2.6.29.6/arch/x86/xen/smp.c 2009-07-23 17:34:32.092715999 -0400 16240+++ linux-2.6.30.4/arch/x86/xen/smp.c 2009-07-30 09:48:09.981489035 -0400
16130@@ -171,11 +171,6 @@ static void __init xen_smp_prepare_boot_ 16241@@ -167,11 +167,6 @@ static void __init xen_smp_prepare_boot_
16131 { 16242 {
16132 BUG_ON(smp_processor_id() != 0); 16243 BUG_ON(smp_processor_id() != 0);
16133 native_smp_prepare_boot_cpu(); 16244 native_smp_prepare_boot_cpu();
16134- 16245-
16135- /* We've switched to the "real" per-cpu gdt, so make sure the 16246- /* We've switched to the "real" per-cpu gdt, so make sure the
16136- old memory can be recycled */ 16247- old memory can be recycled */
16137- make_lowmem_page_readwrite(&per_cpu_var(gdt_page)); 16248- make_lowmem_page_readwrite(xen_initial_gdt);
16138- 16249-
16139 xen_setup_vcpu_info_placement(); 16250 xen_setup_vcpu_info_placement();
16140 } 16251 }
16141 16252
16142@@ -234,8 +229,8 @@ cpu_initialize_context(unsigned int cpu, 16253@@ -231,8 +226,8 @@ cpu_initialize_context(unsigned int cpu,
16143 gdt = get_cpu_gdt_table(cpu); 16254 gdt = get_cpu_gdt_table(cpu);
16144 16255
16145 ctxt->flags = VGCF_IN_KERNEL; 16256 ctxt->flags = VGCF_IN_KERNEL;
@@ -16150,9 +16261,21 @@ diff -urNp linux-2.6.29.6/arch/x86/xen/smp.c linux-2.6.29.6/arch/x86/xen/smp.c
16150 ctxt->user_regs.ss = __KERNEL_DS; 16261 ctxt->user_regs.ss = __KERNEL_DS;
16151 #ifdef CONFIG_X86_32 16262 #ifdef CONFIG_X86_32
16152 ctxt->user_regs.fs = __KERNEL_PERCPU; 16263 ctxt->user_regs.fs = __KERNEL_PERCPU;
16153diff -urNp linux-2.6.29.6/arch/xtensa/include/asm/atomic.h linux-2.6.29.6/arch/xtensa/include/asm/atomic.h 16264diff -urNp linux-2.6.30.4/arch/x86/xen/xen-ops.h linux-2.6.30.4/arch/x86/xen/xen-ops.h
16154--- linux-2.6.29.6/arch/xtensa/include/asm/atomic.h 2009-07-02 19:41:20.000000000 -0400 16265--- linux-2.6.30.4/arch/x86/xen/xen-ops.h 2009-07-24 17:47:51.000000000 -0400
16155+++ linux-2.6.29.6/arch/xtensa/include/asm/atomic.h 2009-07-23 17:34:32.092715999 -0400 16266+++ linux-2.6.30.4/arch/x86/xen/xen-ops.h 2009-08-04 17:23:47.809460830 -0400
16267@@ -10,8 +10,6 @@
16268 extern const char xen_hypervisor_callback[];
16269 extern const char xen_failsafe_callback[];
16270
16271-extern void *xen_initial_gdt;
16272-
16273 struct trap_info;
16274 void xen_copy_trap_info(struct trap_info *traps);
16275
16276diff -urNp linux-2.6.30.4/arch/xtensa/include/asm/atomic.h linux-2.6.30.4/arch/xtensa/include/asm/atomic.h
16277--- linux-2.6.30.4/arch/xtensa/include/asm/atomic.h 2009-07-24 17:47:51.000000000 -0400
16278+++ linux-2.6.30.4/arch/xtensa/include/asm/atomic.h 2009-07-30 09:48:09.981489035 -0400
16156@@ -165,6 +165,9 @@ static inline int atomic_sub_return(int 16279@@ -165,6 +165,9 @@ static inline int atomic_sub_return(int
16157 * Atomically increments @v by 1. 16280 * Atomically increments @v by 1.
16158 */ 16281 */
@@ -16163,9 +16286,9 @@ diff -urNp linux-2.6.29.6/arch/xtensa/include/asm/atomic.h linux-2.6.29.6/arch/x
16163 16286
16164 /** 16287 /**
16165 * atomic_inc - increment atomic variable 16288 * atomic_inc - increment atomic variable
16166diff -urNp linux-2.6.29.6/arch/xtensa/include/asm/kmap_types.h linux-2.6.29.6/arch/xtensa/include/asm/kmap_types.h 16289diff -urNp linux-2.6.30.4/arch/xtensa/include/asm/kmap_types.h linux-2.6.30.4/arch/xtensa/include/asm/kmap_types.h
16167--- linux-2.6.29.6/arch/xtensa/include/asm/kmap_types.h 2009-07-02 19:41:20.000000000 -0400 16290--- linux-2.6.30.4/arch/xtensa/include/asm/kmap_types.h 2009-07-24 17:47:51.000000000 -0400
16168+++ linux-2.6.29.6/arch/xtensa/include/asm/kmap_types.h 2009-07-23 17:34:32.092715999 -0400 16291+++ linux-2.6.30.4/arch/xtensa/include/asm/kmap_types.h 2009-07-30 09:48:09.981489035 -0400
16169@@ -25,6 +25,7 @@ enum km_type { 16292@@ -25,6 +25,7 @@ enum km_type {
16170 KM_IRQ1, 16293 KM_IRQ1,
16171 KM_SOFTIRQ0, 16294 KM_SOFTIRQ0,
@@ -16174,9 +16297,9 @@ diff -urNp linux-2.6.29.6/arch/xtensa/include/asm/kmap_types.h linux-2.6.29.6/ar
16174 KM_TYPE_NR 16297 KM_TYPE_NR
16175 }; 16298 };
16176 16299
16177diff -urNp linux-2.6.29.6/crypto/lrw.c linux-2.6.29.6/crypto/lrw.c 16300diff -urNp linux-2.6.30.4/crypto/lrw.c linux-2.6.30.4/crypto/lrw.c
16178--- linux-2.6.29.6/crypto/lrw.c 2009-07-02 19:41:20.000000000 -0400 16301--- linux-2.6.30.4/crypto/lrw.c 2009-07-24 17:47:51.000000000 -0400
16179+++ linux-2.6.29.6/crypto/lrw.c 2009-07-23 17:34:32.092715999 -0400 16302+++ linux-2.6.30.4/crypto/lrw.c 2009-07-30 09:48:09.982442014 -0400
16180@@ -60,7 +60,7 @@ static int setkey(struct crypto_tfm *par 16303@@ -60,7 +60,7 @@ static int setkey(struct crypto_tfm *par
16181 struct priv *ctx = crypto_tfm_ctx(parent); 16304 struct priv *ctx = crypto_tfm_ctx(parent);
16182 struct crypto_cipher *child = ctx->child; 16305 struct crypto_cipher *child = ctx->child;
@@ -16186,9 +16309,9 @@ diff -urNp linux-2.6.29.6/crypto/lrw.c linux-2.6.29.6/crypto/lrw.c
16186 int bsize = crypto_cipher_blocksize(child); 16309 int bsize = crypto_cipher_blocksize(child);
16187 16310
16188 crypto_cipher_clear_flags(child, CRYPTO_TFM_REQ_MASK); 16311 crypto_cipher_clear_flags(child, CRYPTO_TFM_REQ_MASK);
16189diff -urNp linux-2.6.29.6/Documentation/dontdiff linux-2.6.29.6/Documentation/dontdiff 16312diff -urNp linux-2.6.30.4/Documentation/dontdiff linux-2.6.30.4/Documentation/dontdiff
16190--- linux-2.6.29.6/Documentation/dontdiff 2009-07-02 19:41:20.000000000 -0400 16313--- linux-2.6.30.4/Documentation/dontdiff 2009-07-24 17:47:51.000000000 -0400
16191+++ linux-2.6.29.6/Documentation/dontdiff 2009-07-23 17:34:32.093837355 -0400 16314+++ linux-2.6.30.4/Documentation/dontdiff 2009-08-04 17:23:49.932547446 -0400
16192@@ -3,6 +3,7 @@ 16315@@ -3,6 +3,7 @@
16193 *.bin 16316 *.bin
16194 *.cpio 16317 *.cpio
@@ -16208,15 +16331,7 @@ diff -urNp linux-2.6.29.6/Documentation/dontdiff linux-2.6.29.6/Documentation/do
16208 Image 16331 Image
16209 Kerntypes 16332 Kerntypes
16210 Module.markers 16333 Module.markers
16211@@ -62,7 +67,6 @@ aic7*reg_print.c* 16334@@ -76,6 +81,7 @@ btfixupprep
16212 aic7*seq.h*
16213 aicasm
16214 aicdb.h*
16215-asm
16216 asm-offsets.h
16217 asm_offsets.h
16218 autoconf.h*
16219@@ -77,6 +81,7 @@ btfixupprep
16220 build 16335 build
16221 bvmlinux 16336 bvmlinux
16222 bzImage* 16337 bzImage*
@@ -16224,7 +16339,7 @@ diff -urNp linux-2.6.29.6/Documentation/dontdiff linux-2.6.29.6/Documentation/do
16224 classlist.h* 16339 classlist.h*
16225 comp*.log 16340 comp*.log
16226 compile.h* 16341 compile.h*
16227@@ -104,6 +109,7 @@ gen_crc32table 16342@@ -103,9 +109,11 @@ gen_crc32table
16228 gen_init_cpio 16343 gen_init_cpio
16229 genksyms 16344 genksyms
16230 *_gray256.c 16345 *_gray256.c
@@ -16232,7 +16347,11 @@ diff -urNp linux-2.6.29.6/Documentation/dontdiff linux-2.6.29.6/Documentation/do
16232 ihex2fw 16347 ihex2fw
16233 ikconfig.h* 16348 ikconfig.h*
16234 initramfs_data.cpio 16349 initramfs_data.cpio
16235@@ -165,6 +171,7 @@ setup 16350+initramfs_data.cpio.bz2
16351 initramfs_data.cpio.gz
16352 initramfs_list
16353 kallsyms
16354@@ -164,6 +172,7 @@ setup
16236 setup.bin 16355 setup.bin
16237 setup.elf 16356 setup.elf
16238 sImage 16357 sImage
@@ -16240,11 +16359,12 @@ diff -urNp linux-2.6.29.6/Documentation/dontdiff linux-2.6.29.6/Documentation/do
16240 sm_tbl* 16359 sm_tbl*
16241 split-include 16360 split-include
16242 syscalltab.h 16361 syscalltab.h
16243@@ -188,12 +195,15 @@ version.h* 16362@@ -187,12 +196,16 @@ version.h*
16244 vmlinux 16363 vmlinux
16245 vmlinux-* 16364 vmlinux-*
16246 vmlinux.aout 16365 vmlinux.aout
16247+vmlinux.bin.all 16366+vmlinux.bin.all
16367+vmlinux.bin.bz2
16248 vmlinux.lds 16368 vmlinux.lds
16249+vmlinux.relocs 16369+vmlinux.relocs
16250 vsyscall.lds 16370 vsyscall.lds
@@ -16256,9 +16376,9 @@ diff -urNp linux-2.6.29.6/Documentation/dontdiff linux-2.6.29.6/Documentation/do
16256 wakeup.bin 16376 wakeup.bin
16257 wakeup.elf 16377 wakeup.elf
16258 wakeup.lds 16378 wakeup.lds
16259diff -urNp linux-2.6.29.6/drivers/acpi/blacklist.c linux-2.6.29.6/drivers/acpi/blacklist.c 16379diff -urNp linux-2.6.30.4/drivers/acpi/blacklist.c linux-2.6.30.4/drivers/acpi/blacklist.c
16260--- linux-2.6.29.6/drivers/acpi/blacklist.c 2009-07-02 19:41:20.000000000 -0400 16380--- linux-2.6.30.4/drivers/acpi/blacklist.c 2009-07-24 17:47:51.000000000 -0400
16261+++ linux-2.6.29.6/drivers/acpi/blacklist.c 2009-07-23 17:34:32.093837355 -0400 16381+++ linux-2.6.30.4/drivers/acpi/blacklist.c 2009-07-30 09:48:09.982442014 -0400
16262@@ -71,7 +71,7 @@ static struct acpi_blacklist_item acpi_b 16382@@ -71,7 +71,7 @@ static struct acpi_blacklist_item acpi_b
16263 {"IBM ", "TP600E ", 0x00000105, ACPI_SIG_DSDT, less_than_or_equal, 16383 {"IBM ", "TP600E ", 0x00000105, ACPI_SIG_DSDT, less_than_or_equal,
16264 "Incorrect _ADR", 1}, 16384 "Incorrect _ADR", 1},
@@ -16268,22 +16388,10 @@ diff -urNp linux-2.6.29.6/drivers/acpi/blacklist.c linux-2.6.29.6/drivers/acpi/b
16268 }; 16388 };
16269 16389
16270 #if CONFIG_ACPI_BLACKLIST_YEAR 16390 #if CONFIG_ACPI_BLACKLIST_YEAR
16271diff -urNp linux-2.6.29.6/drivers/acpi/ec.c linux-2.6.29.6/drivers/acpi/ec.c 16391diff -urNp linux-2.6.30.4/drivers/acpi/osl.c linux-2.6.30.4/drivers/acpi/osl.c
16272--- linux-2.6.29.6/drivers/acpi/ec.c 2009-07-02 19:41:20.000000000 -0400 16392--- linux-2.6.30.4/drivers/acpi/osl.c 2009-07-24 17:47:51.000000000 -0400
16273+++ linux-2.6.29.6/drivers/acpi/ec.c 2009-07-23 18:40:27.516638001 -0400 16393+++ linux-2.6.30.4/drivers/acpi/osl.c 2009-07-30 09:48:09.986535027 -0400
16274@@ -672,7 +672,7 @@ static int acpi_ec_info_open_fs(struct i 16394@@ -492,6 +492,8 @@ acpi_os_read_memory(acpi_physical_addres
16275 return single_open(file, acpi_ec_read_info, PDE(inode)->data);
16276 }
16277
16278-static struct file_operations acpi_ec_info_ops = {
16279+static const struct file_operations acpi_ec_info_ops = {
16280 .open = acpi_ec_info_open_fs,
16281 .read = seq_read,
16282 .llseek = seq_lseek,
16283diff -urNp linux-2.6.29.6/drivers/acpi/osl.c linux-2.6.29.6/drivers/acpi/osl.c
16284--- linux-2.6.29.6/drivers/acpi/osl.c 2009-07-02 19:41:20.000000000 -0400
16285+++ linux-2.6.29.6/drivers/acpi/osl.c 2009-07-23 17:34:32.093837355 -0400
16286@@ -483,6 +483,8 @@ acpi_os_read_memory(acpi_physical_addres
16287 void __iomem *virt_addr; 16395 void __iomem *virt_addr;
16288 16396
16289 virt_addr = ioremap(phys_addr, width); 16397 virt_addr = ioremap(phys_addr, width);
@@ -16292,7 +16400,7 @@ diff -urNp linux-2.6.29.6/drivers/acpi/osl.c linux-2.6.29.6/drivers/acpi/osl.c
16292 if (!value) 16400 if (!value)
16293 value = &dummy; 16401 value = &dummy;
16294 16402
16295@@ -511,6 +513,8 @@ acpi_os_write_memory(acpi_physical_addre 16403@@ -520,6 +522,8 @@ acpi_os_write_memory(acpi_physical_addre
16296 void __iomem *virt_addr; 16404 void __iomem *virt_addr;
16297 16405
16298 virt_addr = ioremap(phys_addr, width); 16406 virt_addr = ioremap(phys_addr, width);
@@ -16301,10 +16409,10 @@ diff -urNp linux-2.6.29.6/drivers/acpi/osl.c linux-2.6.29.6/drivers/acpi/osl.c
16301 16409
16302 switch (width) { 16410 switch (width) {
16303 case 8: 16411 case 8:
16304diff -urNp linux-2.6.29.6/drivers/acpi/processor_core.c linux-2.6.29.6/drivers/acpi/processor_core.c 16412diff -urNp linux-2.6.30.4/drivers/acpi/processor_core.c linux-2.6.30.4/drivers/acpi/processor_core.c
16305--- linux-2.6.29.6/drivers/acpi/processor_core.c 2009-07-02 19:41:20.000000000 -0400 16413--- linux-2.6.30.4/drivers/acpi/processor_core.c 2009-07-24 17:47:51.000000000 -0400
16306+++ linux-2.6.29.6/drivers/acpi/processor_core.c 2009-07-23 17:34:32.093837355 -0400 16414+++ linux-2.6.30.4/drivers/acpi/processor_core.c 2009-07-30 09:48:09.986535027 -0400
16307@@ -678,7 +678,7 @@ static int __cpuinit acpi_processor_star 16415@@ -703,7 +703,7 @@ static int __cpuinit acpi_processor_star
16308 return 0; 16416 return 0;
16309 } 16417 }
16310 16418
@@ -16313,10 +16421,10 @@ diff -urNp linux-2.6.29.6/drivers/acpi/processor_core.c linux-2.6.29.6/drivers/a
16313 16421
16314 /* 16422 /*
16315 * Buggy BIOS check 16423 * Buggy BIOS check
16316diff -urNp linux-2.6.29.6/drivers/acpi/processor_idle.c linux-2.6.29.6/drivers/acpi/processor_idle.c 16424diff -urNp linux-2.6.30.4/drivers/acpi/processor_idle.c linux-2.6.30.4/drivers/acpi/processor_idle.c
16317--- linux-2.6.29.6/drivers/acpi/processor_idle.c 2009-07-02 19:41:20.000000000 -0400 16425--- linux-2.6.30.4/drivers/acpi/processor_idle.c 2009-07-24 17:47:51.000000000 -0400
16318+++ linux-2.6.29.6/drivers/acpi/processor_idle.c 2009-07-23 17:34:32.094936160 -0400 16426+++ linux-2.6.30.4/drivers/acpi/processor_idle.c 2009-07-30 09:48:09.987663767 -0400
16319@@ -156,7 +156,7 @@ static struct dmi_system_id __cpuinitdat 16427@@ -108,7 +108,7 @@ static struct dmi_system_id __cpuinitdat
16320 DMI_MATCH(DMI_BIOS_VENDOR,"Phoenix Technologies LTD"), 16428 DMI_MATCH(DMI_BIOS_VENDOR,"Phoenix Technologies LTD"),
16321 DMI_MATCH(DMI_BIOS_VERSION,"SHE845M0.86C.0013.D.0302131307")}, 16429 DMI_MATCH(DMI_BIOS_VERSION,"SHE845M0.86C.0013.D.0302131307")},
16322 (void *)2}, 16430 (void *)2},
@@ -16324,236 +16432,23 @@ diff -urNp linux-2.6.29.6/drivers/acpi/processor_idle.c linux-2.6.29.6/drivers/a
16324+ { NULL, NULL, {DMI_MATCH(DMI_NONE, {0})}, NULL}, 16432+ { NULL, NULL, {DMI_MATCH(DMI_NONE, {0})}, NULL},
16325 }; 16433 };
16326 16434
16327 static inline u32 ticks_elapsed(u32 t1, u32 t2)
16328diff -urNp linux-2.6.29.6/drivers/acpi/processor_thermal.c linux-2.6.29.6/drivers/acpi/processor_thermal.c
16329--- linux-2.6.29.6/drivers/acpi/processor_thermal.c 2009-07-02 19:41:20.000000000 -0400
16330+++ linux-2.6.29.6/drivers/acpi/processor_thermal.c 2009-07-23 18:40:27.533990873 -0400
16331@@ -507,7 +507,7 @@ static ssize_t acpi_processor_write_limi
16332 return count;
16333 }
16334
16335-struct file_operations acpi_processor_limit_fops = {
16336+const struct file_operations acpi_processor_limit_fops = {
16337 .owner = THIS_MODULE,
16338 .open = acpi_processor_limit_open_fs,
16339 .read = seq_read,
16340diff -urNp linux-2.6.29.6/drivers/acpi/processor_throttling.c linux-2.6.29.6/drivers/acpi/processor_throttling.c
16341--- linux-2.6.29.6/drivers/acpi/processor_throttling.c 2009-07-02 19:41:20.000000000 -0400
16342+++ linux-2.6.29.6/drivers/acpi/processor_throttling.c 2009-07-23 18:40:27.545437588 -0400
16343@@ -1291,7 +1291,7 @@ static ssize_t acpi_processor_write_thro
16344 return count;
16345 }
16346
16347-struct file_operations acpi_processor_throttling_fops = {
16348+const struct file_operations acpi_processor_throttling_fops = {
16349 .owner = THIS_MODULE,
16350 .open = acpi_processor_throttling_open_fs,
16351 .read = seq_read,
16352diff -urNp linux-2.6.29.6/drivers/acpi/sbs.c linux-2.6.29.6/drivers/acpi/sbs.c
16353--- linux-2.6.29.6/drivers/acpi/sbs.c 2009-07-02 19:41:20.000000000 -0400
16354+++ linux-2.6.29.6/drivers/acpi/sbs.c 2009-07-23 18:40:27.556300663 -0400
16355@@ -479,9 +479,9 @@ static int
16356 acpi_sbs_add_fs(struct proc_dir_entry **dir,
16357 struct proc_dir_entry *parent_dir,
16358 char *dir_name,
16359- struct file_operations *info_fops,
16360- struct file_operations *state_fops,
16361- struct file_operations *alarm_fops, void *data)
16362+ const struct file_operations *info_fops,
16363+ const struct file_operations *state_fops,
16364+ const struct file_operations *alarm_fops, void *data)
16365 {
16366 if (!*dir) {
16367 *dir = proc_mkdir(dir_name, parent_dir);
16368@@ -677,7 +677,7 @@ static int acpi_battery_alarm_open_fs(st
16369 return single_open(file, acpi_battery_read_alarm, PDE(inode)->data);
16370 }
16371
16372-static struct file_operations acpi_battery_info_fops = {
16373+static const struct file_operations acpi_battery_info_fops = {
16374 .open = acpi_battery_info_open_fs,
16375 .read = seq_read,
16376 .llseek = seq_lseek,
16377@@ -685,7 +685,7 @@ static struct file_operations acpi_batte
16378 .owner = THIS_MODULE,
16379 };
16380
16381-static struct file_operations acpi_battery_state_fops = {
16382+static const struct file_operations acpi_battery_state_fops = {
16383 .open = acpi_battery_state_open_fs,
16384 .read = seq_read,
16385 .llseek = seq_lseek,
16386@@ -693,7 +693,7 @@ static struct file_operations acpi_batte
16387 .owner = THIS_MODULE,
16388 };
16389
16390-static struct file_operations acpi_battery_alarm_fops = {
16391+static const struct file_operations acpi_battery_alarm_fops = {
16392 .open = acpi_battery_alarm_open_fs,
16393 .read = seq_read,
16394 .write = acpi_battery_write_alarm,
16395@@ -725,7 +725,7 @@ static int acpi_ac_state_open_fs(struct
16396 return single_open(file, acpi_ac_read_state, PDE(inode)->data);
16397 }
16398
16399-static struct file_operations acpi_ac_state_fops = {
16400+static const struct file_operations acpi_ac_state_fops = {
16401 .open = acpi_ac_state_open_fs,
16402 .read = seq_read,
16403 .llseek = seq_lseek,
16404diff -urNp linux-2.6.29.6/drivers/acpi/video.c linux-2.6.29.6/drivers/acpi/video.c
16405--- linux-2.6.29.6/drivers/acpi/video.c 2009-07-02 19:41:20.000000000 -0400
16406+++ linux-2.6.29.6/drivers/acpi/video.c 2009-07-23 18:40:27.557273014 -0400
16407@@ -189,7 +189,7 @@ struct acpi_video_device {
16408
16409 /* bus */
16410 static int acpi_video_bus_info_open_fs(struct inode *inode, struct file *file);
16411-static struct file_operations acpi_video_bus_info_fops = {
16412+static const struct file_operations acpi_video_bus_info_fops = {
16413 .owner = THIS_MODULE,
16414 .open = acpi_video_bus_info_open_fs,
16415 .read = seq_read,
16416@@ -198,7 +198,7 @@ static struct file_operations acpi_video
16417 };
16418
16419 static int acpi_video_bus_ROM_open_fs(struct inode *inode, struct file *file);
16420-static struct file_operations acpi_video_bus_ROM_fops = {
16421+static const struct file_operations acpi_video_bus_ROM_fops = {
16422 .owner = THIS_MODULE,
16423 .open = acpi_video_bus_ROM_open_fs,
16424 .read = seq_read,
16425@@ -208,7 +208,7 @@ static struct file_operations acpi_video
16426
16427 static int acpi_video_bus_POST_info_open_fs(struct inode *inode,
16428 struct file *file);
16429-static struct file_operations acpi_video_bus_POST_info_fops = {
16430+static const struct file_operations acpi_video_bus_POST_info_fops = {
16431 .owner = THIS_MODULE,
16432 .open = acpi_video_bus_POST_info_open_fs,
16433 .read = seq_read,
16434@@ -217,19 +217,29 @@ static struct file_operations acpi_video
16435 };
16436
16437 static int acpi_video_bus_POST_open_fs(struct inode *inode, struct file *file);
16438-static struct file_operations acpi_video_bus_POST_fops = {
16439+static ssize_t
16440+acpi_video_bus_write_POST(struct file *file,
16441+ const char __user * buffer,
16442+ size_t count, loff_t * data);
16443+static const struct file_operations acpi_video_bus_POST_fops = {
16444 .owner = THIS_MODULE,
16445 .open = acpi_video_bus_POST_open_fs,
16446 .read = seq_read,
16447+ .write = acpi_video_bus_write_POST,
16448 .llseek = seq_lseek,
16449 .release = single_release,
16450 };
16451 16435
16452 static int acpi_video_bus_DOS_open_fs(struct inode *inode, struct file *file); 16436diff -urNp linux-2.6.30.4/drivers/acpi/video.c linux-2.6.30.4/drivers/acpi/video.c
16453-static struct file_operations acpi_video_bus_DOS_fops = { 16437--- linux-2.6.30.4/drivers/acpi/video.c 2009-07-24 17:47:51.000000000 -0400
16454+static ssize_t 16438+++ linux-2.6.30.4/drivers/acpi/video.c 2009-07-30 12:06:52.099841502 -0400
16455+acpi_video_bus_write_DOS(struct file *file, 16439@@ -282,7 +282,7 @@ static int acpi_video_device_brightness_
16456+ const char __user * buffer,
16457+ size_t count, loff_t * data);
16458+static const struct file_operations acpi_video_bus_DOS_fops = {
16459 .owner = THIS_MODULE,
16460 .open = acpi_video_bus_DOS_open_fs,
16461 .read = seq_read,
16462+ .write = acpi_video_bus_write_DOS,
16463 .llseek = seq_lseek,
16464 .release = single_release,
16465 };
16466@@ -237,7 +247,7 @@ static struct file_operations acpi_video
16467 /* device */
16468 static int acpi_video_device_info_open_fs(struct inode *inode,
16469 struct file *file);
16470-static struct file_operations acpi_video_device_info_fops = {
16471+static const struct file_operations acpi_video_device_info_fops = {
16472 .owner = THIS_MODULE,
16473 .open = acpi_video_device_info_open_fs,
16474 .read = seq_read,
16475@@ -247,27 +257,37 @@ static struct file_operations acpi_video
16476
16477 static int acpi_video_device_state_open_fs(struct inode *inode,
16478 struct file *file);
16479-static struct file_operations acpi_video_device_state_fops = {
16480+static ssize_t
16481+acpi_video_device_write_state(struct file *file,
16482+ const char __user * buffer,
16483+ size_t count, loff_t * data);
16484+static const struct file_operations acpi_video_device_state_fops = {
16485 .owner = THIS_MODULE,
16486 .open = acpi_video_device_state_open_fs,
16487 .read = seq_read,
16488+ .write = acpi_video_device_write_state,
16489 .llseek = seq_lseek,
16490 .release = single_release,
16491 };
16492
16493 static int acpi_video_device_brightness_open_fs(struct inode *inode,
16494 struct file *file); 16440 struct file *file);
16441 static ssize_t acpi_video_device_write_brightness(struct file *file,
16442 const char __user *buffer, size_t count, loff_t *data);
16495-static struct file_operations acpi_video_device_brightness_fops = { 16443-static struct file_operations acpi_video_device_brightness_fops = {
16496+static ssize_t
16497+acpi_video_device_write_brightness(struct file *file,
16498+ const char __user * buffer,
16499+ size_t count, loff_t * data);
16500+static const struct file_operations acpi_video_device_brightness_fops = { 16444+static const struct file_operations acpi_video_device_brightness_fops = {
16501 .owner = THIS_MODULE, 16445 .owner = THIS_MODULE,
16502 .open = acpi_video_device_brightness_open_fs, 16446 .open = acpi_video_device_brightness_open_fs,
16503 .read = seq_read, 16447 .read = seq_read,
16504+ .write = acpi_video_device_write_brightness, 16448diff -urNp linux-2.6.30.4/drivers/ata/ahci.c linux-2.6.30.4/drivers/ata/ahci.c
16505 .llseek = seq_lseek, 16449--- linux-2.6.30.4/drivers/ata/ahci.c 2009-07-24 17:47:51.000000000 -0400
16506 .release = single_release, 16450+++ linux-2.6.30.4/drivers/ata/ahci.c 2009-07-30 09:48:09.987663767 -0400
16507 }; 16451@@ -622,7 +622,7 @@ static const struct pci_device_id ahci_p
16508
16509 static int acpi_video_device_EDID_open_fs(struct inode *inode,
16510 struct file *file);
16511-static struct file_operations acpi_video_device_EDID_fops = {
16512+static const struct file_operations acpi_video_device_EDID_fops = {
16513 .owner = THIS_MODULE,
16514 .open = acpi_video_device_EDID_open_fs,
16515 .read = seq_read,
16516@@ -1133,8 +1153,6 @@ static int acpi_video_device_add_fs(stru
16517 if (!entry)
16518 goto err_remove_dir;
16519
16520- /* 'state' [R/W] */
16521- acpi_video_device_state_fops.write = acpi_video_device_write_state;
16522 entry = proc_create_data("state", S_IFREG | S_IRUGO | S_IWUSR,
16523 device_dir,
16524 &acpi_video_device_state_fops,
16525@@ -1142,9 +1160,6 @@ static int acpi_video_device_add_fs(stru
16526 if (!entry)
16527 goto err_remove_info;
16528
16529- /* 'brightness' [R/W] */
16530- acpi_video_device_brightness_fops.write =
16531- acpi_video_device_write_brightness;
16532 entry = proc_create_data("brightness", S_IFREG | S_IRUGO | S_IWUSR,
16533 device_dir,
16534 &acpi_video_device_brightness_fops,
16535@@ -1426,8 +1441,6 @@ static int acpi_video_bus_add_fs(struct
16536 if (!entry)
16537 goto err_remove_rom;
16538
16539- /* 'POST' [R/W] */
16540- acpi_video_bus_POST_fops.write = acpi_video_bus_write_POST;
16541 entry = proc_create_data("POST", S_IFREG | S_IRUGO | S_IWUSR,
16542 device_dir,
16543 &acpi_video_bus_POST_fops,
16544@@ -1435,8 +1448,6 @@ static int acpi_video_bus_add_fs(struct
16545 if (!entry)
16546 goto err_remove_post_info;
16547
16548- /* 'DOS' [R/W] */
16549- acpi_video_bus_DOS_fops.write = acpi_video_bus_write_DOS;
16550 entry = proc_create_data("DOS", S_IFREG | S_IRUGO | S_IWUSR,
16551 device_dir,
16552 &acpi_video_bus_DOS_fops,
16553diff -urNp linux-2.6.29.6/drivers/ata/ahci.c linux-2.6.29.6/drivers/ata/ahci.c
16554--- linux-2.6.29.6/drivers/ata/ahci.c 2009-07-02 19:41:20.000000000 -0400
16555+++ linux-2.6.29.6/drivers/ata/ahci.c 2009-07-23 17:34:32.094936160 -0400
16556@@ -611,7 +611,7 @@ static const struct pci_device_id ahci_p
16557 { PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, 16452 { PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID,
16558 PCI_CLASS_STORAGE_SATA_AHCI, 0xffffff, board_ahci }, 16453 PCI_CLASS_STORAGE_SATA_AHCI, 0xffffff, board_ahci },
16559 16454
@@ -16562,10 +16457,10 @@ diff -urNp linux-2.6.29.6/drivers/ata/ahci.c linux-2.6.29.6/drivers/ata/ahci.c
16562 }; 16457 };
16563 16458
16564 16459
16565diff -urNp linux-2.6.29.6/drivers/ata/ata_piix.c linux-2.6.29.6/drivers/ata/ata_piix.c 16460diff -urNp linux-2.6.30.4/drivers/ata/ata_piix.c linux-2.6.30.4/drivers/ata/ata_piix.c
16566--- linux-2.6.29.6/drivers/ata/ata_piix.c 2009-07-02 19:41:20.000000000 -0400 16461--- linux-2.6.30.4/drivers/ata/ata_piix.c 2009-07-24 17:47:51.000000000 -0400
16567+++ linux-2.6.29.6/drivers/ata/ata_piix.c 2009-07-23 17:34:32.095849165 -0400 16462+++ linux-2.6.30.4/drivers/ata/ata_piix.c 2009-07-30 09:48:09.988577262 -0400
16568@@ -291,7 +291,7 @@ static const struct pci_device_id piix_p 16463@@ -293,7 +293,7 @@ static const struct pci_device_id piix_p
16569 { 0x8086, 0x3b2d, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_2port_sata }, 16464 { 0x8086, 0x3b2d, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_2port_sata },
16570 /* SATA Controller IDE (PCH) */ 16465 /* SATA Controller IDE (PCH) */
16571 { 0x8086, 0x3b2e, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_sata }, 16466 { 0x8086, 0x3b2e, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_sata },
@@ -16574,16 +16469,16 @@ diff -urNp linux-2.6.29.6/drivers/ata/ata_piix.c linux-2.6.29.6/drivers/ata/ata_
16574 }; 16469 };
16575 16470
16576 static struct pci_driver piix_pci_driver = { 16471 static struct pci_driver piix_pci_driver = {
16577@@ -595,7 +595,7 @@ static const struct ich_laptop ich_lapto 16472@@ -607,7 +607,7 @@ static const struct ich_laptop ich_lapto
16578 { 0x266F, 0x1025, 0x0066 }, /* ICH6 on ACER Aspire 1694WLMi */
16579 { 0x2653, 0x1043, 0x82D8 }, /* ICH6M on Asus Eee 701 */ 16473 { 0x2653, 0x1043, 0x82D8 }, /* ICH6M on Asus Eee 701 */
16474 { 0x27df, 0x104d, 0x900e }, /* ICH7 on Sony TZ-90 */
16580 /* end marker */ 16475 /* end marker */
16581- { 0, } 16476- { 0, }
16582+ { 0, 0, 0 } 16477+ { 0, 0, 0 }
16583 }; 16478 };
16584 16479
16585 /** 16480 /**
16586@@ -1054,7 +1054,7 @@ static int piix_broken_suspend(void) 16481@@ -1073,7 +1073,7 @@ static int piix_broken_suspend(void)
16587 }, 16482 },
16588 }, 16483 },
16589 16484
@@ -16592,10 +16487,10 @@ diff -urNp linux-2.6.29.6/drivers/ata/ata_piix.c linux-2.6.29.6/drivers/ata/ata_
16592 }; 16487 };
16593 static const char *oemstrs[] = { 16488 static const char *oemstrs[] = {
16594 "Tecra M3,", 16489 "Tecra M3,",
16595diff -urNp linux-2.6.29.6/drivers/ata/libata-core.c linux-2.6.29.6/drivers/ata/libata-core.c 16490diff -urNp linux-2.6.30.4/drivers/ata/libata-core.c linux-2.6.30.4/drivers/ata/libata-core.c
16596--- linux-2.6.29.6/drivers/ata/libata-core.c 2009-07-02 19:41:20.000000000 -0400 16491--- linux-2.6.30.4/drivers/ata/libata-core.c 2009-07-24 17:47:51.000000000 -0400
16597+++ linux-2.6.29.6/drivers/ata/libata-core.c 2009-07-23 17:34:32.096707424 -0400 16492+++ linux-2.6.30.4/drivers/ata/libata-core.c 2009-07-30 09:48:09.989999430 -0400
16598@@ -889,7 +889,7 @@ static const struct ata_xfer_ent { 16493@@ -890,7 +890,7 @@ static const struct ata_xfer_ent {
16599 { ATA_SHIFT_PIO, ATA_NR_PIO_MODES, XFER_PIO_0 }, 16494 { ATA_SHIFT_PIO, ATA_NR_PIO_MODES, XFER_PIO_0 },
16600 { ATA_SHIFT_MWDMA, ATA_NR_MWDMA_MODES, XFER_MW_DMA_0 }, 16495 { ATA_SHIFT_MWDMA, ATA_NR_MWDMA_MODES, XFER_MW_DMA_0 },
16601 { ATA_SHIFT_UDMA, ATA_NR_UDMA_MODES, XFER_UDMA_0 }, 16496 { ATA_SHIFT_UDMA, ATA_NR_UDMA_MODES, XFER_UDMA_0 },
@@ -16604,7 +16499,7 @@ diff -urNp linux-2.6.29.6/drivers/ata/libata-core.c linux-2.6.29.6/drivers/ata/l
16604 }; 16499 };
16605 16500
16606 /** 16501 /**
16607@@ -3105,7 +3105,7 @@ static const struct ata_timing ata_timin 16502@@ -3129,7 +3129,7 @@ static const struct ata_timing ata_timin
16608 { XFER_UDMA_5, 0, 0, 0, 0, 0, 0, 0, 0, 20 }, 16503 { XFER_UDMA_5, 0, 0, 0, 0, 0, 0, 0, 0, 20 },
16609 { XFER_UDMA_6, 0, 0, 0, 0, 0, 0, 0, 0, 15 }, 16504 { XFER_UDMA_6, 0, 0, 0, 0, 0, 0, 0, 0, 15 },
16610 16505
@@ -16613,7 +16508,7 @@ diff -urNp linux-2.6.29.6/drivers/ata/libata-core.c linux-2.6.29.6/drivers/ata/l
16613 }; 16508 };
16614 16509
16615 #define ENOUGH(v, unit) (((v)-1)/(unit)+1) 16510 #define ENOUGH(v, unit) (((v)-1)/(unit)+1)
16616@@ -4267,7 +4267,7 @@ static const struct ata_blacklist_entry 16511@@ -4293,7 +4293,7 @@ static const struct ata_blacklist_entry
16617 { "WD My Book", NULL, ATA_HORKAGE_1_5_GBPS, }, 16512 { "WD My Book", NULL, ATA_HORKAGE_1_5_GBPS, },
16618 16513
16619 /* End Marker */ 16514 /* End Marker */
@@ -16622,9 +16517,9 @@ diff -urNp linux-2.6.29.6/drivers/ata/libata-core.c linux-2.6.29.6/drivers/ata/l
16622 }; 16517 };
16623 16518
16624 static int strn_pattern_cmp(const char *patt, const char *name, int wildchar) 16519 static int strn_pattern_cmp(const char *patt, const char *name, int wildchar)
16625diff -urNp linux-2.6.29.6/drivers/atm/adummy.c linux-2.6.29.6/drivers/atm/adummy.c 16520diff -urNp linux-2.6.30.4/drivers/atm/adummy.c linux-2.6.30.4/drivers/atm/adummy.c
16626--- linux-2.6.29.6/drivers/atm/adummy.c 2009-07-02 19:41:20.000000000 -0400 16521--- linux-2.6.30.4/drivers/atm/adummy.c 2009-07-24 17:47:51.000000000 -0400
16627+++ linux-2.6.29.6/drivers/atm/adummy.c 2009-07-23 17:34:32.096707424 -0400 16522+++ linux-2.6.30.4/drivers/atm/adummy.c 2009-07-30 09:48:09.989999430 -0400
16628@@ -77,7 +77,7 @@ adummy_send(struct atm_vcc *vcc, struct 16523@@ -77,7 +77,7 @@ adummy_send(struct atm_vcc *vcc, struct
16629 vcc->pop(vcc, skb); 16524 vcc->pop(vcc, skb);
16630 else 16525 else
@@ -16634,9 +16529,9 @@ diff -urNp linux-2.6.29.6/drivers/atm/adummy.c linux-2.6.29.6/drivers/atm/adummy
16634 16529
16635 return 0; 16530 return 0;
16636 } 16531 }
16637diff -urNp linux-2.6.29.6/drivers/atm/ambassador.c linux-2.6.29.6/drivers/atm/ambassador.c 16532diff -urNp linux-2.6.30.4/drivers/atm/ambassador.c linux-2.6.30.4/drivers/atm/ambassador.c
16638--- linux-2.6.29.6/drivers/atm/ambassador.c 2009-07-02 19:41:20.000000000 -0400 16533--- linux-2.6.30.4/drivers/atm/ambassador.c 2009-07-24 17:47:51.000000000 -0400
16639+++ linux-2.6.29.6/drivers/atm/ambassador.c 2009-07-23 17:34:32.096707424 -0400 16534+++ linux-2.6.30.4/drivers/atm/ambassador.c 2009-07-30 09:48:09.990535817 -0400
16640@@ -453,7 +453,7 @@ static void tx_complete (amb_dev * dev, 16535@@ -453,7 +453,7 @@ static void tx_complete (amb_dev * dev,
16641 PRINTD (DBG_FLOW|DBG_TX, "tx_complete %p %p", dev, tx); 16536 PRINTD (DBG_FLOW|DBG_TX, "tx_complete %p %p", dev, tx);
16642 16537
@@ -16673,9 +16568,9 @@ diff -urNp linux-2.6.29.6/drivers/atm/ambassador.c linux-2.6.29.6/drivers/atm/am
16673 return -ENOMEM; // ? 16568 return -ENOMEM; // ?
16674 } 16569 }
16675 16570
16676diff -urNp linux-2.6.29.6/drivers/atm/atmtcp.c linux-2.6.29.6/drivers/atm/atmtcp.c 16571diff -urNp linux-2.6.30.4/drivers/atm/atmtcp.c linux-2.6.30.4/drivers/atm/atmtcp.c
16677--- linux-2.6.29.6/drivers/atm/atmtcp.c 2009-07-02 19:41:20.000000000 -0400 16572--- linux-2.6.30.4/drivers/atm/atmtcp.c 2009-07-24 17:47:51.000000000 -0400
16678+++ linux-2.6.29.6/drivers/atm/atmtcp.c 2009-07-23 17:34:32.097932924 -0400 16573+++ linux-2.6.30.4/drivers/atm/atmtcp.c 2009-07-30 09:48:09.991629377 -0400
16679@@ -206,7 +206,7 @@ static int atmtcp_v_send(struct atm_vcc 16574@@ -206,7 +206,7 @@ static int atmtcp_v_send(struct atm_vcc
16680 if (vcc->pop) vcc->pop(vcc,skb); 16575 if (vcc->pop) vcc->pop(vcc,skb);
16681 else dev_kfree_skb(skb); 16576 else dev_kfree_skb(skb);
@@ -16725,9 +16620,9 @@ diff -urNp linux-2.6.29.6/drivers/atm/atmtcp.c linux-2.6.29.6/drivers/atm/atmtcp
16725 done: 16620 done:
16726 if (vcc->pop) vcc->pop(vcc,skb); 16621 if (vcc->pop) vcc->pop(vcc,skb);
16727 else dev_kfree_skb(skb); 16622 else dev_kfree_skb(skb);
16728diff -urNp linux-2.6.29.6/drivers/atm/eni.c linux-2.6.29.6/drivers/atm/eni.c 16623diff -urNp linux-2.6.30.4/drivers/atm/eni.c linux-2.6.30.4/drivers/atm/eni.c
16729--- linux-2.6.29.6/drivers/atm/eni.c 2009-07-02 19:41:20.000000000 -0400 16624--- linux-2.6.30.4/drivers/atm/eni.c 2009-07-24 17:47:51.000000000 -0400
16730+++ linux-2.6.29.6/drivers/atm/eni.c 2009-07-23 17:34:32.097932924 -0400 16625+++ linux-2.6.30.4/drivers/atm/eni.c 2009-07-30 09:48:09.991629377 -0400
16731@@ -525,7 +525,7 @@ static int rx_aal0(struct atm_vcc *vcc) 16626@@ -525,7 +525,7 @@ static int rx_aal0(struct atm_vcc *vcc)
16732 DPRINTK(DEV_LABEL "(itf %d): trashing empty cell\n", 16627 DPRINTK(DEV_LABEL "(itf %d): trashing empty cell\n",
16733 vcc->dev->number); 16628 vcc->dev->number);
@@ -16773,9 +16668,9 @@ diff -urNp linux-2.6.29.6/drivers/atm/eni.c linux-2.6.29.6/drivers/atm/eni.c
16773 wake_up(&eni_dev->tx_wait); 16668 wake_up(&eni_dev->tx_wait);
16774 dma_complete++; 16669 dma_complete++;
16775 } 16670 }
16776diff -urNp linux-2.6.29.6/drivers/atm/firestream.c linux-2.6.29.6/drivers/atm/firestream.c 16671diff -urNp linux-2.6.30.4/drivers/atm/firestream.c linux-2.6.30.4/drivers/atm/firestream.c
16777--- linux-2.6.29.6/drivers/atm/firestream.c 2009-07-02 19:41:20.000000000 -0400 16672--- linux-2.6.30.4/drivers/atm/firestream.c 2009-07-24 17:47:51.000000000 -0400
16778+++ linux-2.6.29.6/drivers/atm/firestream.c 2009-07-23 17:34:32.098993493 -0400 16673+++ linux-2.6.30.4/drivers/atm/firestream.c 2009-07-30 09:48:09.992530374 -0400
16779@@ -748,7 +748,7 @@ static void process_txdone_queue (struct 16674@@ -748,7 +748,7 @@ static void process_txdone_queue (struct
16780 } 16675 }
16781 } 16676 }
@@ -16809,9 +16704,9 @@ diff -urNp linux-2.6.29.6/drivers/atm/firestream.c linux-2.6.29.6/drivers/atm/fi
16809 break; 16704 break;
16810 default: /* Hmm. Haven't written the code to handle the others yet... -- REW */ 16705 default: /* Hmm. Haven't written the code to handle the others yet... -- REW */
16811 printk (KERN_WARNING "Don't know what to do with RX status %x: %s.\n", 16706 printk (KERN_WARNING "Don't know what to do with RX status %x: %s.\n",
16812diff -urNp linux-2.6.29.6/drivers/atm/fore200e.c linux-2.6.29.6/drivers/atm/fore200e.c 16707diff -urNp linux-2.6.30.4/drivers/atm/fore200e.c linux-2.6.30.4/drivers/atm/fore200e.c
16813--- linux-2.6.29.6/drivers/atm/fore200e.c 2009-07-02 19:41:20.000000000 -0400 16708--- linux-2.6.30.4/drivers/atm/fore200e.c 2009-07-24 17:47:51.000000000 -0400
16814+++ linux-2.6.29.6/drivers/atm/fore200e.c 2009-07-23 17:34:32.099818881 -0400 16709+++ linux-2.6.30.4/drivers/atm/fore200e.c 2009-07-30 09:48:09.993922247 -0400
16815@@ -931,9 +931,9 @@ fore200e_tx_irq(struct fore200e* fore200 16710@@ -931,9 +931,9 @@ fore200e_tx_irq(struct fore200e* fore200
16816 #endif 16711 #endif
16817 /* check error condition */ 16712 /* check error condition */
@@ -16868,9 +16763,9 @@ diff -urNp linux-2.6.29.6/drivers/atm/fore200e.c linux-2.6.29.6/drivers/atm/fore
16868 16763
16869 fore200e->tx_sat++; 16764 fore200e->tx_sat++;
16870 DPRINTK(2, "tx queue of device %s is saturated, PDU dropped - heartbeat is %08x\n", 16765 DPRINTK(2, "tx queue of device %s is saturated, PDU dropped - heartbeat is %08x\n",
16871diff -urNp linux-2.6.29.6/drivers/atm/he.c linux-2.6.29.6/drivers/atm/he.c 16766diff -urNp linux-2.6.30.4/drivers/atm/he.c linux-2.6.30.4/drivers/atm/he.c
16872--- linux-2.6.29.6/drivers/atm/he.c 2009-07-02 19:41:20.000000000 -0400 16767--- linux-2.6.30.4/drivers/atm/he.c 2009-07-24 17:47:51.000000000 -0400
16873+++ linux-2.6.29.6/drivers/atm/he.c 2009-07-23 18:42:59.306868260 -0400 16768+++ linux-2.6.30.4/drivers/atm/he.c 2009-07-30 09:48:09.994421569 -0400
16874@@ -1728,7 +1728,7 @@ he_service_rbrq(struct he_dev *he_dev, i 16769@@ -1728,7 +1728,7 @@ he_service_rbrq(struct he_dev *he_dev, i
16875 16770
16876 if (RBRQ_HBUF_ERR(he_dev->rbrq_head)) { 16771 if (RBRQ_HBUF_ERR(he_dev->rbrq_head)) {
@@ -16952,9 +16847,9 @@ diff -urNp linux-2.6.29.6/drivers/atm/he.c linux-2.6.29.6/drivers/atm/he.c
16952 16847
16953 return 0; 16848 return 0;
16954 } 16849 }
16955diff -urNp linux-2.6.29.6/drivers/atm/horizon.c linux-2.6.29.6/drivers/atm/horizon.c 16850diff -urNp linux-2.6.30.4/drivers/atm/horizon.c linux-2.6.30.4/drivers/atm/horizon.c
16956--- linux-2.6.29.6/drivers/atm/horizon.c 2009-07-02 19:41:20.000000000 -0400 16851--- linux-2.6.30.4/drivers/atm/horizon.c 2009-07-24 17:47:51.000000000 -0400
16957+++ linux-2.6.29.6/drivers/atm/horizon.c 2009-07-23 17:34:32.100806142 -0400 16852+++ linux-2.6.30.4/drivers/atm/horizon.c 2009-07-30 09:48:09.994421569 -0400
16958@@ -1033,7 +1033,7 @@ static void rx_schedule (hrz_dev * dev, 16853@@ -1033,7 +1033,7 @@ static void rx_schedule (hrz_dev * dev,
16959 { 16854 {
16960 struct atm_vcc * vcc = ATM_SKB(skb)->vcc; 16855 struct atm_vcc * vcc = ATM_SKB(skb)->vcc;
@@ -16973,9 +16868,9 @@ diff -urNp linux-2.6.29.6/drivers/atm/horizon.c linux-2.6.29.6/drivers/atm/horiz
16973 16868
16974 // free the skb 16869 // free the skb
16975 hrz_kfree_skb (skb); 16870 hrz_kfree_skb (skb);
16976diff -urNp linux-2.6.29.6/drivers/atm/idt77252.c linux-2.6.29.6/drivers/atm/idt77252.c 16871diff -urNp linux-2.6.30.4/drivers/atm/idt77252.c linux-2.6.30.4/drivers/atm/idt77252.c
16977--- linux-2.6.29.6/drivers/atm/idt77252.c 2009-07-02 19:41:20.000000000 -0400 16872--- linux-2.6.30.4/drivers/atm/idt77252.c 2009-07-24 17:47:51.000000000 -0400
16978+++ linux-2.6.29.6/drivers/atm/idt77252.c 2009-07-23 17:34:32.101982733 -0400 16873+++ linux-2.6.30.4/drivers/atm/idt77252.c 2009-07-30 09:48:09.995868107 -0400
16979@@ -810,7 +810,7 @@ drain_scq(struct idt77252_dev *card, str 16874@@ -810,7 +810,7 @@ drain_scq(struct idt77252_dev *card, str
16980 else 16875 else
16981 dev_kfree_skb(skb); 16876 dev_kfree_skb(skb);
@@ -17130,10 +17025,10 @@ diff -urNp linux-2.6.29.6/drivers/atm/idt77252.c linux-2.6.29.6/drivers/atm/idt7
17130 return -ENOMEM; 17025 return -ENOMEM;
17131 } 17026 }
17132 atomic_add(skb->truesize, &sk_atm(vcc)->sk_wmem_alloc); 17027 atomic_add(skb->truesize, &sk_atm(vcc)->sk_wmem_alloc);
17133diff -urNp linux-2.6.29.6/drivers/atm/iphase.c linux-2.6.29.6/drivers/atm/iphase.c 17028diff -urNp linux-2.6.30.4/drivers/atm/iphase.c linux-2.6.30.4/drivers/atm/iphase.c
17134--- linux-2.6.29.6/drivers/atm/iphase.c 2009-07-02 19:41:20.000000000 -0400 17029--- linux-2.6.30.4/drivers/atm/iphase.c 2009-07-24 17:47:51.000000000 -0400
17135+++ linux-2.6.29.6/drivers/atm/iphase.c 2009-07-23 17:34:32.102777929 -0400 17030+++ linux-2.6.30.4/drivers/atm/iphase.c 2009-07-30 09:48:09.996522301 -0400
17136@@ -1125,7 +1125,7 @@ static int rx_pkt(struct atm_dev *dev) 17031@@ -1123,7 +1123,7 @@ static int rx_pkt(struct atm_dev *dev)
17137 status = (u_short) (buf_desc_ptr->desc_mode); 17032 status = (u_short) (buf_desc_ptr->desc_mode);
17138 if (status & (RX_CER | RX_PTE | RX_OFL)) 17033 if (status & (RX_CER | RX_PTE | RX_OFL))
17139 { 17034 {
@@ -17142,7 +17037,7 @@ diff -urNp linux-2.6.29.6/drivers/atm/iphase.c linux-2.6.29.6/drivers/atm/iphase
17142 IF_ERR(printk("IA: bad packet, dropping it");) 17037 IF_ERR(printk("IA: bad packet, dropping it");)
17143 if (status & RX_CER) { 17038 if (status & RX_CER) {
17144 IF_ERR(printk(" cause: packet CRC error\n");) 17039 IF_ERR(printk(" cause: packet CRC error\n");)
17145@@ -1148,7 +1148,7 @@ static int rx_pkt(struct atm_dev *dev) 17040@@ -1146,7 +1146,7 @@ static int rx_pkt(struct atm_dev *dev)
17146 len = dma_addr - buf_addr; 17041 len = dma_addr - buf_addr;
17147 if (len > iadev->rx_buf_sz) { 17042 if (len > iadev->rx_buf_sz) {
17148 printk("Over %d bytes sdu received, dropped!!!\n", iadev->rx_buf_sz); 17043 printk("Over %d bytes sdu received, dropped!!!\n", iadev->rx_buf_sz);
@@ -17151,7 +17046,7 @@ diff -urNp linux-2.6.29.6/drivers/atm/iphase.c linux-2.6.29.6/drivers/atm/iphase
17151 goto out_free_desc; 17046 goto out_free_desc;
17152 } 17047 }
17153 17048
17154@@ -1298,7 +1298,7 @@ static void rx_dle_intr(struct atm_dev * 17049@@ -1296,7 +1296,7 @@ static void rx_dle_intr(struct atm_dev *
17155 ia_vcc = INPH_IA_VCC(vcc); 17050 ia_vcc = INPH_IA_VCC(vcc);
17156 if (ia_vcc == NULL) 17051 if (ia_vcc == NULL)
17157 { 17052 {
@@ -17160,7 +17055,7 @@ diff -urNp linux-2.6.29.6/drivers/atm/iphase.c linux-2.6.29.6/drivers/atm/iphase
17160 dev_kfree_skb_any(skb); 17055 dev_kfree_skb_any(skb);
17161 atm_return(vcc, atm_guess_pdu2truesize(len)); 17056 atm_return(vcc, atm_guess_pdu2truesize(len));
17162 goto INCR_DLE; 17057 goto INCR_DLE;
17163@@ -1310,7 +1310,7 @@ static void rx_dle_intr(struct atm_dev * 17058@@ -1308,7 +1308,7 @@ static void rx_dle_intr(struct atm_dev *
17164 if ((length > iadev->rx_buf_sz) || (length > 17059 if ((length > iadev->rx_buf_sz) || (length >
17165 (skb->len - sizeof(struct cpcs_trailer)))) 17060 (skb->len - sizeof(struct cpcs_trailer))))
17166 { 17061 {
@@ -17169,7 +17064,7 @@ diff -urNp linux-2.6.29.6/drivers/atm/iphase.c linux-2.6.29.6/drivers/atm/iphase
17169 IF_ERR(printk("rx_dle_intr: Bad AAL5 trailer %d (skb len %d)", 17064 IF_ERR(printk("rx_dle_intr: Bad AAL5 trailer %d (skb len %d)",
17170 length, skb->len);) 17065 length, skb->len);)
17171 dev_kfree_skb_any(skb); 17066 dev_kfree_skb_any(skb);
17172@@ -1326,7 +1326,7 @@ static void rx_dle_intr(struct atm_dev * 17067@@ -1324,7 +1324,7 @@ static void rx_dle_intr(struct atm_dev *
17173 17068
17174 IF_RX(printk("rx_dle_intr: skb push");) 17069 IF_RX(printk("rx_dle_intr: skb push");)
17175 vcc->push(vcc,skb); 17070 vcc->push(vcc,skb);
@@ -17178,7 +17073,7 @@ diff -urNp linux-2.6.29.6/drivers/atm/iphase.c linux-2.6.29.6/drivers/atm/iphase
17178 iadev->rx_pkt_cnt++; 17073 iadev->rx_pkt_cnt++;
17179 } 17074 }
17180 INCR_DLE: 17075 INCR_DLE:
17181@@ -2921,7 +2921,7 @@ static int ia_pkt_tx (struct atm_vcc *vc 17076@@ -2919,7 +2919,7 @@ static int ia_pkt_tx (struct atm_vcc *vc
17182 if ((desc == 0) || (desc > iadev->num_tx_desc)) 17077 if ((desc == 0) || (desc > iadev->num_tx_desc))
17183 { 17078 {
17184 IF_ERR(printk(DEV_LABEL "invalid desc for send: %d\n", desc);) 17079 IF_ERR(printk(DEV_LABEL "invalid desc for send: %d\n", desc);)
@@ -17187,7 +17082,7 @@ diff -urNp linux-2.6.29.6/drivers/atm/iphase.c linux-2.6.29.6/drivers/atm/iphase
17187 if (vcc->pop) 17082 if (vcc->pop)
17188 vcc->pop(vcc, skb); 17083 vcc->pop(vcc, skb);
17189 else 17084 else
17190@@ -3026,7 +3026,7 @@ static int ia_pkt_tx (struct atm_vcc *vc 17085@@ -3024,7 +3024,7 @@ static int ia_pkt_tx (struct atm_vcc *vc
17191 ATM_DESC(skb) = vcc->vci; 17086 ATM_DESC(skb) = vcc->vci;
17192 skb_queue_tail(&iadev->tx_dma_q, skb); 17087 skb_queue_tail(&iadev->tx_dma_q, skb);
17193 17088
@@ -17196,9 +17091,9 @@ diff -urNp linux-2.6.29.6/drivers/atm/iphase.c linux-2.6.29.6/drivers/atm/iphase
17196 iadev->tx_pkt_cnt++; 17091 iadev->tx_pkt_cnt++;
17197 /* Increment transaction counter */ 17092 /* Increment transaction counter */
17198 writel(2, iadev->dma+IPHASE5575_TX_COUNTER); 17093 writel(2, iadev->dma+IPHASE5575_TX_COUNTER);
17199diff -urNp linux-2.6.29.6/drivers/atm/lanai.c linux-2.6.29.6/drivers/atm/lanai.c 17094diff -urNp linux-2.6.30.4/drivers/atm/lanai.c linux-2.6.30.4/drivers/atm/lanai.c
17200--- linux-2.6.29.6/drivers/atm/lanai.c 2009-07-02 19:41:20.000000000 -0400 17095--- linux-2.6.30.4/drivers/atm/lanai.c 2009-07-24 17:47:51.000000000 -0400
17201+++ linux-2.6.29.6/drivers/atm/lanai.c 2009-07-23 17:34:32.103950524 -0400 17096+++ linux-2.6.30.4/drivers/atm/lanai.c 2009-07-30 09:48:09.997872955 -0400
17202@@ -1305,7 +1305,7 @@ static void lanai_send_one_aal5(struct l 17097@@ -1305,7 +1305,7 @@ static void lanai_send_one_aal5(struct l
17203 vcc_tx_add_aal5_trailer(lvcc, skb->len, 0, 0); 17098 vcc_tx_add_aal5_trailer(lvcc, skb->len, 0, 0);
17204 lanai_endtx(lanai, lvcc); 17099 lanai_endtx(lanai, lvcc);
@@ -17253,9 +17148,9 @@ diff -urNp linux-2.6.29.6/drivers/atm/lanai.c linux-2.6.29.6/drivers/atm/lanai.c
17253 lvcc->stats.x.aal5.service_rxcrc++; 17148 lvcc->stats.x.aal5.service_rxcrc++;
17254 lvcc->rx.buf.ptr = &lvcc->rx.buf.start[SERVICE_GET_END(s) * 4]; 17149 lvcc->rx.buf.ptr = &lvcc->rx.buf.start[SERVICE_GET_END(s) * 4];
17255 cardvcc_write(lvcc, SERVICE_GET_END(s), vcc_rxreadptr); 17150 cardvcc_write(lvcc, SERVICE_GET_END(s), vcc_rxreadptr);
17256diff -urNp linux-2.6.29.6/drivers/atm/nicstar.c linux-2.6.29.6/drivers/atm/nicstar.c 17151diff -urNp linux-2.6.30.4/drivers/atm/nicstar.c linux-2.6.30.4/drivers/atm/nicstar.c
17257--- linux-2.6.29.6/drivers/atm/nicstar.c 2009-07-02 19:41:20.000000000 -0400 17152--- linux-2.6.30.4/drivers/atm/nicstar.c 2009-07-24 17:47:51.000000000 -0400
17258+++ linux-2.6.29.6/drivers/atm/nicstar.c 2009-07-23 17:34:32.104830194 -0400 17153+++ linux-2.6.30.4/drivers/atm/nicstar.c 2009-07-30 09:48:09.998576713 -0400
17259@@ -1723,7 +1723,7 @@ static int ns_send(struct atm_vcc *vcc, 17154@@ -1723,7 +1723,7 @@ static int ns_send(struct atm_vcc *vcc,
17260 if ((vc = (vc_map *) vcc->dev_data) == NULL) 17155 if ((vc = (vc_map *) vcc->dev_data) == NULL)
17261 { 17156 {
@@ -17458,10 +17353,10 @@ diff -urNp linux-2.6.29.6/drivers/atm/nicstar.c linux-2.6.29.6/drivers/atm/nicst
17458 } 17353 }
17459 } 17354 }
17460 17355
17461diff -urNp linux-2.6.29.6/drivers/atm/solos-pci.c linux-2.6.29.6/drivers/atm/solos-pci.c 17356diff -urNp linux-2.6.30.4/drivers/atm/solos-pci.c linux-2.6.30.4/drivers/atm/solos-pci.c
17462--- linux-2.6.29.6/drivers/atm/solos-pci.c 2009-07-02 19:41:20.000000000 -0400 17357--- linux-2.6.30.4/drivers/atm/solos-pci.c 2009-07-24 17:47:51.000000000 -0400
17463+++ linux-2.6.29.6/drivers/atm/solos-pci.c 2009-07-23 17:34:32.104830194 -0400 17358+++ linux-2.6.30.4/drivers/atm/solos-pci.c 2009-07-30 09:48:09.998576713 -0400
17464@@ -261,7 +261,7 @@ void solos_bh(unsigned long card_arg) 17359@@ -663,7 +663,7 @@ void solos_bh(unsigned long card_arg)
17465 } 17360 }
17466 atm_charge(vcc, skb->truesize); 17361 atm_charge(vcc, skb->truesize);
17467 vcc->push(vcc, skb); 17362 vcc->push(vcc, skb);
@@ -17469,31 +17364,19 @@ diff -urNp linux-2.6.29.6/drivers/atm/solos-pci.c linux-2.6.29.6/drivers/atm/sol
17469+ atomic_inc_unchecked(&vcc->stats->rx); 17364+ atomic_inc_unchecked(&vcc->stats->rx);
17470 break; 17365 break;
17471 17366
17472 case PKT_COMMAND: 17367 case PKT_STATUS:
17473@@ -487,7 +487,7 @@ static int fpga_tx(struct solos_card *ca 17368@@ -966,7 +966,7 @@ static uint32_t fpga_tx(struct solos_car
17474 vcc = *(void **)skb->cb; 17369 vcc = SKB_CB(oldskb)->vcc;
17475 17370
17476 if (vcc) { 17371 if (vcc) {
17477- atomic_inc(&vcc->stats->tx); 17372- atomic_inc(&vcc->stats->tx);
17478+ atomic_inc_unchecked(&vcc->stats->tx); 17373+ atomic_inc_unchecked(&vcc->stats->tx);
17479 solos_pop(vcc, skb); 17374 solos_pop(vcc, oldskb);
17480 } else 17375 } else
17481 dev_kfree_skb_irq(skb); 17376 dev_kfree_skb_irq(oldskb);
17482@@ -517,9 +517,9 @@ static int psend(struct atm_vcc *vcc, st 17377diff -urNp linux-2.6.30.4/drivers/atm/suni.c linux-2.6.30.4/drivers/atm/suni.c
17483 memcpy(skb2->data, skb->data, skb->len); 17378--- linux-2.6.30.4/drivers/atm/suni.c 2009-07-24 17:47:51.000000000 -0400
17484 skb_put(skb2, skb->len); 17379+++ linux-2.6.30.4/drivers/atm/suni.c 2009-07-30 09:48:09.998576713 -0400
17485 vcc->push(vcc, skb2);
17486- atomic_inc(&vcc->stats->rx);
17487+ atomic_inc_unchecked(&vcc->stats->rx);
17488 }
17489- atomic_inc(&vcc->stats->tx);
17490+ atomic_inc_unchecked(&vcc->stats->tx);
17491 solos_pop(vcc, skb);
17492 return 0;
17493 }
17494diff -urNp linux-2.6.29.6/drivers/atm/suni.c linux-2.6.29.6/drivers/atm/suni.c
17495--- linux-2.6.29.6/drivers/atm/suni.c 2009-07-02 19:41:20.000000000 -0400
17496+++ linux-2.6.29.6/drivers/atm/suni.c 2009-07-23 17:34:32.104830194 -0400
17497@@ -49,7 +49,7 @@ static DEFINE_SPINLOCK(sunis_lock); 17380@@ -49,7 +49,7 @@ static DEFINE_SPINLOCK(sunis_lock);
17498 17381
17499 17382
@@ -17503,9 +17386,9 @@ diff -urNp linux-2.6.29.6/drivers/atm/suni.c linux-2.6.29.6/drivers/atm/suni.c
17503 if (atomic_read(&stats->s) < 0) atomic_set(&stats->s,INT_MAX); 17386 if (atomic_read(&stats->s) < 0) atomic_set(&stats->s,INT_MAX);
17504 17387
17505 17388
17506diff -urNp linux-2.6.29.6/drivers/atm/uPD98402.c linux-2.6.29.6/drivers/atm/uPD98402.c 17389diff -urNp linux-2.6.30.4/drivers/atm/uPD98402.c linux-2.6.30.4/drivers/atm/uPD98402.c
17507--- linux-2.6.29.6/drivers/atm/uPD98402.c 2009-07-02 19:41:20.000000000 -0400 17390--- linux-2.6.30.4/drivers/atm/uPD98402.c 2009-07-24 17:47:51.000000000 -0400
17508+++ linux-2.6.29.6/drivers/atm/uPD98402.c 2009-07-23 17:34:32.105906562 -0400 17391+++ linux-2.6.30.4/drivers/atm/uPD98402.c 2009-07-30 09:48:09.999830275 -0400
17509@@ -41,7 +41,7 @@ static int fetch_stats(struct atm_dev *d 17392@@ -41,7 +41,7 @@ static int fetch_stats(struct atm_dev *d
17510 struct sonet_stats tmp; 17393 struct sonet_stats tmp;
17511 int error = 0; 17394 int error = 0;
@@ -17533,9 +17416,9 @@ diff -urNp linux-2.6.29.6/drivers/atm/uPD98402.c linux-2.6.29.6/drivers/atm/uPD9
17533 &PRIV(dev)->sonet_stats.uncorr_hcs); 17416 &PRIV(dev)->sonet_stats.uncorr_hcs);
17534 } 17417 }
17535 if ((reason & uPD98402_INT_RFO) && 17418 if ((reason & uPD98402_INT_RFO) &&
17536diff -urNp linux-2.6.29.6/drivers/atm/zatm.c linux-2.6.29.6/drivers/atm/zatm.c 17419diff -urNp linux-2.6.30.4/drivers/atm/zatm.c linux-2.6.30.4/drivers/atm/zatm.c
17537--- linux-2.6.29.6/drivers/atm/zatm.c 2009-07-02 19:41:20.000000000 -0400 17420--- linux-2.6.30.4/drivers/atm/zatm.c 2009-07-24 17:47:51.000000000 -0400
17538+++ linux-2.6.29.6/drivers/atm/zatm.c 2009-07-23 17:34:32.105906562 -0400 17421+++ linux-2.6.30.4/drivers/atm/zatm.c 2009-07-30 09:48:09.999830275 -0400
17539@@ -458,7 +458,7 @@ printk("dummy: 0x%08lx, 0x%08lx\n",dummy 17422@@ -458,7 +458,7 @@ printk("dummy: 0x%08lx, 0x%08lx\n",dummy
17540 } 17423 }
17541 if (!size) { 17424 if (!size) {
@@ -17563,10 +17446,10 @@ diff -urNp linux-2.6.29.6/drivers/atm/zatm.c linux-2.6.29.6/drivers/atm/zatm.c
17563 wake_up(&zatm_vcc->tx_wait); 17446 wake_up(&zatm_vcc->tx_wait);
17564 } 17447 }
17565 17448
17566diff -urNp linux-2.6.29.6/drivers/block/cciss.c linux-2.6.29.6/drivers/block/cciss.c 17449diff -urNp linux-2.6.30.4/drivers/block/cciss.c linux-2.6.30.4/drivers/block/cciss.c
17567--- linux-2.6.29.6/drivers/block/cciss.c 2009-07-02 19:41:20.000000000 -0400 17450--- linux-2.6.30.4/drivers/block/cciss.c 2009-07-24 17:47:51.000000000 -0400
17568+++ linux-2.6.29.6/drivers/block/cciss.c 2009-07-23 18:40:27.585424777 -0400 17451+++ linux-2.6.30.4/drivers/block/cciss.c 2009-07-30 09:48:10.000592968 -0400
17569@@ -348,7 +348,7 @@ static void cciss_seq_stop(struct seq_fi 17452@@ -351,7 +351,7 @@ static void cciss_seq_stop(struct seq_fi
17570 h->busy_configuring = 0; 17453 h->busy_configuring = 0;
17571 } 17454 }
17572 17455
@@ -17575,7 +17458,7 @@ diff -urNp linux-2.6.29.6/drivers/block/cciss.c linux-2.6.29.6/drivers/block/cci
17575 .start = cciss_seq_start, 17458 .start = cciss_seq_start,
17576 .show = cciss_seq_show, 17459 .show = cciss_seq_show,
17577 .next = cciss_seq_next, 17460 .next = cciss_seq_next,
17578@@ -411,7 +411,7 @@ out: 17461@@ -414,7 +414,7 @@ out:
17579 return err; 17462 return err;
17580 } 17463 }
17581 17464
@@ -17584,9 +17467,9 @@ diff -urNp linux-2.6.29.6/drivers/block/cciss.c linux-2.6.29.6/drivers/block/cci
17584 .owner = THIS_MODULE, 17467 .owner = THIS_MODULE,
17585 .open = cciss_seq_open, 17468 .open = cciss_seq_open,
17586 .read = seq_read, 17469 .read = seq_read,
17587diff -urNp linux-2.6.29.6/drivers/char/agp/alpha-agp.c linux-2.6.29.6/drivers/char/agp/alpha-agp.c 17470diff -urNp linux-2.6.30.4/drivers/char/agp/alpha-agp.c linux-2.6.30.4/drivers/char/agp/alpha-agp.c
17588--- linux-2.6.29.6/drivers/char/agp/alpha-agp.c 2009-07-02 19:41:20.000000000 -0400 17471--- linux-2.6.30.4/drivers/char/agp/alpha-agp.c 2009-07-24 17:47:51.000000000 -0400
17589+++ linux-2.6.29.6/drivers/char/agp/alpha-agp.c 2009-07-23 18:40:27.599275730 -0400 17472+++ linux-2.6.30.4/drivers/char/agp/alpha-agp.c 2009-07-30 09:48:10.000592968 -0400
17590@@ -40,7 +40,7 @@ static struct aper_size_info_fixed alpha 17473@@ -40,7 +40,7 @@ static struct aper_size_info_fixed alpha
17591 { 0, 0, 0 }, /* filled in by alpha_core_agp_setup */ 17474 { 0, 0, 0 }, /* filled in by alpha_core_agp_setup */
17592 }; 17475 };
@@ -17596,9 +17479,9 @@ diff -urNp linux-2.6.29.6/drivers/char/agp/alpha-agp.c linux-2.6.29.6/drivers/ch
17596 .fault = alpha_core_agp_vm_fault, 17479 .fault = alpha_core_agp_vm_fault,
17597 }; 17480 };
17598 17481
17599diff -urNp linux-2.6.29.6/drivers/char/agp/frontend.c linux-2.6.29.6/drivers/char/agp/frontend.c 17482diff -urNp linux-2.6.30.4/drivers/char/agp/frontend.c linux-2.6.30.4/drivers/char/agp/frontend.c
17600--- linux-2.6.29.6/drivers/char/agp/frontend.c 2009-07-02 19:41:20.000000000 -0400 17483--- linux-2.6.30.4/drivers/char/agp/frontend.c 2009-07-24 17:47:51.000000000 -0400
17601+++ linux-2.6.29.6/drivers/char/agp/frontend.c 2009-07-23 17:34:32.106888179 -0400 17484+++ linux-2.6.30.4/drivers/char/agp/frontend.c 2009-07-30 09:48:10.001783459 -0400
17602@@ -824,7 +824,7 @@ static int agpioc_reserve_wrap(struct ag 17485@@ -824,7 +824,7 @@ static int agpioc_reserve_wrap(struct ag
17603 if (copy_from_user(&reserve, arg, sizeof(struct agp_region))) 17486 if (copy_from_user(&reserve, arg, sizeof(struct agp_region)))
17604 return -EFAULT; 17487 return -EFAULT;
@@ -17608,10 +17491,10 @@ diff -urNp linux-2.6.29.6/drivers/char/agp/frontend.c linux-2.6.29.6/drivers/cha
17608 return -EFAULT; 17491 return -EFAULT;
17609 17492
17610 client = agp_find_client_by_pid(reserve.pid); 17493 client = agp_find_client_by_pid(reserve.pid);
17611diff -urNp linux-2.6.29.6/drivers/char/agp/intel-agp.c linux-2.6.29.6/drivers/char/agp/intel-agp.c 17494diff -urNp linux-2.6.30.4/drivers/char/agp/intel-agp.c linux-2.6.30.4/drivers/char/agp/intel-agp.c
17612--- linux-2.6.29.6/drivers/char/agp/intel-agp.c 2009-07-02 19:41:20.000000000 -0400 17495--- linux-2.6.30.4/drivers/char/agp/intel-agp.c 2009-07-24 17:47:51.000000000 -0400
17613+++ linux-2.6.29.6/drivers/char/agp/intel-agp.c 2009-07-23 17:34:32.106888179 -0400 17496+++ linux-2.6.30.4/drivers/char/agp/intel-agp.c 2009-07-30 09:48:10.002661044 -0400
17614@@ -2369,7 +2369,7 @@ static struct pci_device_id agp_intel_pc 17497@@ -2387,7 +2387,7 @@ static struct pci_device_id agp_intel_pc
17615 ID(PCI_DEVICE_ID_INTEL_Q45_HB), 17498 ID(PCI_DEVICE_ID_INTEL_Q45_HB),
17616 ID(PCI_DEVICE_ID_INTEL_G45_HB), 17499 ID(PCI_DEVICE_ID_INTEL_G45_HB),
17617 ID(PCI_DEVICE_ID_INTEL_G41_HB), 17500 ID(PCI_DEVICE_ID_INTEL_G41_HB),
@@ -17620,9 +17503,9 @@ diff -urNp linux-2.6.29.6/drivers/char/agp/intel-agp.c linux-2.6.29.6/drivers/ch
17620 }; 17503 };
17621 17504
17622 MODULE_DEVICE_TABLE(pci, agp_intel_pci_table); 17505 MODULE_DEVICE_TABLE(pci, agp_intel_pci_table);
17623diff -urNp linux-2.6.29.6/drivers/char/apm-emulation.c linux-2.6.29.6/drivers/char/apm-emulation.c 17506diff -urNp linux-2.6.30.4/drivers/char/apm-emulation.c linux-2.6.30.4/drivers/char/apm-emulation.c
17624--- linux-2.6.29.6/drivers/char/apm-emulation.c 2009-07-02 19:41:20.000000000 -0400 17507--- linux-2.6.30.4/drivers/char/apm-emulation.c 2009-07-24 17:47:51.000000000 -0400
17625+++ linux-2.6.29.6/drivers/char/apm-emulation.c 2009-07-23 18:40:27.609518419 -0400 17508+++ linux-2.6.30.4/drivers/char/apm-emulation.c 2009-07-30 09:48:10.002661044 -0400
17626@@ -393,7 +393,7 @@ static int apm_open(struct inode * inode 17509@@ -393,7 +393,7 @@ static int apm_open(struct inode * inode
17627 return as ? 0 : -ENOMEM; 17510 return as ? 0 : -ENOMEM;
17628 } 17511 }
@@ -17632,9 +17515,9 @@ diff -urNp linux-2.6.29.6/drivers/char/apm-emulation.c linux-2.6.29.6/drivers/ch
17632 .owner = THIS_MODULE, 17515 .owner = THIS_MODULE,
17633 .read = apm_read, 17516 .read = apm_read,
17634 .poll = apm_poll, 17517 .poll = apm_poll,
17635diff -urNp linux-2.6.29.6/drivers/char/bfin-otp.c linux-2.6.29.6/drivers/char/bfin-otp.c 17518diff -urNp linux-2.6.30.4/drivers/char/bfin-otp.c linux-2.6.30.4/drivers/char/bfin-otp.c
17636--- linux-2.6.29.6/drivers/char/bfin-otp.c 2009-07-02 19:41:20.000000000 -0400 17519--- linux-2.6.30.4/drivers/char/bfin-otp.c 2009-07-24 17:47:51.000000000 -0400
17637+++ linux-2.6.29.6/drivers/char/bfin-otp.c 2009-07-23 18:40:27.623278888 -0400 17520+++ linux-2.6.30.4/drivers/char/bfin-otp.c 2009-07-30 09:48:10.003480690 -0400
17638@@ -133,7 +133,7 @@ static ssize_t bfin_otp_write(struct fil 17521@@ -133,7 +133,7 @@ static ssize_t bfin_otp_write(struct fil
17639 # define bfin_otp_write NULL 17522 # define bfin_otp_write NULL
17640 #endif 17523 #endif
@@ -17644,10 +17527,10 @@ diff -urNp linux-2.6.29.6/drivers/char/bfin-otp.c linux-2.6.29.6/drivers/char/bf
17644 .owner = THIS_MODULE, 17527 .owner = THIS_MODULE,
17645 .read = bfin_otp_read, 17528 .read = bfin_otp_read,
17646 .write = bfin_otp_write, 17529 .write = bfin_otp_write,
17647diff -urNp linux-2.6.29.6/drivers/char/hpet.c linux-2.6.29.6/drivers/char/hpet.c 17530diff -urNp linux-2.6.30.4/drivers/char/hpet.c linux-2.6.30.4/drivers/char/hpet.c
17648--- linux-2.6.29.6/drivers/char/hpet.c 2009-07-02 19:41:20.000000000 -0400 17531--- linux-2.6.30.4/drivers/char/hpet.c 2009-07-24 17:47:51.000000000 -0400
17649+++ linux-2.6.29.6/drivers/char/hpet.c 2009-07-23 17:34:32.107872457 -0400 17532+++ linux-2.6.30.4/drivers/char/hpet.c 2009-07-30 09:48:10.003480690 -0400
17650@@ -975,7 +975,7 @@ static struct acpi_driver hpet_acpi_driv 17533@@ -995,7 +995,7 @@ static struct acpi_driver hpet_acpi_driv
17651 }, 17534 },
17652 }; 17535 };
17653 17536
@@ -17656,10 +17539,10 @@ diff -urNp linux-2.6.29.6/drivers/char/hpet.c linux-2.6.29.6/drivers/char/hpet.c
17656 17539
17657 static int __init hpet_init(void) 17540 static int __init hpet_init(void)
17658 { 17541 {
17659diff -urNp linux-2.6.29.6/drivers/char/ipmi/ipmi_msghandler.c linux-2.6.29.6/drivers/char/ipmi/ipmi_msghandler.c 17542diff -urNp linux-2.6.30.4/drivers/char/ipmi/ipmi_msghandler.c linux-2.6.30.4/drivers/char/ipmi/ipmi_msghandler.c
17660--- linux-2.6.29.6/drivers/char/ipmi/ipmi_msghandler.c 2009-07-02 19:41:20.000000000 -0400 17543--- linux-2.6.30.4/drivers/char/ipmi/ipmi_msghandler.c 2009-07-24 17:47:51.000000000 -0400
17661+++ linux-2.6.29.6/drivers/char/ipmi/ipmi_msghandler.c 2009-07-23 17:34:32.108842847 -0400 17544+++ linux-2.6.30.4/drivers/char/ipmi/ipmi_msghandler.c 2009-07-30 09:48:10.004509700 -0400
17662@@ -408,7 +408,7 @@ struct ipmi_smi { 17545@@ -413,7 +413,7 @@ struct ipmi_smi {
17663 struct proc_dir_entry *proc_dir; 17546 struct proc_dir_entry *proc_dir;
17664 char proc_dir_name[10]; 17547 char proc_dir_name[10];
17665 17548
@@ -17668,7 +17551,7 @@ diff -urNp linux-2.6.29.6/drivers/char/ipmi/ipmi_msghandler.c linux-2.6.29.6/dri
17668 17551
17669 /* 17552 /*
17670 * run_to_completion duplicate of smb_info, smi_info 17553 * run_to_completion duplicate of smb_info, smi_info
17671@@ -441,7 +441,7 @@ static DEFINE_MUTEX(smi_watchers_mutex); 17554@@ -446,7 +446,7 @@ static DEFINE_MUTEX(smi_watchers_mutex);
17672 17555
17673 17556
17674 #define ipmi_inc_stat(intf, stat) \ 17557 #define ipmi_inc_stat(intf, stat) \
@@ -17677,10 +17560,10 @@ diff -urNp linux-2.6.29.6/drivers/char/ipmi/ipmi_msghandler.c linux-2.6.29.6/dri
17677 #define ipmi_get_stat(intf, stat) \ 17560 #define ipmi_get_stat(intf, stat) \
17678 ((unsigned int) atomic_read(&(intf)->stats[IPMI_STAT_ ## stat])) 17561 ((unsigned int) atomic_read(&(intf)->stats[IPMI_STAT_ ## stat]))
17679 17562
17680diff -urNp linux-2.6.29.6/drivers/char/ipmi/ipmi_si_intf.c linux-2.6.29.6/drivers/char/ipmi/ipmi_si_intf.c 17563diff -urNp linux-2.6.30.4/drivers/char/ipmi/ipmi_si_intf.c linux-2.6.30.4/drivers/char/ipmi/ipmi_si_intf.c
17681--- linux-2.6.29.6/drivers/char/ipmi/ipmi_si_intf.c 2009-07-02 19:41:20.000000000 -0400 17564--- linux-2.6.30.4/drivers/char/ipmi/ipmi_si_intf.c 2009-07-24 17:47:51.000000000 -0400
17682+++ linux-2.6.29.6/drivers/char/ipmi/ipmi_si_intf.c 2009-07-23 17:34:37.458887026 -0400 17565+++ linux-2.6.30.4/drivers/char/ipmi/ipmi_si_intf.c 2009-07-30 09:48:10.005414644 -0400
17683@@ -280,7 +280,7 @@ struct smi_info { 17566@@ -277,7 +277,7 @@ struct smi_info {
17684 unsigned char slave_addr; 17567 unsigned char slave_addr;
17685 17568
17686 /* Counters and things for the proc filesystem. */ 17569 /* Counters and things for the proc filesystem. */
@@ -17689,7 +17572,7 @@ diff -urNp linux-2.6.29.6/drivers/char/ipmi/ipmi_si_intf.c linux-2.6.29.6/driver
17689 17572
17690 struct task_struct *thread; 17573 struct task_struct *thread;
17691 17574
17692@@ -288,7 +288,7 @@ struct smi_info { 17575@@ -285,7 +285,7 @@ struct smi_info {
17693 }; 17576 };
17694 17577
17695 #define smi_inc_stat(smi, stat) \ 17578 #define smi_inc_stat(smi, stat) \
@@ -17698,9 +17581,9 @@ diff -urNp linux-2.6.29.6/drivers/char/ipmi/ipmi_si_intf.c linux-2.6.29.6/driver
17698 #define smi_get_stat(smi, stat) \ 17581 #define smi_get_stat(smi, stat) \
17699 ((unsigned int) atomic_read(&(smi)->stats[SI_STAT_ ## stat])) 17582 ((unsigned int) atomic_read(&(smi)->stats[SI_STAT_ ## stat]))
17700 17583
17701diff -urNp linux-2.6.29.6/drivers/char/keyboard.c linux-2.6.29.6/drivers/char/keyboard.c 17584diff -urNp linux-2.6.30.4/drivers/char/keyboard.c linux-2.6.30.4/drivers/char/keyboard.c
17702--- linux-2.6.29.6/drivers/char/keyboard.c 2009-07-02 19:41:20.000000000 -0400 17585--- linux-2.6.30.4/drivers/char/keyboard.c 2009-07-24 17:47:51.000000000 -0400
17703+++ linux-2.6.29.6/drivers/char/keyboard.c 2009-07-23 17:34:32.110802772 -0400 17586+++ linux-2.6.30.4/drivers/char/keyboard.c 2009-07-30 11:10:48.982870250 -0400
17704@@ -635,6 +635,16 @@ static void k_spec(struct vc_data *vc, u 17587@@ -635,6 +635,16 @@ static void k_spec(struct vc_data *vc, u
17705 kbd->kbdmode == VC_MEDIUMRAW) && 17588 kbd->kbdmode == VC_MEDIUMRAW) &&
17706 value != KVAL(K_SAK)) 17589 value != KVAL(K_SAK))
@@ -17727,9 +17610,9 @@ diff -urNp linux-2.6.29.6/drivers/char/keyboard.c linux-2.6.29.6/drivers/char/ke
17727 }; 17610 };
17728 17611
17729 MODULE_DEVICE_TABLE(input, kbd_ids); 17612 MODULE_DEVICE_TABLE(input, kbd_ids);
17730diff -urNp linux-2.6.29.6/drivers/char/mem.c linux-2.6.29.6/drivers/char/mem.c 17613diff -urNp linux-2.6.30.4/drivers/char/mem.c linux-2.6.30.4/drivers/char/mem.c
17731--- linux-2.6.29.6/drivers/char/mem.c 2009-07-02 19:41:20.000000000 -0400 17614--- linux-2.6.30.4/drivers/char/mem.c 2009-07-24 17:47:51.000000000 -0400
17732+++ linux-2.6.29.6/drivers/char/mem.c 2009-07-23 19:28:45.822497906 -0400 17615+++ linux-2.6.30.4/drivers/char/mem.c 2009-07-30 12:07:09.578070399 -0400
17733@@ -18,6 +18,7 @@ 17616@@ -18,6 +18,7 @@
17734 #include <linux/raw.h> 17617 #include <linux/raw.h>
17735 #include <linux/tty.h> 17618 #include <linux/tty.h>
@@ -17761,16 +17644,16 @@ diff -urNp linux-2.6.29.6/drivers/char/mem.c linux-2.6.29.6/drivers/char/mem.c
17761 written = 0; 17644 written = 0;
17762 17645
17763 #ifdef __ARCH_HAS_NO_PAGE_ZERO_MAPPED 17646 #ifdef __ARCH_HAS_NO_PAGE_ZERO_MAPPED
17764@@ -325,7 +335,7 @@ static void mmap_mem_close(struct vm_are 17647@@ -301,7 +311,7 @@ static inline int private_mapping_ok(str
17765 vma->vm_page_prot);
17766 } 17648 }
17649 #endif
17767 17650
17768-static struct vm_operations_struct mmap_mem_ops = { 17651-static struct vm_operations_struct mmap_mem_ops = {
17769+static const struct vm_operations_struct mmap_mem_ops = { 17652+static const struct vm_operations_struct mmap_mem_ops = {
17770 .open = mmap_mem_open,
17771 .close = mmap_mem_close,
17772 #ifdef CONFIG_HAVE_IOREMAP_PROT 17653 #ifdef CONFIG_HAVE_IOREMAP_PROT
17773@@ -350,6 +360,11 @@ static int mmap_mem(struct file * file, 17654 .access = generic_access_phys
17655 #endif
17656@@ -324,6 +334,11 @@ static int mmap_mem(struct file * file,
17774 &vma->vm_page_prot)) 17657 &vma->vm_page_prot))
17775 return -EINVAL; 17658 return -EINVAL;
17776 17659
@@ -17782,7 +17665,7 @@ diff -urNp linux-2.6.29.6/drivers/char/mem.c linux-2.6.29.6/drivers/char/mem.c
17782 vma->vm_page_prot = phys_mem_access_prot(file, vma->vm_pgoff, 17665 vma->vm_page_prot = phys_mem_access_prot(file, vma->vm_pgoff,
17783 size, 17666 size,
17784 vma->vm_page_prot); 17667 vma->vm_page_prot);
17785@@ -585,6 +600,11 @@ static ssize_t write_kmem(struct file * 17668@@ -558,6 +573,11 @@ static ssize_t write_kmem(struct file *
17786 ssize_t written; 17669 ssize_t written;
17787 char * kbuf; /* k-addr because vwrite() takes vmlist_lock rwlock */ 17670 char * kbuf; /* k-addr because vwrite() takes vmlist_lock rwlock */
17788 17671
@@ -17794,7 +17677,7 @@ diff -urNp linux-2.6.29.6/drivers/char/mem.c linux-2.6.29.6/drivers/char/mem.c
17794 if (p < (unsigned long) high_memory) { 17677 if (p < (unsigned long) high_memory) {
17795 17678
17796 wrote = count; 17679 wrote = count;
17797@@ -788,6 +808,16 @@ static loff_t memory_lseek(struct file * 17680@@ -764,6 +784,16 @@ static loff_t memory_lseek(struct file *
17798 17681
17799 static int open_port(struct inode * inode, struct file * filp) 17682 static int open_port(struct inode * inode, struct file * filp)
17800 { 17683 {
@@ -17811,7 +17694,7 @@ diff -urNp linux-2.6.29.6/drivers/char/mem.c linux-2.6.29.6/drivers/char/mem.c
17811 return capable(CAP_SYS_RAWIO) ? 0 : -EPERM; 17694 return capable(CAP_SYS_RAWIO) ? 0 : -EPERM;
17812 } 17695 }
17813 17696
17814@@ -795,7 +825,6 @@ static int open_port(struct inode * inod 17697@@ -771,7 +801,6 @@ static int open_port(struct inode * inod
17815 #define full_lseek null_lseek 17698 #define full_lseek null_lseek
17816 #define write_zero write_null 17699 #define write_zero write_null
17817 #define read_full read_zero 17700 #define read_full read_zero
@@ -17819,7 +17702,7 @@ diff -urNp linux-2.6.29.6/drivers/char/mem.c linux-2.6.29.6/drivers/char/mem.c
17819 #define open_kmem open_mem 17702 #define open_kmem open_mem
17820 #define open_oldmem open_mem 17703 #define open_oldmem open_mem
17821 17704
17822@@ -935,6 +964,11 @@ static int memory_open(struct inode * in 17705@@ -911,6 +940,11 @@ static int memory_open(struct inode * in
17823 filp->f_op = &oldmem_fops; 17706 filp->f_op = &oldmem_fops;
17824 break; 17707 break;
17825 #endif 17708 #endif
@@ -17831,7 +17714,7 @@ diff -urNp linux-2.6.29.6/drivers/char/mem.c linux-2.6.29.6/drivers/char/mem.c
17831 default: 17714 default:
17832 unlock_kernel(); 17715 unlock_kernel();
17833 return -ENXIO; 17716 return -ENXIO;
17834@@ -971,6 +1005,9 @@ static const struct { 17717@@ -947,6 +981,9 @@ static const struct {
17835 #ifdef CONFIG_CRASH_DUMP 17718 #ifdef CONFIG_CRASH_DUMP
17836 {12,"oldmem", S_IRUSR | S_IWUSR | S_IRGRP, &oldmem_fops}, 17719 {12,"oldmem", S_IRUSR | S_IWUSR | S_IRGRP, &oldmem_fops},
17837 #endif 17720 #endif
@@ -17841,9 +17724,9 @@ diff -urNp linux-2.6.29.6/drivers/char/mem.c linux-2.6.29.6/drivers/char/mem.c
17841 }; 17724 };
17842 17725
17843 static struct class *mem_class; 17726 static struct class *mem_class;
17844diff -urNp linux-2.6.29.6/drivers/char/misc.c linux-2.6.29.6/drivers/char/misc.c 17727diff -urNp linux-2.6.30.4/drivers/char/misc.c linux-2.6.30.4/drivers/char/misc.c
17845--- linux-2.6.29.6/drivers/char/misc.c 2009-07-02 19:41:20.000000000 -0400 17728--- linux-2.6.30.4/drivers/char/misc.c 2009-07-24 17:47:51.000000000 -0400
17846+++ linux-2.6.29.6/drivers/char/misc.c 2009-07-23 18:40:27.623278888 -0400 17729+++ linux-2.6.30.4/drivers/char/misc.c 2009-07-30 09:48:10.006662764 -0400
17847@@ -91,7 +91,7 @@ static int misc_seq_show(struct seq_file 17730@@ -91,7 +91,7 @@ static int misc_seq_show(struct seq_file
17848 } 17731 }
17849 17732
@@ -17853,9 +17736,9 @@ diff -urNp linux-2.6.29.6/drivers/char/misc.c linux-2.6.29.6/drivers/char/misc.c
17853 .start = misc_seq_start, 17736 .start = misc_seq_start,
17854 .next = misc_seq_next, 17737 .next = misc_seq_next,
17855 .stop = misc_seq_stop, 17738 .stop = misc_seq_stop,
17856diff -urNp linux-2.6.29.6/drivers/char/mspec.c linux-2.6.29.6/drivers/char/mspec.c 17739diff -urNp linux-2.6.30.4/drivers/char/mspec.c linux-2.6.30.4/drivers/char/mspec.c
17857--- linux-2.6.29.6/drivers/char/mspec.c 2009-07-02 19:41:20.000000000 -0400 17740--- linux-2.6.30.4/drivers/char/mspec.c 2009-07-24 17:47:51.000000000 -0400
17858+++ linux-2.6.29.6/drivers/char/mspec.c 2009-07-23 18:40:27.630131161 -0400 17741+++ linux-2.6.30.4/drivers/char/mspec.c 2009-07-30 09:48:10.006662764 -0400
17859@@ -239,7 +239,7 @@ mspec_fault(struct vm_area_struct *vma, 17742@@ -239,7 +239,7 @@ mspec_fault(struct vm_area_struct *vma,
17860 return VM_FAULT_NOPAGE; 17743 return VM_FAULT_NOPAGE;
17861 } 17744 }
@@ -17865,9 +17748,9 @@ diff -urNp linux-2.6.29.6/drivers/char/mspec.c linux-2.6.29.6/drivers/char/mspec
17865 .open = mspec_open, 17748 .open = mspec_open,
17866 .close = mspec_close, 17749 .close = mspec_close,
17867 .fault = mspec_fault, 17750 .fault = mspec_fault,
17868diff -urNp linux-2.6.29.6/drivers/char/nvram.c linux-2.6.29.6/drivers/char/nvram.c 17751diff -urNp linux-2.6.30.4/drivers/char/nvram.c linux-2.6.30.4/drivers/char/nvram.c
17869--- linux-2.6.29.6/drivers/char/nvram.c 2009-07-02 19:41:20.000000000 -0400 17752--- linux-2.6.30.4/drivers/char/nvram.c 2009-07-24 17:47:51.000000000 -0400
17870+++ linux-2.6.29.6/drivers/char/nvram.c 2009-07-23 17:34:32.110802772 -0400 17753+++ linux-2.6.30.4/drivers/char/nvram.c 2009-07-30 09:48:10.006662764 -0400
17871@@ -429,7 +429,10 @@ static const struct file_operations nvra 17754@@ -429,7 +429,10 @@ static const struct file_operations nvra
17872 static struct miscdevice nvram_dev = { 17755 static struct miscdevice nvram_dev = {
17873 NVRAM_MINOR, 17756 NVRAM_MINOR,
@@ -17880,10 +17763,10 @@ diff -urNp linux-2.6.29.6/drivers/char/nvram.c linux-2.6.29.6/drivers/char/nvram
17880 }; 17763 };
17881 17764
17882 static int __init nvram_init(void) 17765 static int __init nvram_init(void)
17883diff -urNp linux-2.6.29.6/drivers/char/random.c linux-2.6.29.6/drivers/char/random.c 17766diff -urNp linux-2.6.30.4/drivers/char/random.c linux-2.6.30.4/drivers/char/random.c
17884--- linux-2.6.29.6/drivers/char/random.c 2009-07-02 19:41:20.000000000 -0400 17767--- linux-2.6.30.4/drivers/char/random.c 2009-07-24 17:47:51.000000000 -0400
17885+++ linux-2.6.29.6/drivers/char/random.c 2009-07-23 17:34:32.111778535 -0400 17768+++ linux-2.6.30.4/drivers/char/random.c 2009-07-30 11:10:48.992521357 -0400
17886@@ -249,8 +249,13 @@ 17769@@ -253,8 +253,13 @@
17887 /* 17770 /*
17888 * Configuration information 17771 * Configuration information
17889 */ 17772 */
@@ -17897,7 +17780,7 @@ diff -urNp linux-2.6.29.6/drivers/char/random.c linux-2.6.29.6/drivers/char/rand
17897 #define SEC_XFER_SIZE 512 17780 #define SEC_XFER_SIZE 512
17898 17781
17899 /* 17782 /*
17900@@ -287,10 +292,17 @@ static struct poolinfo { 17783@@ -291,10 +296,17 @@ static struct poolinfo {
17901 int poolwords; 17784 int poolwords;
17902 int tap1, tap2, tap3, tap4, tap5; 17785 int tap1, tap2, tap3, tap4, tap5;
17903 } poolinfo_table[] = { 17786 } poolinfo_table[] = {
@@ -17915,7 +17798,7 @@ diff -urNp linux-2.6.29.6/drivers/char/random.c linux-2.6.29.6/drivers/char/rand
17915 #if 0 17798 #if 0
17916 /* x^2048 + x^1638 + x^1231 + x^819 + x^411 + x + 1 -- 115 */ 17799 /* x^2048 + x^1638 + x^1231 + x^819 + x^411 + x + 1 -- 115 */
17917 { 2048, 1638, 1231, 819, 411, 1 }, 17800 { 2048, 1638, 1231, 819, 411, 1 },
17918@@ -1200,7 +1212,7 @@ EXPORT_SYMBOL(generate_random_uuid); 17801@@ -1204,7 +1216,7 @@ EXPORT_SYMBOL(generate_random_uuid);
17919 #include <linux/sysctl.h> 17802 #include <linux/sysctl.h>
17920 17803
17921 static int min_read_thresh = 8, min_write_thresh; 17804 static int min_read_thresh = 8, min_write_thresh;
@@ -17924,9 +17807,9 @@ diff -urNp linux-2.6.29.6/drivers/char/random.c linux-2.6.29.6/drivers/char/rand
17924 static int max_write_thresh = INPUT_POOL_WORDS * 32; 17807 static int max_write_thresh = INPUT_POOL_WORDS * 32;
17925 static char sysctl_bootid[16]; 17808 static char sysctl_bootid[16];
17926 17809
17927diff -urNp linux-2.6.29.6/drivers/char/tpm/tpm_bios.c linux-2.6.29.6/drivers/char/tpm/tpm_bios.c 17810diff -urNp linux-2.6.30.4/drivers/char/tpm/tpm_bios.c linux-2.6.30.4/drivers/char/tpm/tpm_bios.c
17928--- linux-2.6.29.6/drivers/char/tpm/tpm_bios.c 2009-07-02 19:41:20.000000000 -0400 17811--- linux-2.6.30.4/drivers/char/tpm/tpm_bios.c 2009-07-24 17:47:51.000000000 -0400
17929+++ linux-2.6.29.6/drivers/char/tpm/tpm_bios.c 2009-07-23 18:40:27.636145642 -0400 17812+++ linux-2.6.30.4/drivers/char/tpm/tpm_bios.c 2009-07-30 09:48:10.007651841 -0400
17930@@ -343,14 +343,14 @@ static int tpm_ascii_bios_measurements_s 17813@@ -343,14 +343,14 @@ static int tpm_ascii_bios_measurements_s
17931 return 0; 17814 return 0;
17932 } 17815 }
@@ -17944,10 +17827,10 @@ diff -urNp linux-2.6.29.6/drivers/char/tpm/tpm_bios.c linux-2.6.29.6/drivers/cha
17944 .start = tpm_bios_measurements_start, 17827 .start = tpm_bios_measurements_start,
17945 .next = tpm_bios_measurements_next, 17828 .next = tpm_bios_measurements_next,
17946 .stop = tpm_bios_measurements_stop, 17829 .stop = tpm_bios_measurements_stop,
17947diff -urNp linux-2.6.29.6/drivers/char/tty_ldisc.c linux-2.6.29.6/drivers/char/tty_ldisc.c 17830diff -urNp linux-2.6.30.4/drivers/char/tty_ldisc.c linux-2.6.30.4/drivers/char/tty_ldisc.c
17948--- linux-2.6.29.6/drivers/char/tty_ldisc.c 2009-07-02 19:41:20.000000000 -0400 17831--- linux-2.6.30.4/drivers/char/tty_ldisc.c 2009-07-24 17:47:51.000000000 -0400
17949+++ linux-2.6.29.6/drivers/char/tty_ldisc.c 2009-07-23 17:34:32.112769665 -0400 17832+++ linux-2.6.30.4/drivers/char/tty_ldisc.c 2009-07-30 09:48:10.008436205 -0400
17950@@ -74,7 +74,7 @@ int tty_register_ldisc(int disc, struct 17833@@ -73,7 +73,7 @@ int tty_register_ldisc(int disc, struct
17951 spin_lock_irqsave(&tty_ldisc_lock, flags); 17834 spin_lock_irqsave(&tty_ldisc_lock, flags);
17952 tty_ldiscs[disc] = new_ldisc; 17835 tty_ldiscs[disc] = new_ldisc;
17953 new_ldisc->num = disc; 17836 new_ldisc->num = disc;
@@ -17956,7 +17839,7 @@ diff -urNp linux-2.6.29.6/drivers/char/tty_ldisc.c linux-2.6.29.6/drivers/char/t
17956 spin_unlock_irqrestore(&tty_ldisc_lock, flags); 17839 spin_unlock_irqrestore(&tty_ldisc_lock, flags);
17957 17840
17958 return ret; 17841 return ret;
17959@@ -102,7 +102,7 @@ int tty_unregister_ldisc(int disc) 17842@@ -101,7 +101,7 @@ int tty_unregister_ldisc(int disc)
17960 return -EINVAL; 17843 return -EINVAL;
17961 17844
17962 spin_lock_irqsave(&tty_ldisc_lock, flags); 17845 spin_lock_irqsave(&tty_ldisc_lock, flags);
@@ -17965,7 +17848,7 @@ diff -urNp linux-2.6.29.6/drivers/char/tty_ldisc.c linux-2.6.29.6/drivers/char/t
17965 ret = -EBUSY; 17848 ret = -EBUSY;
17966 else 17849 else
17967 tty_ldiscs[disc] = NULL; 17850 tty_ldiscs[disc] = NULL;
17968@@ -139,7 +139,7 @@ static int tty_ldisc_try_get(int disc, s 17851@@ -138,7 +138,7 @@ static int tty_ldisc_try_get(int disc, s
17969 err = -EAGAIN; 17852 err = -EAGAIN;
17970 else { 17853 else {
17971 /* lock it */ 17854 /* lock it */
@@ -17974,7 +17857,7 @@ diff -urNp linux-2.6.29.6/drivers/char/tty_ldisc.c linux-2.6.29.6/drivers/char/t
17974 ld->ops = ldops; 17857 ld->ops = ldops;
17975 err = 0; 17858 err = 0;
17976 } 17859 }
17977@@ -196,8 +196,8 @@ static void tty_ldisc_put(struct tty_ldi 17860@@ -195,8 +195,8 @@ static void tty_ldisc_put(struct tty_ldi
17978 17861
17979 spin_lock_irqsave(&tty_ldisc_lock, flags); 17862 spin_lock_irqsave(&tty_ldisc_lock, flags);
17980 ld = tty_ldiscs[disc]; 17863 ld = tty_ldiscs[disc];
@@ -17985,7 +17868,7 @@ diff -urNp linux-2.6.29.6/drivers/char/tty_ldisc.c linux-2.6.29.6/drivers/char/t
17985 module_put(ld->owner); 17868 module_put(ld->owner);
17986 spin_unlock_irqrestore(&tty_ldisc_lock, flags); 17869 spin_unlock_irqrestore(&tty_ldisc_lock, flags);
17987 } 17870 }
17988@@ -264,7 +264,7 @@ const struct file_operations tty_ldiscs_ 17871@@ -263,7 +263,7 @@ const struct file_operations tty_ldiscs_
17989 17872
17990 static void tty_ldisc_assign(struct tty_struct *tty, struct tty_ldisc *ld) 17873 static void tty_ldisc_assign(struct tty_struct *tty, struct tty_ldisc *ld)
17991 { 17874 {
@@ -17994,7 +17877,7 @@ diff -urNp linux-2.6.29.6/drivers/char/tty_ldisc.c linux-2.6.29.6/drivers/char/t
17994 tty->ldisc = *ld; 17877 tty->ldisc = *ld;
17995 } 17878 }
17996 17879
17997@@ -289,7 +289,7 @@ static int tty_ldisc_try(struct tty_stru 17880@@ -288,7 +288,7 @@ static int tty_ldisc_try(struct tty_stru
17998 spin_lock_irqsave(&tty_ldisc_lock, flags); 17881 spin_lock_irqsave(&tty_ldisc_lock, flags);
17999 ld = &tty->ldisc; 17882 ld = &tty->ldisc;
18000 if (test_bit(TTY_LDISC, &tty->flags)) { 17883 if (test_bit(TTY_LDISC, &tty->flags)) {
@@ -18003,7 +17886,7 @@ diff -urNp linux-2.6.29.6/drivers/char/tty_ldisc.c linux-2.6.29.6/drivers/char/t
18003 ret = 1; 17886 ret = 1;
18004 } 17887 }
18005 spin_unlock_irqrestore(&tty_ldisc_lock, flags); 17888 spin_unlock_irqrestore(&tty_ldisc_lock, flags);
18006@@ -316,7 +316,7 @@ struct tty_ldisc *tty_ldisc_ref_wait(str 17889@@ -315,7 +315,7 @@ struct tty_ldisc *tty_ldisc_ref_wait(str
18007 { 17890 {
18008 /* wait_event is a macro */ 17891 /* wait_event is a macro */
18009 wait_event(tty_ldisc_wait, tty_ldisc_try(tty)); 17892 wait_event(tty_ldisc_wait, tty_ldisc_try(tty));
@@ -18012,7 +17895,7 @@ diff -urNp linux-2.6.29.6/drivers/char/tty_ldisc.c linux-2.6.29.6/drivers/char/t
18012 return &tty->ldisc; 17895 return &tty->ldisc;
18013 } 17896 }
18014 17897
18015@@ -359,11 +359,9 @@ void tty_ldisc_deref(struct tty_ldisc *l 17898@@ -358,11 +358,9 @@ void tty_ldisc_deref(struct tty_ldisc *l
18016 BUG_ON(ld == NULL); 17899 BUG_ON(ld == NULL);
18017 17900
18018 spin_lock_irqsave(&tty_ldisc_lock, flags); 17901 spin_lock_irqsave(&tty_ldisc_lock, flags);
@@ -18026,7 +17909,7 @@ diff -urNp linux-2.6.29.6/drivers/char/tty_ldisc.c linux-2.6.29.6/drivers/char/t
18026 wake_up(&tty_ldisc_wait); 17909 wake_up(&tty_ldisc_wait);
18027 spin_unlock_irqrestore(&tty_ldisc_lock, flags); 17910 spin_unlock_irqrestore(&tty_ldisc_lock, flags);
18028 } 17911 }
18029@@ -507,8 +505,8 @@ restart: 17912@@ -506,8 +504,8 @@ restart:
18030 clear_bit(TTY_LDISC, &o_tty->flags); 17913 clear_bit(TTY_LDISC, &o_tty->flags);
18031 17914
18032 spin_lock_irqsave(&tty_ldisc_lock, flags); 17915 spin_lock_irqsave(&tty_ldisc_lock, flags);
@@ -18037,7 +17920,7 @@ diff -urNp linux-2.6.29.6/drivers/char/tty_ldisc.c linux-2.6.29.6/drivers/char/t
18037 /* Free the new ldisc we grabbed. Must drop the lock 17920 /* Free the new ldisc we grabbed. Must drop the lock
18038 first. */ 17921 first. */
18039 spin_unlock_irqrestore(&tty_ldisc_lock, flags); 17922 spin_unlock_irqrestore(&tty_ldisc_lock, flags);
18040@@ -520,14 +518,14 @@ restart: 17923@@ -519,14 +517,14 @@ restart:
18041 * and retries if we made tty_ldisc_wait() smarter. 17924 * and retries if we made tty_ldisc_wait() smarter.
18042 * That is up for discussion. 17925 * That is up for discussion.
18043 */ 17926 */
@@ -18055,7 +17938,7 @@ diff -urNp linux-2.6.29.6/drivers/char/tty_ldisc.c linux-2.6.29.6/drivers/char/t
18055 return -ERESTARTSYS; 17938 return -ERESTARTSYS;
18056 goto restart; 17939 goto restart;
18057 } 17940 }
18058@@ -670,9 +668,9 @@ void tty_ldisc_release(struct tty_struct 17941@@ -669,9 +667,9 @@ void tty_ldisc_release(struct tty_struct
18059 * side is zero. 17942 * side is zero.
18060 */ 17943 */
18061 spin_lock_irqsave(&tty_ldisc_lock, flags); 17944 spin_lock_irqsave(&tty_ldisc_lock, flags);
@@ -18067,9 +17950,9 @@ diff -urNp linux-2.6.29.6/drivers/char/tty_ldisc.c linux-2.6.29.6/drivers/char/t
18067 spin_lock_irqsave(&tty_ldisc_lock, flags); 17950 spin_lock_irqsave(&tty_ldisc_lock, flags);
18068 } 17951 }
18069 spin_unlock_irqrestore(&tty_ldisc_lock, flags); 17952 spin_unlock_irqrestore(&tty_ldisc_lock, flags);
18070diff -urNp linux-2.6.29.6/drivers/char/vt_ioctl.c linux-2.6.29.6/drivers/char/vt_ioctl.c 17953diff -urNp linux-2.6.30.4/drivers/char/vt_ioctl.c linux-2.6.30.4/drivers/char/vt_ioctl.c
18071--- linux-2.6.29.6/drivers/char/vt_ioctl.c 2009-07-02 19:41:20.000000000 -0400 17954--- linux-2.6.30.4/drivers/char/vt_ioctl.c 2009-07-24 17:47:51.000000000 -0400
18072+++ linux-2.6.29.6/drivers/char/vt_ioctl.c 2009-07-23 17:34:32.112769665 -0400 17955+++ linux-2.6.30.4/drivers/char/vt_ioctl.c 2009-07-30 11:10:49.002716445 -0400
18073@@ -96,6 +96,12 @@ do_kdsk_ioctl(int cmd, struct kbentry __ 17956@@ -96,6 +96,12 @@ do_kdsk_ioctl(int cmd, struct kbentry __
18074 case KDSKBENT: 17957 case KDSKBENT:
18075 if (!perm) 17958 if (!perm)
@@ -18097,9 +17980,9 @@ diff -urNp linux-2.6.29.6/drivers/char/vt_ioctl.c linux-2.6.29.6/drivers/char/vt
18097 q = func_table[i]; 17980 q = func_table[i];
18098 first_free = funcbufptr + (funcbufsize - funcbufleft); 17981 first_free = funcbufptr + (funcbufsize - funcbufleft);
18099 for (j = i+1; j < MAX_NR_FUNC && !func_table[j]; j++) 17982 for (j = i+1; j < MAX_NR_FUNC && !func_table[j]; j++)
18100diff -urNp linux-2.6.29.6/drivers/char/xilinx_hwicap/xilinx_hwicap.c linux-2.6.29.6/drivers/char/xilinx_hwicap/xilinx_hwicap.c 17983diff -urNp linux-2.6.30.4/drivers/char/xilinx_hwicap/xilinx_hwicap.c linux-2.6.30.4/drivers/char/xilinx_hwicap/xilinx_hwicap.c
18101--- linux-2.6.29.6/drivers/char/xilinx_hwicap/xilinx_hwicap.c 2009-07-02 19:41:20.000000000 -0400 17984--- linux-2.6.30.4/drivers/char/xilinx_hwicap/xilinx_hwicap.c 2009-07-24 17:47:51.000000000 -0400
18102+++ linux-2.6.29.6/drivers/char/xilinx_hwicap/xilinx_hwicap.c 2009-07-23 18:40:27.636398793 -0400 17985+++ linux-2.6.30.4/drivers/char/xilinx_hwicap/xilinx_hwicap.c 2009-07-30 09:48:10.008436205 -0400
18103@@ -559,7 +559,7 @@ static int hwicap_release(struct inode * 17986@@ -559,7 +559,7 @@ static int hwicap_release(struct inode *
18104 return status; 17987 return status;
18105 } 17988 }
@@ -18109,10 +17992,10 @@ diff -urNp linux-2.6.29.6/drivers/char/xilinx_hwicap/xilinx_hwicap.c linux-2.6.2
18109 .owner = THIS_MODULE, 17992 .owner = THIS_MODULE,
18110 .write = hwicap_write, 17993 .write = hwicap_write,
18111 .read = hwicap_read, 17994 .read = hwicap_read,
18112diff -urNp linux-2.6.29.6/drivers/edac/edac_core.h linux-2.6.29.6/drivers/edac/edac_core.h 17995diff -urNp linux-2.6.30.4/drivers/edac/edac_core.h linux-2.6.30.4/drivers/edac/edac_core.h
18113--- linux-2.6.29.6/drivers/edac/edac_core.h 2009-07-02 19:41:20.000000000 -0400 17996--- linux-2.6.30.4/drivers/edac/edac_core.h 2009-07-24 17:47:51.000000000 -0400
18114+++ linux-2.6.29.6/drivers/edac/edac_core.h 2009-07-23 17:34:32.113723476 -0400 17997+++ linux-2.6.30.4/drivers/edac/edac_core.h 2009-07-30 09:48:10.008436205 -0400
18115@@ -85,11 +85,11 @@ extern int edac_debug_level; 17998@@ -98,11 +98,11 @@ extern int edac_debug_level;
18116 17999
18117 #else /* !CONFIG_EDAC_DEBUG */ 18000 #else /* !CONFIG_EDAC_DEBUG */
18118 18001
@@ -18129,10 +18012,10 @@ diff -urNp linux-2.6.29.6/drivers/edac/edac_core.h linux-2.6.29.6/drivers/edac/e
18129 18012
18130 #endif /* !CONFIG_EDAC_DEBUG */ 18013 #endif /* !CONFIG_EDAC_DEBUG */
18131 18014
18132diff -urNp linux-2.6.29.6/drivers/firmware/dmi_scan.c linux-2.6.29.6/drivers/firmware/dmi_scan.c 18015diff -urNp linux-2.6.30.4/drivers/firmware/dmi_scan.c linux-2.6.30.4/drivers/firmware/dmi_scan.c
18133--- linux-2.6.29.6/drivers/firmware/dmi_scan.c 2009-07-02 19:41:20.000000000 -0400 18016--- linux-2.6.30.4/drivers/firmware/dmi_scan.c 2009-07-24 17:47:51.000000000 -0400
18134+++ linux-2.6.29.6/drivers/firmware/dmi_scan.c 2009-07-23 17:34:32.113723476 -0400 18017+++ linux-2.6.30.4/drivers/firmware/dmi_scan.c 2009-07-30 09:48:10.009412825 -0400
18135@@ -389,11 +389,6 @@ void __init dmi_scan_machine(void) 18018@@ -391,11 +391,6 @@ void __init dmi_scan_machine(void)
18136 } 18019 }
18137 } 18020 }
18138 else { 18021 else {
@@ -18144,10 +18027,10 @@ diff -urNp linux-2.6.29.6/drivers/firmware/dmi_scan.c linux-2.6.29.6/drivers/fir
18144 p = dmi_ioremap(0xF0000, 0x10000); 18027 p = dmi_ioremap(0xF0000, 0x10000);
18145 if (p == NULL) 18028 if (p == NULL)
18146 goto error; 18029 goto error;
18147diff -urNp linux-2.6.29.6/drivers/gpio/gpiolib.c linux-2.6.29.6/drivers/gpio/gpiolib.c 18030diff -urNp linux-2.6.30.4/drivers/gpio/gpiolib.c linux-2.6.30.4/drivers/gpio/gpiolib.c
18148--- linux-2.6.29.6/drivers/gpio/gpiolib.c 2009-07-02 19:41:20.000000000 -0400 18031--- linux-2.6.30.4/drivers/gpio/gpiolib.c 2009-07-24 17:47:51.000000000 -0400
18149+++ linux-2.6.29.6/drivers/gpio/gpiolib.c 2009-07-23 18:40:27.648309826 -0400 18032+++ linux-2.6.30.4/drivers/gpio/gpiolib.c 2009-07-30 09:48:10.009412825 -0400
18150@@ -1235,7 +1235,7 @@ static int gpiolib_open(struct inode *in 18033@@ -1244,7 +1244,7 @@ static int gpiolib_open(struct inode *in
18151 return single_open(file, gpiolib_show, NULL); 18034 return single_open(file, gpiolib_show, NULL);
18152 } 18035 }
18153 18036
@@ -18156,10 +18039,10 @@ diff -urNp linux-2.6.29.6/drivers/gpio/gpiolib.c linux-2.6.29.6/drivers/gpio/gpi
18156 .open = gpiolib_open, 18039 .open = gpiolib_open,
18157 .read = seq_read, 18040 .read = seq_read,
18158 .llseek = seq_lseek, 18041 .llseek = seq_lseek,
18159diff -urNp linux-2.6.29.6/drivers/gpu/drm/drm_drv.c linux-2.6.29.6/drivers/gpu/drm/drm_drv.c 18042diff -urNp linux-2.6.30.4/drivers/gpu/drm/drm_drv.c linux-2.6.30.4/drivers/gpu/drm/drm_drv.c
18160--- linux-2.6.29.6/drivers/gpu/drm/drm_drv.c 2009-07-02 19:41:20.000000000 -0400 18043--- linux-2.6.30.4/drivers/gpu/drm/drm_drv.c 2009-07-24 17:47:51.000000000 -0400
18161+++ linux-2.6.29.6/drivers/gpu/drm/drm_drv.c 2009-07-23 17:34:32.113723476 -0400 18044+++ linux-2.6.30.4/drivers/gpu/drm/drm_drv.c 2009-07-30 09:48:10.010417819 -0400
18162@@ -461,7 +461,7 @@ int drm_ioctl(struct inode *inode, struc 18045@@ -425,7 +425,7 @@ int drm_ioctl(struct inode *inode, struc
18163 char *kdata = NULL; 18046 char *kdata = NULL;
18164 18047
18165 atomic_inc(&dev->ioctl_count); 18048 atomic_inc(&dev->ioctl_count);
@@ -18168,9 +18051,9 @@ diff -urNp linux-2.6.29.6/drivers/gpu/drm/drm_drv.c linux-2.6.29.6/drivers/gpu/d
18168 ++file_priv->ioctl_count; 18051 ++file_priv->ioctl_count;
18169 18052
18170 DRM_DEBUG("pid=%d, cmd=0x%02x, nr=0x%02x, dev 0x%lx, auth=%d\n", 18053 DRM_DEBUG("pid=%d, cmd=0x%02x, nr=0x%02x, dev 0x%lx, auth=%d\n",
18171diff -urNp linux-2.6.29.6/drivers/gpu/drm/drm_fops.c linux-2.6.29.6/drivers/gpu/drm/drm_fops.c 18054diff -urNp linux-2.6.30.4/drivers/gpu/drm/drm_fops.c linux-2.6.30.4/drivers/gpu/drm/drm_fops.c
18172--- linux-2.6.29.6/drivers/gpu/drm/drm_fops.c 2009-07-02 19:41:20.000000000 -0400 18055--- linux-2.6.30.4/drivers/gpu/drm/drm_fops.c 2009-07-24 17:47:51.000000000 -0400
18173+++ linux-2.6.29.6/drivers/gpu/drm/drm_fops.c 2009-07-23 17:34:32.113723476 -0400 18056+++ linux-2.6.30.4/drivers/gpu/drm/drm_fops.c 2009-07-30 09:48:10.010417819 -0400
18174@@ -130,9 +130,9 @@ int drm_open(struct inode *inode, struct 18057@@ -130,9 +130,9 @@ int drm_open(struct inode *inode, struct
18175 18058
18176 retcode = drm_open_helper(inode, filp, dev); 18059 retcode = drm_open_helper(inode, filp, dev);
@@ -18183,7 +18066,7 @@ diff -urNp linux-2.6.29.6/drivers/gpu/drm/drm_fops.c linux-2.6.29.6/drivers/gpu/
18183 spin_unlock(&dev->count_lock); 18066 spin_unlock(&dev->count_lock);
18184 retcode = drm_setup(dev); 18067 retcode = drm_setup(dev);
18185 goto out; 18068 goto out;
18186@@ -436,7 +436,7 @@ int drm_release(struct inode *inode, str 18069@@ -433,7 +433,7 @@ int drm_release(struct inode *inode, str
18187 18070
18188 lock_kernel(); 18071 lock_kernel();
18189 18072
@@ -18192,7 +18075,7 @@ diff -urNp linux-2.6.29.6/drivers/gpu/drm/drm_fops.c linux-2.6.29.6/drivers/gpu/
18192 18075
18193 if (dev->driver->preclose) 18076 if (dev->driver->preclose)
18194 dev->driver->preclose(dev, file_priv); 18077 dev->driver->preclose(dev, file_priv);
18195@@ -448,7 +448,7 @@ int drm_release(struct inode *inode, str 18078@@ -445,7 +445,7 @@ int drm_release(struct inode *inode, str
18196 DRM_DEBUG("pid = %d, device = 0x%lx, open_count = %d\n", 18079 DRM_DEBUG("pid = %d, device = 0x%lx, open_count = %d\n",
18197 task_pid_nr(current), 18080 task_pid_nr(current),
18198 (long)old_encode_dev(file_priv->minor->device), 18081 (long)old_encode_dev(file_priv->minor->device),
@@ -18201,7 +18084,7 @@ diff -urNp linux-2.6.29.6/drivers/gpu/drm/drm_fops.c linux-2.6.29.6/drivers/gpu/
18201 18084
18202 /* if the master has gone away we can't do anything with the lock */ 18085 /* if the master has gone away we can't do anything with the lock */
18203 if (file_priv->minor->master) 18086 if (file_priv->minor->master)
18204@@ -525,9 +525,9 @@ int drm_release(struct inode *inode, str 18087@@ -522,9 +522,9 @@ int drm_release(struct inode *inode, str
18205 * End inline drm_release 18088 * End inline drm_release
18206 */ 18089 */
18207 18090
@@ -18213,9 +18096,9 @@ diff -urNp linux-2.6.29.6/drivers/gpu/drm/drm_fops.c linux-2.6.29.6/drivers/gpu/
18213 if (atomic_read(&dev->ioctl_count)) { 18096 if (atomic_read(&dev->ioctl_count)) {
18214 DRM_ERROR("Device busy: %d\n", 18097 DRM_ERROR("Device busy: %d\n",
18215 atomic_read(&dev->ioctl_count)); 18098 atomic_read(&dev->ioctl_count));
18216diff -urNp linux-2.6.29.6/drivers/gpu/drm/drm_lock.c linux-2.6.29.6/drivers/gpu/drm/drm_lock.c 18099diff -urNp linux-2.6.30.4/drivers/gpu/drm/drm_lock.c linux-2.6.30.4/drivers/gpu/drm/drm_lock.c
18217--- linux-2.6.29.6/drivers/gpu/drm/drm_lock.c 2009-07-02 19:41:20.000000000 -0400 18100--- linux-2.6.30.4/drivers/gpu/drm/drm_lock.c 2009-07-24 17:47:51.000000000 -0400
18218+++ linux-2.6.29.6/drivers/gpu/drm/drm_lock.c 2009-07-23 17:34:32.114929924 -0400 18101+++ linux-2.6.30.4/drivers/gpu/drm/drm_lock.c 2009-07-30 09:48:10.010417819 -0400
18219@@ -87,7 +87,7 @@ int drm_lock(struct drm_device *dev, voi 18102@@ -87,7 +87,7 @@ int drm_lock(struct drm_device *dev, voi
18220 if (drm_lock_take(&master->lock, lock->context)) { 18103 if (drm_lock_take(&master->lock, lock->context)) {
18221 master->lock.file_priv = file_priv; 18104 master->lock.file_priv = file_priv;
@@ -18234,10 +18117,10 @@ diff -urNp linux-2.6.29.6/drivers/gpu/drm/drm_lock.c linux-2.6.29.6/drivers/gpu/
18234 18117
18235 /* kernel_context_switch isn't used by any of the x86 drm 18118 /* kernel_context_switch isn't used by any of the x86 drm
18236 * modules but is required by the Sparc driver. 18119 * modules but is required by the Sparc driver.
18237diff -urNp linux-2.6.29.6/drivers/gpu/drm/drm_vm.c linux-2.6.29.6/drivers/gpu/drm/drm_vm.c 18120diff -urNp linux-2.6.30.4/drivers/gpu/drm/drm_vm.c linux-2.6.30.4/drivers/gpu/drm/drm_vm.c
18238--- linux-2.6.29.6/drivers/gpu/drm/drm_vm.c 2009-07-02 19:41:20.000000000 -0400 18121--- linux-2.6.30.4/drivers/gpu/drm/drm_vm.c 2009-07-24 17:47:51.000000000 -0400
18239+++ linux-2.6.29.6/drivers/gpu/drm/drm_vm.c 2009-07-23 18:40:27.661305427 -0400 18122+++ linux-2.6.30.4/drivers/gpu/drm/drm_vm.c 2009-07-30 09:48:10.011410038 -0400
18240@@ -367,28 +367,28 @@ static int drm_vm_sg_fault(struct vm_are 18123@@ -369,28 +369,28 @@ static int drm_vm_sg_fault(struct vm_are
18241 } 18124 }
18242 18125
18243 /** AGP virtual memory operations */ 18126 /** AGP virtual memory operations */
@@ -18270,9 +18153,9 @@ diff -urNp linux-2.6.29.6/drivers/gpu/drm/drm_vm.c linux-2.6.29.6/drivers/gpu/dr
18270 .fault = drm_vm_sg_fault, 18153 .fault = drm_vm_sg_fault,
18271 .open = drm_vm_open, 18154 .open = drm_vm_open,
18272 .close = drm_vm_close, 18155 .close = drm_vm_close,
18273diff -urNp linux-2.6.29.6/drivers/gpu/drm/i810/i810_dma.c linux-2.6.29.6/drivers/gpu/drm/i810/i810_dma.c 18156diff -urNp linux-2.6.30.4/drivers/gpu/drm/i810/i810_dma.c linux-2.6.30.4/drivers/gpu/drm/i810/i810_dma.c
18274--- linux-2.6.29.6/drivers/gpu/drm/i810/i810_dma.c 2009-07-02 19:41:20.000000000 -0400 18157--- linux-2.6.30.4/drivers/gpu/drm/i810/i810_dma.c 2009-07-24 17:47:51.000000000 -0400
18275+++ linux-2.6.29.6/drivers/gpu/drm/i810/i810_dma.c 2009-07-23 17:34:32.114929924 -0400 18158+++ linux-2.6.30.4/drivers/gpu/drm/i810/i810_dma.c 2009-07-30 09:48:10.011410038 -0400
18276@@ -954,8 +954,8 @@ static int i810_dma_vertex(struct drm_de 18159@@ -954,8 +954,8 @@ static int i810_dma_vertex(struct drm_de
18277 dma->buflist[vertex->idx], 18160 dma->buflist[vertex->idx],
18278 vertex->discard, vertex->used); 18161 vertex->discard, vertex->used);
@@ -18295,11 +18178,11 @@ diff -urNp linux-2.6.29.6/drivers/gpu/drm/i810/i810_dma.c linux-2.6.29.6/drivers
18295 sarea_priv->last_enqueue = dev_priv->counter - 1; 18178 sarea_priv->last_enqueue = dev_priv->counter - 1;
18296 sarea_priv->last_dispatch = (int)hw_status[5]; 18179 sarea_priv->last_dispatch = (int)hw_status[5];
18297 18180
18298diff -urNp linux-2.6.29.6/drivers/gpu/drm/i915/i915_drv.c linux-2.6.29.6/drivers/gpu/drm/i915/i915_drv.c 18181diff -urNp linux-2.6.30.4/drivers/gpu/drm/i915/i915_drv.c linux-2.6.30.4/drivers/gpu/drm/i915/i915_drv.c
18299--- linux-2.6.29.6/drivers/gpu/drm/i915/i915_drv.c 2009-07-02 19:41:20.000000000 -0400 18182--- linux-2.6.30.4/drivers/gpu/drm/i915/i915_drv.c 2009-07-24 17:47:51.000000000 -0400
18300+++ linux-2.6.29.6/drivers/gpu/drm/i915/i915_drv.c 2009-07-23 18:40:27.674490572 -0400 18183+++ linux-2.6.30.4/drivers/gpu/drm/i915/i915_drv.c 2009-07-30 12:07:09.579971370 -0400
18301@@ -117,7 +117,7 @@ static int i915_resume(struct drm_device 18184@@ -149,7 +149,7 @@ i915_pci_resume(struct pci_dev *pdev)
18302 return ret; 18185 return i915_resume(dev);
18303 } 18186 }
18304 18187
18305-static struct vm_operations_struct i915_gem_vm_ops = { 18188-static struct vm_operations_struct i915_gem_vm_ops = {
@@ -18307,10 +18190,10 @@ diff -urNp linux-2.6.29.6/drivers/gpu/drm/i915/i915_drv.c linux-2.6.29.6/drivers
18307 .fault = i915_gem_fault, 18190 .fault = i915_gem_fault,
18308 .open = drm_gem_vm_open, 18191 .open = drm_gem_vm_open,
18309 .close = drm_gem_vm_close, 18192 .close = drm_gem_vm_close,
18310diff -urNp linux-2.6.29.6/drivers/hwmon/fschmd.c linux-2.6.29.6/drivers/hwmon/fschmd.c 18193diff -urNp linux-2.6.30.4/drivers/hwmon/fschmd.c linux-2.6.30.4/drivers/hwmon/fschmd.c
18311--- linux-2.6.29.6/drivers/hwmon/fschmd.c 2009-07-02 19:41:20.000000000 -0400 18194--- linux-2.6.30.4/drivers/hwmon/fschmd.c 2009-07-24 17:47:51.000000000 -0400
18312+++ linux-2.6.29.6/drivers/hwmon/fschmd.c 2009-07-23 18:40:27.674490572 -0400 18195+++ linux-2.6.30.4/drivers/hwmon/fschmd.c 2009-07-30 09:48:10.011410038 -0400
18313@@ -840,7 +840,7 @@ static int watchdog_ioctl(struct inode * 18196@@ -915,7 +915,7 @@ static int watchdog_ioctl(struct inode *
18314 return ret; 18197 return ret;
18315 } 18198 }
18316 18199
@@ -18319,9 +18202,9 @@ diff -urNp linux-2.6.29.6/drivers/hwmon/fschmd.c linux-2.6.29.6/drivers/hwmon/fs
18319 .owner = THIS_MODULE, 18202 .owner = THIS_MODULE,
18320 .llseek = no_llseek, 18203 .llseek = no_llseek,
18321 .open = watchdog_open, 18204 .open = watchdog_open,
18322diff -urNp linux-2.6.29.6/drivers/hwmon/fscpos.c linux-2.6.29.6/drivers/hwmon/fscpos.c 18205diff -urNp linux-2.6.30.4/drivers/hwmon/fscpos.c linux-2.6.30.4/drivers/hwmon/fscpos.c
18323--- linux-2.6.29.6/drivers/hwmon/fscpos.c 2009-07-02 19:41:20.000000000 -0400 18206--- linux-2.6.30.4/drivers/hwmon/fscpos.c 2009-07-24 17:47:51.000000000 -0400
18324+++ linux-2.6.29.6/drivers/hwmon/fscpos.c 2009-07-23 17:34:32.115850370 -0400 18207+++ linux-2.6.30.4/drivers/hwmon/fscpos.c 2009-07-30 09:48:10.015465337 -0400
18325@@ -240,7 +240,6 @@ static ssize_t set_pwm(struct i2c_client 18208@@ -240,7 +240,6 @@ static ssize_t set_pwm(struct i2c_client
18326 unsigned long v = simple_strtoul(buf, NULL, 10); 18209 unsigned long v = simple_strtoul(buf, NULL, 10);
18327 18210
@@ -18330,9 +18213,9 @@ diff -urNp linux-2.6.29.6/drivers/hwmon/fscpos.c linux-2.6.29.6/drivers/hwmon/fs
18330 if (v > 255) v = 255; 18213 if (v > 255) v = 255;
18331 18214
18332 mutex_lock(&data->update_lock); 18215 mutex_lock(&data->update_lock);
18333diff -urNp linux-2.6.29.6/drivers/hwmon/k8temp.c linux-2.6.29.6/drivers/hwmon/k8temp.c 18216diff -urNp linux-2.6.30.4/drivers/hwmon/k8temp.c linux-2.6.30.4/drivers/hwmon/k8temp.c
18334--- linux-2.6.29.6/drivers/hwmon/k8temp.c 2009-07-02 19:41:20.000000000 -0400 18217--- linux-2.6.30.4/drivers/hwmon/k8temp.c 2009-07-24 17:47:51.000000000 -0400
18335+++ linux-2.6.29.6/drivers/hwmon/k8temp.c 2009-07-23 17:34:32.115850370 -0400 18218+++ linux-2.6.30.4/drivers/hwmon/k8temp.c 2009-07-30 09:48:10.016410845 -0400
18336@@ -138,7 +138,7 @@ static DEVICE_ATTR(name, S_IRUGO, show_n 18219@@ -138,7 +138,7 @@ static DEVICE_ATTR(name, S_IRUGO, show_n
18337 18220
18338 static struct pci_device_id k8temp_ids[] = { 18221 static struct pci_device_id k8temp_ids[] = {
@@ -18342,9 +18225,9 @@ diff -urNp linux-2.6.29.6/drivers/hwmon/k8temp.c linux-2.6.29.6/drivers/hwmon/k8
18342 }; 18225 };
18343 18226
18344 MODULE_DEVICE_TABLE(pci, k8temp_ids); 18227 MODULE_DEVICE_TABLE(pci, k8temp_ids);
18345diff -urNp linux-2.6.29.6/drivers/hwmon/sis5595.c linux-2.6.29.6/drivers/hwmon/sis5595.c 18228diff -urNp linux-2.6.30.4/drivers/hwmon/sis5595.c linux-2.6.30.4/drivers/hwmon/sis5595.c
18346--- linux-2.6.29.6/drivers/hwmon/sis5595.c 2009-07-02 19:41:20.000000000 -0400 18229--- linux-2.6.30.4/drivers/hwmon/sis5595.c 2009-07-24 17:47:51.000000000 -0400
18347+++ linux-2.6.29.6/drivers/hwmon/sis5595.c 2009-07-23 17:34:32.115850370 -0400 18230+++ linux-2.6.30.4/drivers/hwmon/sis5595.c 2009-07-30 09:48:10.016410845 -0400
18348@@ -699,7 +699,7 @@ static struct sis5595_data *sis5595_upda 18231@@ -699,7 +699,7 @@ static struct sis5595_data *sis5595_upda
18349 18232
18350 static struct pci_device_id sis5595_pci_ids[] = { 18233 static struct pci_device_id sis5595_pci_ids[] = {
@@ -18354,9 +18237,9 @@ diff -urNp linux-2.6.29.6/drivers/hwmon/sis5595.c linux-2.6.29.6/drivers/hwmon/s
18354 }; 18237 };
18355 18238
18356 MODULE_DEVICE_TABLE(pci, sis5595_pci_ids); 18239 MODULE_DEVICE_TABLE(pci, sis5595_pci_ids);
18357diff -urNp linux-2.6.29.6/drivers/hwmon/via686a.c linux-2.6.29.6/drivers/hwmon/via686a.c 18240diff -urNp linux-2.6.30.4/drivers/hwmon/via686a.c linux-2.6.30.4/drivers/hwmon/via686a.c
18358--- linux-2.6.29.6/drivers/hwmon/via686a.c 2009-07-02 19:41:20.000000000 -0400 18241--- linux-2.6.30.4/drivers/hwmon/via686a.c 2009-07-24 17:47:51.000000000 -0400
18359+++ linux-2.6.29.6/drivers/hwmon/via686a.c 2009-07-23 17:34:32.116869808 -0400 18242+++ linux-2.6.30.4/drivers/hwmon/via686a.c 2009-07-30 09:48:10.016410845 -0400
18360@@ -769,7 +769,7 @@ static struct via686a_data *via686a_upda 18243@@ -769,7 +769,7 @@ static struct via686a_data *via686a_upda
18361 18244
18362 static struct pci_device_id via686a_pci_ids[] = { 18245 static struct pci_device_id via686a_pci_ids[] = {
@@ -18366,9 +18249,9 @@ diff -urNp linux-2.6.29.6/drivers/hwmon/via686a.c linux-2.6.29.6/drivers/hwmon/v
18366 }; 18249 };
18367 18250
18368 MODULE_DEVICE_TABLE(pci, via686a_pci_ids); 18251 MODULE_DEVICE_TABLE(pci, via686a_pci_ids);
18369diff -urNp linux-2.6.29.6/drivers/hwmon/vt8231.c linux-2.6.29.6/drivers/hwmon/vt8231.c 18252diff -urNp linux-2.6.30.4/drivers/hwmon/vt8231.c linux-2.6.30.4/drivers/hwmon/vt8231.c
18370--- linux-2.6.29.6/drivers/hwmon/vt8231.c 2009-07-02 19:41:20.000000000 -0400 18253--- linux-2.6.30.4/drivers/hwmon/vt8231.c 2009-07-24 17:47:51.000000000 -0400
18371+++ linux-2.6.29.6/drivers/hwmon/vt8231.c 2009-07-23 17:34:32.116869808 -0400 18254+++ linux-2.6.30.4/drivers/hwmon/vt8231.c 2009-07-30 09:48:10.017409539 -0400
18372@@ -699,7 +699,7 @@ static struct platform_driver vt8231_dri 18255@@ -699,7 +699,7 @@ static struct platform_driver vt8231_dri
18373 18256
18374 static struct pci_device_id vt8231_pci_ids[] = { 18257 static struct pci_device_id vt8231_pci_ids[] = {
@@ -18378,9 +18261,9 @@ diff -urNp linux-2.6.29.6/drivers/hwmon/vt8231.c linux-2.6.29.6/drivers/hwmon/vt
18378 }; 18261 };
18379 18262
18380 MODULE_DEVICE_TABLE(pci, vt8231_pci_ids); 18263 MODULE_DEVICE_TABLE(pci, vt8231_pci_ids);
18381diff -urNp linux-2.6.29.6/drivers/hwmon/w83791d.c linux-2.6.29.6/drivers/hwmon/w83791d.c 18264diff -urNp linux-2.6.30.4/drivers/hwmon/w83791d.c linux-2.6.30.4/drivers/hwmon/w83791d.c
18382--- linux-2.6.29.6/drivers/hwmon/w83791d.c 2009-07-02 19:41:20.000000000 -0400 18265--- linux-2.6.30.4/drivers/hwmon/w83791d.c 2009-07-24 17:47:51.000000000 -0400
18383+++ linux-2.6.29.6/drivers/hwmon/w83791d.c 2009-07-23 17:34:32.117858467 -0400 18266+++ linux-2.6.30.4/drivers/hwmon/w83791d.c 2009-07-30 09:48:10.017409539 -0400
18384@@ -330,8 +330,8 @@ static int w83791d_detect(struct i2c_cli 18267@@ -330,8 +330,8 @@ static int w83791d_detect(struct i2c_cli
18385 struct i2c_board_info *info); 18268 struct i2c_board_info *info);
18386 static int w83791d_remove(struct i2c_client *client); 18269 static int w83791d_remove(struct i2c_client *client);
@@ -18392,10 +18275,10 @@ diff -urNp linux-2.6.29.6/drivers/hwmon/w83791d.c linux-2.6.29.6/drivers/hwmon/w
18392 static struct w83791d_data *w83791d_update_device(struct device *dev); 18275 static struct w83791d_data *w83791d_update_device(struct device *dev);
18393 18276
18394 #ifdef DEBUG 18277 #ifdef DEBUG
18395diff -urNp linux-2.6.29.6/drivers/i2c/busses/i2c-i801.c linux-2.6.29.6/drivers/i2c/busses/i2c-i801.c 18278diff -urNp linux-2.6.30.4/drivers/i2c/busses/i2c-i801.c linux-2.6.30.4/drivers/i2c/busses/i2c-i801.c
18396--- linux-2.6.29.6/drivers/i2c/busses/i2c-i801.c 2009-07-02 19:41:20.000000000 -0400 18279--- linux-2.6.30.4/drivers/i2c/busses/i2c-i801.c 2009-07-24 17:47:51.000000000 -0400
18397+++ linux-2.6.29.6/drivers/i2c/busses/i2c-i801.c 2009-07-23 17:34:32.117858467 -0400 18280+++ linux-2.6.30.4/drivers/i2c/busses/i2c-i801.c 2009-07-30 09:48:10.018424106 -0400
18398@@ -577,7 +577,7 @@ static struct pci_device_id i801_ids[] = 18281@@ -578,7 +578,7 @@ static struct pci_device_id i801_ids[] =
18399 { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_ICH10_4) }, 18282 { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_ICH10_4) },
18400 { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_ICH10_5) }, 18283 { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_ICH10_5) },
18401 { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_PCH_SMBUS) }, 18284 { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_PCH_SMBUS) },
@@ -18404,9 +18287,9 @@ diff -urNp linux-2.6.29.6/drivers/i2c/busses/i2c-i801.c linux-2.6.29.6/drivers/i
18404 }; 18287 };
18405 18288
18406 MODULE_DEVICE_TABLE (pci, i801_ids); 18289 MODULE_DEVICE_TABLE (pci, i801_ids);
18407diff -urNp linux-2.6.29.6/drivers/i2c/busses/i2c-piix4.c linux-2.6.29.6/drivers/i2c/busses/i2c-piix4.c 18290diff -urNp linux-2.6.30.4/drivers/i2c/busses/i2c-piix4.c linux-2.6.30.4/drivers/i2c/busses/i2c-piix4.c
18408--- linux-2.6.29.6/drivers/i2c/busses/i2c-piix4.c 2009-07-02 19:41:20.000000000 -0400 18291--- linux-2.6.30.4/drivers/i2c/busses/i2c-piix4.c 2009-07-24 17:47:51.000000000 -0400
18409+++ linux-2.6.29.6/drivers/i2c/busses/i2c-piix4.c 2009-07-23 17:34:32.118755337 -0400 18292+++ linux-2.6.30.4/drivers/i2c/busses/i2c-piix4.c 2009-07-30 09:48:10.018424106 -0400
18410@@ -123,7 +123,7 @@ static struct dmi_system_id __devinitdat 18293@@ -123,7 +123,7 @@ static struct dmi_system_id __devinitdat
18411 .ident = "IBM", 18294 .ident = "IBM",
18412 .matches = { DMI_MATCH(DMI_SYS_VENDOR, "IBM"), }, 18295 .matches = { DMI_MATCH(DMI_SYS_VENDOR, "IBM"), },
@@ -18416,18 +18299,18 @@ diff -urNp linux-2.6.29.6/drivers/i2c/busses/i2c-piix4.c linux-2.6.29.6/drivers/
18416 }; 18299 };
18417 18300
18418 static int __devinit piix4_setup(struct pci_dev *PIIX4_dev, 18301 static int __devinit piix4_setup(struct pci_dev *PIIX4_dev,
18419@@ -423,7 +423,7 @@ static struct pci_device_id piix4_ids[] 18302@@ -489,7 +489,7 @@ static struct pci_device_id piix4_ids[]
18420 PCI_DEVICE_ID_SERVERWORKS_CSB6) },
18421 { PCI_DEVICE(PCI_VENDOR_ID_SERVERWORKS,
18422 PCI_DEVICE_ID_SERVERWORKS_HT1000SB) }, 18303 PCI_DEVICE_ID_SERVERWORKS_HT1000SB) },
18304 { PCI_DEVICE(PCI_VENDOR_ID_SERVERWORKS,
18305 PCI_DEVICE_ID_SERVERWORKS_HT1100LD) },
18423- { 0, } 18306- { 0, }
18424+ { 0, 0, 0, 0, 0, 0, 0 } 18307+ { 0, 0, 0, 0, 0, 0, 0 }
18425 }; 18308 };
18426 18309
18427 MODULE_DEVICE_TABLE (pci, piix4_ids); 18310 MODULE_DEVICE_TABLE (pci, piix4_ids);
18428diff -urNp linux-2.6.29.6/drivers/i2c/busses/i2c-sis630.c linux-2.6.29.6/drivers/i2c/busses/i2c-sis630.c 18311diff -urNp linux-2.6.30.4/drivers/i2c/busses/i2c-sis630.c linux-2.6.30.4/drivers/i2c/busses/i2c-sis630.c
18429--- linux-2.6.29.6/drivers/i2c/busses/i2c-sis630.c 2009-07-02 19:41:20.000000000 -0400 18312--- linux-2.6.30.4/drivers/i2c/busses/i2c-sis630.c 2009-07-24 17:47:51.000000000 -0400
18430+++ linux-2.6.29.6/drivers/i2c/busses/i2c-sis630.c 2009-07-23 17:34:32.118755337 -0400 18313+++ linux-2.6.30.4/drivers/i2c/busses/i2c-sis630.c 2009-07-30 09:48:10.018424106 -0400
18431@@ -471,7 +471,7 @@ static struct i2c_adapter sis630_adapter 18314@@ -471,7 +471,7 @@ static struct i2c_adapter sis630_adapter
18432 static struct pci_device_id sis630_ids[] __devinitdata = { 18315 static struct pci_device_id sis630_ids[] __devinitdata = {
18433 { PCI_DEVICE(PCI_VENDOR_ID_SI, PCI_DEVICE_ID_SI_503) }, 18316 { PCI_DEVICE(PCI_VENDOR_ID_SI, PCI_DEVICE_ID_SI_503) },
@@ -18437,9 +18320,9 @@ diff -urNp linux-2.6.29.6/drivers/i2c/busses/i2c-sis630.c linux-2.6.29.6/drivers
18437 }; 18320 };
18438 18321
18439 MODULE_DEVICE_TABLE (pci, sis630_ids); 18322 MODULE_DEVICE_TABLE (pci, sis630_ids);
18440diff -urNp linux-2.6.29.6/drivers/i2c/busses/i2c-sis96x.c linux-2.6.29.6/drivers/i2c/busses/i2c-sis96x.c 18323diff -urNp linux-2.6.30.4/drivers/i2c/busses/i2c-sis96x.c linux-2.6.30.4/drivers/i2c/busses/i2c-sis96x.c
18441--- linux-2.6.29.6/drivers/i2c/busses/i2c-sis96x.c 2009-07-02 19:41:20.000000000 -0400 18324--- linux-2.6.30.4/drivers/i2c/busses/i2c-sis96x.c 2009-07-24 17:47:51.000000000 -0400
18442+++ linux-2.6.29.6/drivers/i2c/busses/i2c-sis96x.c 2009-07-23 17:34:32.118755337 -0400 18325+++ linux-2.6.30.4/drivers/i2c/busses/i2c-sis96x.c 2009-07-30 09:48:10.018424106 -0400
18443@@ -247,7 +247,7 @@ static struct i2c_adapter sis96x_adapter 18326@@ -247,7 +247,7 @@ static struct i2c_adapter sis96x_adapter
18444 18327
18445 static struct pci_device_id sis96x_ids[] = { 18328 static struct pci_device_id sis96x_ids[] = {
@@ -18449,9 +18332,9 @@ diff -urNp linux-2.6.29.6/drivers/i2c/busses/i2c-sis96x.c linux-2.6.29.6/drivers
18449 }; 18332 };
18450 18333
18451 MODULE_DEVICE_TABLE (pci, sis96x_ids); 18334 MODULE_DEVICE_TABLE (pci, sis96x_ids);
18452diff -urNp linux-2.6.29.6/drivers/ieee1394/dma.c linux-2.6.29.6/drivers/ieee1394/dma.c 18335diff -urNp linux-2.6.30.4/drivers/ieee1394/dma.c linux-2.6.30.4/drivers/ieee1394/dma.c
18453--- linux-2.6.29.6/drivers/ieee1394/dma.c 2009-07-02 19:41:20.000000000 -0400 18336--- linux-2.6.30.4/drivers/ieee1394/dma.c 2009-07-24 17:47:51.000000000 -0400
18454+++ linux-2.6.29.6/drivers/ieee1394/dma.c 2009-07-23 18:40:27.685680148 -0400 18337+++ linux-2.6.30.4/drivers/ieee1394/dma.c 2009-07-30 09:48:10.018424106 -0400
18455@@ -247,7 +247,7 @@ static int dma_region_pagefault(struct v 18338@@ -247,7 +247,7 @@ static int dma_region_pagefault(struct v
18456 return 0; 18339 return 0;
18457 } 18340 }
@@ -18461,9 +18344,9 @@ diff -urNp linux-2.6.29.6/drivers/ieee1394/dma.c linux-2.6.29.6/drivers/ieee1394
18461 .fault = dma_region_pagefault, 18344 .fault = dma_region_pagefault,
18462 }; 18345 };
18463 18346
18464diff -urNp linux-2.6.29.6/drivers/ieee1394/dv1394.c linux-2.6.29.6/drivers/ieee1394/dv1394.c 18347diff -urNp linux-2.6.30.4/drivers/ieee1394/dv1394.c linux-2.6.30.4/drivers/ieee1394/dv1394.c
18465--- linux-2.6.29.6/drivers/ieee1394/dv1394.c 2009-07-02 19:41:20.000000000 -0400 18348--- linux-2.6.30.4/drivers/ieee1394/dv1394.c 2009-07-24 17:47:51.000000000 -0400
18466+++ linux-2.6.29.6/drivers/ieee1394/dv1394.c 2009-07-23 17:34:32.119753604 -0400 18349+++ linux-2.6.30.4/drivers/ieee1394/dv1394.c 2009-07-30 09:48:10.020336753 -0400
18467@@ -739,7 +739,7 @@ static void frame_prepare(struct video_c 18350@@ -739,7 +739,7 @@ static void frame_prepare(struct video_c
18468 based upon DIF section and sequence 18351 based upon DIF section and sequence
18469 */ 18352 */
@@ -18473,7 +18356,7 @@ diff -urNp linux-2.6.29.6/drivers/ieee1394/dv1394.c linux-2.6.29.6/drivers/ieee1
18473 frame_put_packet (struct frame *f, struct packet *p) 18356 frame_put_packet (struct frame *f, struct packet *p)
18474 { 18357 {
18475 int section_type = p->data[0] >> 5; /* section type is in bits 5 - 7 */ 18358 int section_type = p->data[0] >> 5; /* section type is in bits 5 - 7 */
18476@@ -2181,7 +2181,7 @@ static struct ieee1394_device_id dv1394_ 18359@@ -2177,7 +2177,7 @@ static const struct ieee1394_device_id d
18477 .specifier_id = AVC_UNIT_SPEC_ID_ENTRY & 0xffffff, 18360 .specifier_id = AVC_UNIT_SPEC_ID_ENTRY & 0xffffff,
18478 .version = AVC_SW_VERSION_ENTRY & 0xffffff 18361 .version = AVC_SW_VERSION_ENTRY & 0xffffff
18479 }, 18362 },
@@ -18482,10 +18365,10 @@ diff -urNp linux-2.6.29.6/drivers/ieee1394/dv1394.c linux-2.6.29.6/drivers/ieee1
18482 }; 18365 };
18483 18366
18484 MODULE_DEVICE_TABLE(ieee1394, dv1394_id_table); 18367 MODULE_DEVICE_TABLE(ieee1394, dv1394_id_table);
18485diff -urNp linux-2.6.29.6/drivers/ieee1394/eth1394.c linux-2.6.29.6/drivers/ieee1394/eth1394.c 18368diff -urNp linux-2.6.30.4/drivers/ieee1394/eth1394.c linux-2.6.30.4/drivers/ieee1394/eth1394.c
18486--- linux-2.6.29.6/drivers/ieee1394/eth1394.c 2009-07-02 19:41:20.000000000 -0400 18369--- linux-2.6.30.4/drivers/ieee1394/eth1394.c 2009-07-24 17:47:51.000000000 -0400
18487+++ linux-2.6.29.6/drivers/ieee1394/eth1394.c 2009-07-23 17:34:32.119753604 -0400 18370+++ linux-2.6.30.4/drivers/ieee1394/eth1394.c 2009-07-30 09:48:10.020336753 -0400
18488@@ -445,7 +445,7 @@ static struct ieee1394_device_id eth1394 18371@@ -445,7 +445,7 @@ static const struct ieee1394_device_id e
18489 .specifier_id = ETHER1394_GASP_SPECIFIER_ID, 18372 .specifier_id = ETHER1394_GASP_SPECIFIER_ID,
18490 .version = ETHER1394_GASP_VERSION, 18373 .version = ETHER1394_GASP_VERSION,
18491 }, 18374 },
@@ -18494,9 +18377,9 @@ diff -urNp linux-2.6.29.6/drivers/ieee1394/eth1394.c linux-2.6.29.6/drivers/ieee
18494 }; 18377 };
18495 18378
18496 MODULE_DEVICE_TABLE(ieee1394, eth1394_id_table); 18379 MODULE_DEVICE_TABLE(ieee1394, eth1394_id_table);
18497diff -urNp linux-2.6.29.6/drivers/ieee1394/hosts.c linux-2.6.29.6/drivers/ieee1394/hosts.c 18380diff -urNp linux-2.6.30.4/drivers/ieee1394/hosts.c linux-2.6.30.4/drivers/ieee1394/hosts.c
18498--- linux-2.6.29.6/drivers/ieee1394/hosts.c 2009-07-02 19:41:20.000000000 -0400 18381--- linux-2.6.30.4/drivers/ieee1394/hosts.c 2009-07-24 17:47:51.000000000 -0400
18499+++ linux-2.6.29.6/drivers/ieee1394/hosts.c 2009-07-23 17:34:32.120767858 -0400 18382+++ linux-2.6.30.4/drivers/ieee1394/hosts.c 2009-07-30 09:48:10.020336753 -0400
18500@@ -78,6 +78,7 @@ static int dummy_isoctl(struct hpsb_iso 18383@@ -78,6 +78,7 @@ static int dummy_isoctl(struct hpsb_iso
18501 } 18384 }
18502 18385
@@ -18505,9 +18388,9 @@ diff -urNp linux-2.6.29.6/drivers/ieee1394/hosts.c linux-2.6.29.6/drivers/ieee13
18505 .transmit_packet = dummy_transmit_packet, 18388 .transmit_packet = dummy_transmit_packet,
18506 .devctl = dummy_devctl, 18389 .devctl = dummy_devctl,
18507 .isoctl = dummy_isoctl 18390 .isoctl = dummy_isoctl
18508diff -urNp linux-2.6.29.6/drivers/ieee1394/ohci1394.c linux-2.6.29.6/drivers/ieee1394/ohci1394.c 18391diff -urNp linux-2.6.30.4/drivers/ieee1394/ohci1394.c linux-2.6.30.4/drivers/ieee1394/ohci1394.c
18509--- linux-2.6.29.6/drivers/ieee1394/ohci1394.c 2009-07-02 19:41:20.000000000 -0400 18392--- linux-2.6.30.4/drivers/ieee1394/ohci1394.c 2009-07-24 17:47:51.000000000 -0400
18510+++ linux-2.6.29.6/drivers/ieee1394/ohci1394.c 2009-07-23 17:34:32.120767858 -0400 18393+++ linux-2.6.30.4/drivers/ieee1394/ohci1394.c 2009-07-30 09:48:10.020862787 -0400
18511@@ -147,9 +147,9 @@ printk(level "%s: " fmt "\n" , OHCI1394_ 18394@@ -147,9 +147,9 @@ printk(level "%s: " fmt "\n" , OHCI1394_
18512 printk(level "%s: fw-host%d: " fmt "\n" , OHCI1394_DRIVER_NAME, ohci->host->id , ## args) 18395 printk(level "%s: fw-host%d: " fmt "\n" , OHCI1394_DRIVER_NAME, ohci->host->id , ## args)
18513 18396
@@ -18529,10 +18412,10 @@ diff -urNp linux-2.6.29.6/drivers/ieee1394/ohci1394.c linux-2.6.29.6/drivers/iee
18529 }; 18412 };
18530 18413
18531 MODULE_DEVICE_TABLE(pci, ohci1394_pci_tbl); 18414 MODULE_DEVICE_TABLE(pci, ohci1394_pci_tbl);
18532diff -urNp linux-2.6.29.6/drivers/ieee1394/raw1394.c linux-2.6.29.6/drivers/ieee1394/raw1394.c 18415diff -urNp linux-2.6.30.4/drivers/ieee1394/raw1394.c linux-2.6.30.4/drivers/ieee1394/raw1394.c
18533--- linux-2.6.29.6/drivers/ieee1394/raw1394.c 2009-07-02 19:41:20.000000000 -0400 18416--- linux-2.6.30.4/drivers/ieee1394/raw1394.c 2009-07-24 17:47:51.000000000 -0400
18534+++ linux-2.6.29.6/drivers/ieee1394/raw1394.c 2009-07-23 17:34:32.121756795 -0400 18417+++ linux-2.6.30.4/drivers/ieee1394/raw1394.c 2009-07-30 09:48:10.022270946 -0400
18535@@ -2995,7 +2995,7 @@ static struct ieee1394_device_id raw1394 18418@@ -2999,7 +2999,7 @@ static const struct ieee1394_device_id r
18536 .match_flags = IEEE1394_MATCH_SPECIFIER_ID | IEEE1394_MATCH_VERSION, 18419 .match_flags = IEEE1394_MATCH_SPECIFIER_ID | IEEE1394_MATCH_VERSION,
18537 .specifier_id = CAMERA_UNIT_SPEC_ID_ENTRY & 0xffffff, 18420 .specifier_id = CAMERA_UNIT_SPEC_ID_ENTRY & 0xffffff,
18538 .version = (CAMERA_SW_VERSION_ENTRY + 2) & 0xffffff}, 18421 .version = (CAMERA_SW_VERSION_ENTRY + 2) & 0xffffff},
@@ -18541,10 +18424,10 @@ diff -urNp linux-2.6.29.6/drivers/ieee1394/raw1394.c linux-2.6.29.6/drivers/ieee
18541 }; 18424 };
18542 18425
18543 MODULE_DEVICE_TABLE(ieee1394, raw1394_id_table); 18426 MODULE_DEVICE_TABLE(ieee1394, raw1394_id_table);
18544diff -urNp linux-2.6.29.6/drivers/ieee1394/sbp2.c linux-2.6.29.6/drivers/ieee1394/sbp2.c 18427diff -urNp linux-2.6.30.4/drivers/ieee1394/sbp2.c linux-2.6.30.4/drivers/ieee1394/sbp2.c
18545--- linux-2.6.29.6/drivers/ieee1394/sbp2.c 2009-07-02 19:41:20.000000000 -0400 18428--- linux-2.6.30.4/drivers/ieee1394/sbp2.c 2009-07-24 17:47:51.000000000 -0400
18546+++ linux-2.6.29.6/drivers/ieee1394/sbp2.c 2009-07-23 17:34:32.122774195 -0400 18429+++ linux-2.6.30.4/drivers/ieee1394/sbp2.c 2009-07-30 09:48:10.022270946 -0400
18547@@ -290,7 +290,7 @@ static struct ieee1394_device_id sbp2_id 18430@@ -290,7 +290,7 @@ static const struct ieee1394_device_id s
18548 .match_flags = IEEE1394_MATCH_SPECIFIER_ID | IEEE1394_MATCH_VERSION, 18431 .match_flags = IEEE1394_MATCH_SPECIFIER_ID | IEEE1394_MATCH_VERSION,
18549 .specifier_id = SBP2_UNIT_SPEC_ID_ENTRY & 0xffffff, 18432 .specifier_id = SBP2_UNIT_SPEC_ID_ENTRY & 0xffffff,
18550 .version = SBP2_SW_VERSION_ENTRY & 0xffffff}, 18433 .version = SBP2_SW_VERSION_ENTRY & 0xffffff},
@@ -18553,7 +18436,7 @@ diff -urNp linux-2.6.29.6/drivers/ieee1394/sbp2.c linux-2.6.29.6/drivers/ieee139
18553 }; 18436 };
18554 MODULE_DEVICE_TABLE(ieee1394, sbp2_id_table); 18437 MODULE_DEVICE_TABLE(ieee1394, sbp2_id_table);
18555 18438
18556@@ -2112,7 +2112,7 @@ MODULE_DESCRIPTION("IEEE-1394 SBP-2 prot 18439@@ -2111,7 +2111,7 @@ MODULE_DESCRIPTION("IEEE-1394 SBP-2 prot
18557 MODULE_SUPPORTED_DEVICE(SBP2_DEVICE_NAME); 18440 MODULE_SUPPORTED_DEVICE(SBP2_DEVICE_NAME);
18558 MODULE_LICENSE("GPL"); 18441 MODULE_LICENSE("GPL");
18559 18442
@@ -18562,10 +18445,10 @@ diff -urNp linux-2.6.29.6/drivers/ieee1394/sbp2.c linux-2.6.29.6/drivers/ieee139
18562 { 18445 {
18563 int ret; 18446 int ret;
18564 18447
18565diff -urNp linux-2.6.29.6/drivers/ieee1394/video1394.c linux-2.6.29.6/drivers/ieee1394/video1394.c 18448diff -urNp linux-2.6.30.4/drivers/ieee1394/video1394.c linux-2.6.30.4/drivers/ieee1394/video1394.c
18566--- linux-2.6.29.6/drivers/ieee1394/video1394.c 2009-07-02 19:41:20.000000000 -0400 18449--- linux-2.6.30.4/drivers/ieee1394/video1394.c 2009-07-24 17:47:51.000000000 -0400
18567+++ linux-2.6.29.6/drivers/ieee1394/video1394.c 2009-07-23 17:34:32.123823981 -0400 18450+++ linux-2.6.30.4/drivers/ieee1394/video1394.c 2009-07-30 09:48:10.022535006 -0400
18568@@ -1310,7 +1310,7 @@ static struct ieee1394_device_id video13 18451@@ -1310,7 +1310,7 @@ static const struct ieee1394_device_id v
18569 .specifier_id = CAMERA_UNIT_SPEC_ID_ENTRY & 0xffffff, 18452 .specifier_id = CAMERA_UNIT_SPEC_ID_ENTRY & 0xffffff,
18570 .version = (CAMERA_SW_VERSION_ENTRY + 2) & 0xffffff 18453 .version = (CAMERA_SW_VERSION_ENTRY + 2) & 0xffffff
18571 }, 18454 },
@@ -18574,9 +18457,9 @@ diff -urNp linux-2.6.29.6/drivers/ieee1394/video1394.c linux-2.6.29.6/drivers/ie
18574 }; 18457 };
18575 18458
18576 MODULE_DEVICE_TABLE(ieee1394, video1394_id_table); 18459 MODULE_DEVICE_TABLE(ieee1394, video1394_id_table);
18577diff -urNp linux-2.6.29.6/drivers/infiniband/hw/ehca/ehca_uverbs.c linux-2.6.29.6/drivers/infiniband/hw/ehca/ehca_uverbs.c 18460diff -urNp linux-2.6.30.4/drivers/infiniband/hw/ehca/ehca_uverbs.c linux-2.6.30.4/drivers/infiniband/hw/ehca/ehca_uverbs.c
18578--- linux-2.6.29.6/drivers/infiniband/hw/ehca/ehca_uverbs.c 2009-07-02 19:41:20.000000000 -0400 18461--- linux-2.6.30.4/drivers/infiniband/hw/ehca/ehca_uverbs.c 2009-07-24 17:47:51.000000000 -0400
18579+++ linux-2.6.29.6/drivers/infiniband/hw/ehca/ehca_uverbs.c 2009-07-23 18:40:27.691179918 -0400 18462+++ linux-2.6.30.4/drivers/infiniband/hw/ehca/ehca_uverbs.c 2009-07-30 09:48:10.023536535 -0400
18580@@ -95,7 +95,7 @@ static void ehca_mm_close(struct vm_area 18463@@ -95,7 +95,7 @@ static void ehca_mm_close(struct vm_area
18581 vma->vm_start, vma->vm_end, *count); 18464 vma->vm_start, vma->vm_end, *count);
18582 } 18465 }
@@ -18586,9 +18469,9 @@ diff -urNp linux-2.6.29.6/drivers/infiniband/hw/ehca/ehca_uverbs.c linux-2.6.29.
18586 .open = ehca_mm_open, 18469 .open = ehca_mm_open,
18587 .close = ehca_mm_close, 18470 .close = ehca_mm_close,
18588 }; 18471 };
18589diff -urNp linux-2.6.29.6/drivers/infiniband/hw/ipath/ipath_file_ops.c linux-2.6.29.6/drivers/infiniband/hw/ipath/ipath_file_ops.c 18472diff -urNp linux-2.6.30.4/drivers/infiniband/hw/ipath/ipath_file_ops.c linux-2.6.30.4/drivers/infiniband/hw/ipath/ipath_file_ops.c
18590--- linux-2.6.29.6/drivers/infiniband/hw/ipath/ipath_file_ops.c 2009-07-02 19:41:20.000000000 -0400 18473--- linux-2.6.30.4/drivers/infiniband/hw/ipath/ipath_file_ops.c 2009-07-24 17:47:51.000000000 -0400
18591+++ linux-2.6.29.6/drivers/infiniband/hw/ipath/ipath_file_ops.c 2009-07-23 18:40:27.711522279 -0400 18474+++ linux-2.6.30.4/drivers/infiniband/hw/ipath/ipath_file_ops.c 2009-07-30 09:48:10.023536535 -0400
18592@@ -1151,7 +1151,7 @@ static int ipath_file_vma_fault(struct v 18475@@ -1151,7 +1151,7 @@ static int ipath_file_vma_fault(struct v
18593 return 0; 18476 return 0;
18594 } 18477 }
@@ -18598,9 +18481,9 @@ diff -urNp linux-2.6.29.6/drivers/infiniband/hw/ipath/ipath_file_ops.c linux-2.6
18598 .fault = ipath_file_vma_fault, 18481 .fault = ipath_file_vma_fault,
18599 }; 18482 };
18600 18483
18601diff -urNp linux-2.6.29.6/drivers/infiniband/hw/ipath/ipath_mmap.c linux-2.6.29.6/drivers/infiniband/hw/ipath/ipath_mmap.c 18484diff -urNp linux-2.6.30.4/drivers/infiniband/hw/ipath/ipath_mmap.c linux-2.6.30.4/drivers/infiniband/hw/ipath/ipath_mmap.c
18602--- linux-2.6.29.6/drivers/infiniband/hw/ipath/ipath_mmap.c 2009-07-02 19:41:20.000000000 -0400 18485--- linux-2.6.30.4/drivers/infiniband/hw/ipath/ipath_mmap.c 2009-07-24 17:47:51.000000000 -0400
18603+++ linux-2.6.29.6/drivers/infiniband/hw/ipath/ipath_mmap.c 2009-07-23 18:40:27.724998803 -0400 18486+++ linux-2.6.30.4/drivers/infiniband/hw/ipath/ipath_mmap.c 2009-07-30 09:48:10.024683962 -0400
18604@@ -74,7 +74,7 @@ static void ipath_vma_close(struct vm_ar 18487@@ -74,7 +74,7 @@ static void ipath_vma_close(struct vm_ar
18605 kref_put(&ip->ref, ipath_release_mmap_info); 18488 kref_put(&ip->ref, ipath_release_mmap_info);
18606 } 18489 }
@@ -18610,9 +18493,9 @@ diff -urNp linux-2.6.29.6/drivers/infiniband/hw/ipath/ipath_mmap.c linux-2.6.29.
18610 .open = ipath_vma_open, 18493 .open = ipath_vma_open,
18611 .close = ipath_vma_close, 18494 .close = ipath_vma_close,
18612 }; 18495 };
18613diff -urNp linux-2.6.29.6/drivers/input/keyboard/atkbd.c linux-2.6.29.6/drivers/input/keyboard/atkbd.c 18496diff -urNp linux-2.6.30.4/drivers/input/keyboard/atkbd.c linux-2.6.30.4/drivers/input/keyboard/atkbd.c
18614--- linux-2.6.29.6/drivers/input/keyboard/atkbd.c 2009-07-02 19:41:20.000000000 -0400 18497--- linux-2.6.30.4/drivers/input/keyboard/atkbd.c 2009-07-24 17:47:51.000000000 -0400
18615+++ linux-2.6.29.6/drivers/input/keyboard/atkbd.c 2009-07-23 17:34:32.123823981 -0400 18498+++ linux-2.6.30.4/drivers/input/keyboard/atkbd.c 2009-07-30 09:48:10.024683962 -0400
18616@@ -1166,7 +1166,7 @@ static struct serio_device_id atkbd_seri 18499@@ -1166,7 +1166,7 @@ static struct serio_device_id atkbd_seri
18617 .id = SERIO_ANY, 18500 .id = SERIO_ANY,
18618 .extra = SERIO_ANY, 18501 .extra = SERIO_ANY,
@@ -18622,10 +18505,10 @@ diff -urNp linux-2.6.29.6/drivers/input/keyboard/atkbd.c linux-2.6.29.6/drivers/
18622 }; 18505 };
18623 18506
18624 MODULE_DEVICE_TABLE(serio, atkbd_serio_ids); 18507 MODULE_DEVICE_TABLE(serio, atkbd_serio_ids);
18625diff -urNp linux-2.6.29.6/drivers/input/mouse/lifebook.c linux-2.6.29.6/drivers/input/mouse/lifebook.c 18508diff -urNp linux-2.6.30.4/drivers/input/mouse/lifebook.c linux-2.6.30.4/drivers/input/mouse/lifebook.c
18626--- linux-2.6.29.6/drivers/input/mouse/lifebook.c 2009-07-02 19:41:20.000000000 -0400 18509--- linux-2.6.30.4/drivers/input/mouse/lifebook.c 2009-07-24 17:47:51.000000000 -0400
18627+++ linux-2.6.29.6/drivers/input/mouse/lifebook.c 2009-07-23 17:34:32.124774542 -0400 18510+++ linux-2.6.30.4/drivers/input/mouse/lifebook.c 2009-07-30 09:48:10.025535593 -0400
18628@@ -110,7 +110,7 @@ static const struct dmi_system_id lifebo 18511@@ -116,7 +116,7 @@ static const struct dmi_system_id lifebo
18629 DMI_MATCH(DMI_PRODUCT_NAME, "LifeBook B142"), 18512 DMI_MATCH(DMI_PRODUCT_NAME, "LifeBook B142"),
18630 }, 18513 },
18631 }, 18514 },
@@ -18634,9 +18517,9 @@ diff -urNp linux-2.6.29.6/drivers/input/mouse/lifebook.c linux-2.6.29.6/drivers/
18634 }; 18517 };
18635 18518
18636 static psmouse_ret_t lifebook_process_byte(struct psmouse *psmouse) 18519 static psmouse_ret_t lifebook_process_byte(struct psmouse *psmouse)
18637diff -urNp linux-2.6.29.6/drivers/input/mouse/psmouse-base.c linux-2.6.29.6/drivers/input/mouse/psmouse-base.c 18520diff -urNp linux-2.6.30.4/drivers/input/mouse/psmouse-base.c linux-2.6.30.4/drivers/input/mouse/psmouse-base.c
18638--- linux-2.6.29.6/drivers/input/mouse/psmouse-base.c 2009-07-02 19:41:20.000000000 -0400 18521--- linux-2.6.30.4/drivers/input/mouse/psmouse-base.c 2009-07-24 17:47:51.000000000 -0400
18639+++ linux-2.6.29.6/drivers/input/mouse/psmouse-base.c 2009-07-23 17:34:32.124774542 -0400 18522+++ linux-2.6.30.4/drivers/input/mouse/psmouse-base.c 2009-07-30 09:48:10.025535593 -0400
18640@@ -1378,7 +1378,7 @@ static struct serio_device_id psmouse_se 18523@@ -1378,7 +1378,7 @@ static struct serio_device_id psmouse_se
18641 .id = SERIO_ANY, 18524 .id = SERIO_ANY,
18642 .extra = SERIO_ANY, 18525 .extra = SERIO_ANY,
@@ -18646,9 +18529,9 @@ diff -urNp linux-2.6.29.6/drivers/input/mouse/psmouse-base.c linux-2.6.29.6/driv
18646 }; 18529 };
18647 18530
18648 MODULE_DEVICE_TABLE(serio, psmouse_serio_ids); 18531 MODULE_DEVICE_TABLE(serio, psmouse_serio_ids);
18649diff -urNp linux-2.6.29.6/drivers/input/mouse/synaptics.c linux-2.6.29.6/drivers/input/mouse/synaptics.c 18532diff -urNp linux-2.6.30.4/drivers/input/mouse/synaptics.c linux-2.6.30.4/drivers/input/mouse/synaptics.c
18650--- linux-2.6.29.6/drivers/input/mouse/synaptics.c 2009-07-02 19:41:20.000000000 -0400 18533--- linux-2.6.30.4/drivers/input/mouse/synaptics.c 2009-07-24 17:47:51.000000000 -0400
18651+++ linux-2.6.29.6/drivers/input/mouse/synaptics.c 2009-07-23 17:34:32.124774542 -0400 18534+++ linux-2.6.30.4/drivers/input/mouse/synaptics.c 2009-07-30 09:48:10.026633372 -0400
18652@@ -412,7 +412,7 @@ static void synaptics_process_packet(str 18535@@ -412,7 +412,7 @@ static void synaptics_process_packet(str
18653 break; 18536 break;
18654 case 2: 18537 case 2:
@@ -18667,10 +18550,10 @@ diff -urNp linux-2.6.29.6/drivers/input/mouse/synaptics.c linux-2.6.29.6/drivers
18667 }; 18550 };
18668 #endif 18551 #endif
18669 18552
18670diff -urNp linux-2.6.29.6/drivers/input/mousedev.c linux-2.6.29.6/drivers/input/mousedev.c 18553diff -urNp linux-2.6.30.4/drivers/input/mousedev.c linux-2.6.30.4/drivers/input/mousedev.c
18671--- linux-2.6.29.6/drivers/input/mousedev.c 2009-07-02 19:41:20.000000000 -0400 18554--- linux-2.6.30.4/drivers/input/mousedev.c 2009-07-24 17:47:51.000000000 -0400
18672+++ linux-2.6.29.6/drivers/input/mousedev.c 2009-07-23 17:34:32.125938815 -0400 18555+++ linux-2.6.30.4/drivers/input/mousedev.c 2009-07-30 09:48:10.026633372 -0400
18673@@ -1062,7 +1062,7 @@ static struct input_handler mousedev_han 18556@@ -1059,7 +1059,7 @@ static struct input_handler mousedev_han
18674 18557
18675 #ifdef CONFIG_INPUT_MOUSEDEV_PSAUX 18558 #ifdef CONFIG_INPUT_MOUSEDEV_PSAUX
18676 static struct miscdevice psaux_mouse = { 18559 static struct miscdevice psaux_mouse = {
@@ -18679,11 +18562,11 @@ diff -urNp linux-2.6.29.6/drivers/input/mousedev.c linux-2.6.29.6/drivers/input/
18679 }; 18562 };
18680 static int psaux_registered; 18563 static int psaux_registered;
18681 #endif 18564 #endif
18682diff -urNp linux-2.6.29.6/drivers/input/serio/i8042-x86ia64io.h linux-2.6.29.6/drivers/input/serio/i8042-x86ia64io.h 18565diff -urNp linux-2.6.30.4/drivers/input/serio/i8042-x86ia64io.h linux-2.6.30.4/drivers/input/serio/i8042-x86ia64io.h
18683--- linux-2.6.29.6/drivers/input/serio/i8042-x86ia64io.h 2009-07-02 19:41:20.000000000 -0400 18566--- linux-2.6.30.4/drivers/input/serio/i8042-x86ia64io.h 2009-07-24 17:47:51.000000000 -0400
18684+++ linux-2.6.29.6/drivers/input/serio/i8042-x86ia64io.h 2009-07-23 17:34:32.125938815 -0400 18567+++ linux-2.6.30.4/drivers/input/serio/i8042-x86ia64io.h 2009-07-30 09:48:10.027427071 -0400
18685@@ -151,7 +151,7 @@ static struct dmi_system_id __initdata i 18568@@ -159,7 +159,7 @@ static struct dmi_system_id __initdata i
18686 DMI_MATCH(DMI_PRODUCT_VERSION, "01"), 18569 DMI_MATCH(DMI_PRODUCT_VERSION, "Rev 1"),
18687 }, 18570 },
18688 }, 18571 },
18689- { } 18572- { }
@@ -18691,7 +18574,7 @@ diff -urNp linux-2.6.29.6/drivers/input/serio/i8042-x86ia64io.h linux-2.6.29.6/d
18691 }; 18574 };
18692 18575
18693 /* 18576 /*
18694@@ -366,7 +366,7 @@ static struct dmi_system_id __initdata i 18577@@ -374,7 +374,7 @@ static struct dmi_system_id __initdata i
18695 DMI_MATCH(DMI_PRODUCT_NAME, "Vostro1510"), 18578 DMI_MATCH(DMI_PRODUCT_NAME, "Vostro1510"),
18696 }, 18579 },
18697 }, 18580 },
@@ -18699,9 +18582,18 @@ diff -urNp linux-2.6.29.6/drivers/input/serio/i8042-x86ia64io.h linux-2.6.29.6/d
18699+ { NULL, NULL, {DMI_MATCH(DMI_NONE, {0})}, NULL } 18582+ { NULL, NULL, {DMI_MATCH(DMI_NONE, {0})}, NULL }
18700 }; 18583 };
18701 18584
18585 static struct dmi_system_id __initdata i8042_dmi_reset_table[] = {
18586@@ -392,7 +392,7 @@ static struct dmi_system_id __initdata i
18587 DMI_MATCH(DMI_BOARD_VENDOR, "LG Electronics Inc."),
18588 },
18589 },
18590- { }
18591+ { NULL, NULL, {DMI_MATCH(DMI_NONE, {0})}, NULL }
18592 };
18593
18702 #ifdef CONFIG_PNP 18594 #ifdef CONFIG_PNP
18703@@ -378,7 +378,7 @@ static struct dmi_system_id __initdata i 18595@@ -411,7 +411,7 @@ static struct dmi_system_id __initdata i
18704 DMI_MATCH(DMI_BOARD_VENDOR, "Intel Corporation"), 18596 DMI_MATCH(DMI_BOARD_VENDOR, "MICRO-STAR INTERNATIONAL CO., LTD"),
18705 }, 18597 },
18706 }, 18598 },
18707- { } 18599- { }
@@ -18709,7 +18601,7 @@ diff -urNp linux-2.6.29.6/drivers/input/serio/i8042-x86ia64io.h linux-2.6.29.6/d
18709 }; 18601 };
18710 #endif 18602 #endif
18711 18603
18712@@ -445,7 +445,7 @@ static struct dmi_system_id __initdata i 18604@@ -478,7 +478,7 @@ static struct dmi_system_id __initdata i
18713 DMI_MATCH(DMI_PRODUCT_NAME, "TravelMate 4280"), 18605 DMI_MATCH(DMI_PRODUCT_NAME, "TravelMate 4280"),
18714 }, 18606 },
18715 }, 18607 },
@@ -18718,10 +18610,10 @@ diff -urNp linux-2.6.29.6/drivers/input/serio/i8042-x86ia64io.h linux-2.6.29.6/d
18718 }; 18610 };
18719 18611
18720 #endif /* CONFIG_X86 */ 18612 #endif /* CONFIG_X86 */
18721diff -urNp linux-2.6.29.6/drivers/input/serio/serio_raw.c linux-2.6.29.6/drivers/input/serio/serio_raw.c 18613diff -urNp linux-2.6.30.4/drivers/input/serio/serio_raw.c linux-2.6.30.4/drivers/input/serio/serio_raw.c
18722--- linux-2.6.29.6/drivers/input/serio/serio_raw.c 2009-07-02 19:41:20.000000000 -0400 18614--- linux-2.6.30.4/drivers/input/serio/serio_raw.c 2009-07-24 17:47:51.000000000 -0400
18723+++ linux-2.6.29.6/drivers/input/serio/serio_raw.c 2009-07-23 17:34:32.126724952 -0400 18615+++ linux-2.6.30.4/drivers/input/serio/serio_raw.c 2009-07-30 09:48:10.027427071 -0400
18724@@ -378,7 +378,7 @@ static struct serio_device_id serio_raw_ 18616@@ -376,7 +376,7 @@ static struct serio_device_id serio_raw_
18725 .id = SERIO_ANY, 18617 .id = SERIO_ANY,
18726 .extra = SERIO_ANY, 18618 .extra = SERIO_ANY,
18727 }, 18619 },
@@ -18730,9 +18622,9 @@ diff -urNp linux-2.6.29.6/drivers/input/serio/serio_raw.c linux-2.6.29.6/drivers
18730 }; 18622 };
18731 18623
18732 MODULE_DEVICE_TABLE(serio, serio_raw_serio_ids); 18624 MODULE_DEVICE_TABLE(serio, serio_raw_serio_ids);
18733diff -urNp linux-2.6.29.6/drivers/isdn/capi/kcapi_proc.c linux-2.6.29.6/drivers/isdn/capi/kcapi_proc.c 18625diff -urNp linux-2.6.30.4/drivers/isdn/capi/kcapi_proc.c linux-2.6.30.4/drivers/isdn/capi/kcapi_proc.c
18734--- linux-2.6.29.6/drivers/isdn/capi/kcapi_proc.c 2009-07-02 19:41:20.000000000 -0400 18626--- linux-2.6.30.4/drivers/isdn/capi/kcapi_proc.c 2009-07-24 17:47:51.000000000 -0400
18735+++ linux-2.6.29.6/drivers/isdn/capi/kcapi_proc.c 2009-07-23 18:40:27.725292323 -0400 18627+++ linux-2.6.30.4/drivers/isdn/capi/kcapi_proc.c 2009-07-30 09:48:10.027427071 -0400
18736@@ -89,14 +89,14 @@ static int contrstats_show(struct seq_fi 18628@@ -89,14 +89,14 @@ static int contrstats_show(struct seq_fi
18737 return 0; 18629 return 0;
18738 } 18630 }
@@ -18767,7 +18659,7 @@ diff -urNp linux-2.6.29.6/drivers/isdn/capi/kcapi_proc.c linux-2.6.29.6/drivers/
18767 .start = applications_start, 18659 .start = applications_start,
18768 .next = applications_next, 18660 .next = applications_next,
18769 .stop = applications_stop, 18661 .stop = applications_stop,
18770@@ -262,7 +262,7 @@ static int capi_driver_show(struct seq_f 18662@@ -264,7 +264,7 @@ static int capi_driver_show(struct seq_f
18771 return 0; 18663 return 0;
18772 } 18664 }
18773 18665
@@ -18776,10 +18668,10 @@ diff -urNp linux-2.6.29.6/drivers/isdn/capi/kcapi_proc.c linux-2.6.29.6/drivers/
18776 .start = capi_driver_start, 18668 .start = capi_driver_start,
18777 .next = capi_driver_next, 18669 .next = capi_driver_next,
18778 .stop = capi_driver_stop, 18670 .stop = capi_driver_stop,
18779diff -urNp linux-2.6.29.6/drivers/isdn/mISDN/timerdev.c linux-2.6.29.6/drivers/isdn/mISDN/timerdev.c 18671diff -urNp linux-2.6.30.4/drivers/isdn/mISDN/timerdev.c linux-2.6.30.4/drivers/isdn/mISDN/timerdev.c
18780--- linux-2.6.29.6/drivers/isdn/mISDN/timerdev.c 2009-07-02 19:41:20.000000000 -0400 18672--- linux-2.6.30.4/drivers/isdn/mISDN/timerdev.c 2009-07-24 17:47:51.000000000 -0400
18781+++ linux-2.6.29.6/drivers/isdn/mISDN/timerdev.c 2009-07-23 18:40:27.725292323 -0400 18673+++ linux-2.6.30.4/drivers/isdn/mISDN/timerdev.c 2009-07-30 09:48:10.028469662 -0400
18782@@ -260,7 +260,7 @@ mISDN_ioctl(struct inode *inode, struct 18674@@ -259,7 +259,7 @@ mISDN_ioctl(struct inode *inode, struct
18783 return ret; 18675 return ret;
18784 } 18676 }
18785 18677
@@ -18788,9 +18680,9 @@ diff -urNp linux-2.6.29.6/drivers/isdn/mISDN/timerdev.c linux-2.6.29.6/drivers/i
18788 .read = mISDN_read, 18680 .read = mISDN_read,
18789 .poll = mISDN_poll, 18681 .poll = mISDN_poll,
18790 .ioctl = mISDN_ioctl, 18682 .ioctl = mISDN_ioctl,
18791diff -urNp linux-2.6.29.6/drivers/lguest/core.c linux-2.6.29.6/drivers/lguest/core.c 18683diff -urNp linux-2.6.30.4/drivers/lguest/core.c linux-2.6.30.4/drivers/lguest/core.c
18792--- linux-2.6.29.6/drivers/lguest/core.c 2009-07-02 19:41:20.000000000 -0400 18684--- linux-2.6.30.4/drivers/lguest/core.c 2009-07-24 17:47:51.000000000 -0400
18793+++ linux-2.6.29.6/drivers/lguest/core.c 2009-07-23 17:34:32.126724952 -0400 18685+++ linux-2.6.30.4/drivers/lguest/core.c 2009-07-30 09:48:10.028469662 -0400
18794@@ -80,9 +80,17 @@ static __init int map_switcher(void) 18686@@ -80,9 +80,17 @@ static __init int map_switcher(void)
18795 * (SWITCHER_ADDR). We might not get it in theory, but in practice 18687 * (SWITCHER_ADDR). We might not get it in theory, but in practice
18796 * it's worked so far. The end address needs +1 because __get_vm_area 18688 * it's worked so far. The end address needs +1 because __get_vm_area
@@ -18809,9 +18701,9 @@ diff -urNp linux-2.6.29.6/drivers/lguest/core.c linux-2.6.29.6/drivers/lguest/co
18809 if (!switcher_vma) { 18701 if (!switcher_vma) {
18810 err = -ENOMEM; 18702 err = -ENOMEM;
18811 printk("lguest: could not map switcher pages high\n"); 18703 printk("lguest: could not map switcher pages high\n");
18812diff -urNp linux-2.6.29.6/drivers/lguest/lguest_user.c linux-2.6.29.6/drivers/lguest/lguest_user.c 18704diff -urNp linux-2.6.30.4/drivers/lguest/lguest_user.c linux-2.6.30.4/drivers/lguest/lguest_user.c
18813--- linux-2.6.29.6/drivers/lguest/lguest_user.c 2009-07-02 19:41:20.000000000 -0400 18705--- linux-2.6.30.4/drivers/lguest/lguest_user.c 2009-07-24 17:47:51.000000000 -0400
18814+++ linux-2.6.29.6/drivers/lguest/lguest_user.c 2009-07-23 18:40:27.725292323 -0400 18706+++ linux-2.6.30.4/drivers/lguest/lguest_user.c 2009-07-30 09:48:10.028469662 -0400
18815@@ -329,7 +329,7 @@ static int close(struct inode *inode, st 18707@@ -329,7 +329,7 @@ static int close(struct inode *inode, st
18816 * We begin our understanding with the Host kernel interface which the Launcher 18708 * We begin our understanding with the Host kernel interface which the Launcher
18817 * uses: reading and writing a character device called /dev/lguest. All the 18709 * uses: reading and writing a character device called /dev/lguest. All the
@@ -18821,10 +18713,10 @@ diff -urNp linux-2.6.29.6/drivers/lguest/lguest_user.c linux-2.6.29.6/drivers/lg
18821 .owner = THIS_MODULE, 18713 .owner = THIS_MODULE,
18822 .release = close, 18714 .release = close,
18823 .write = write, 18715 .write = write,
18824diff -urNp linux-2.6.29.6/drivers/md/bitmap.c linux-2.6.29.6/drivers/md/bitmap.c 18716diff -urNp linux-2.6.30.4/drivers/md/bitmap.c linux-2.6.30.4/drivers/md/bitmap.c
18825--- linux-2.6.29.6/drivers/md/bitmap.c 2009-07-02 19:41:20.000000000 -0400 18717--- linux-2.6.30.4/drivers/md/bitmap.c 2009-07-24 17:47:51.000000000 -0400
18826+++ linux-2.6.29.6/drivers/md/bitmap.c 2009-07-23 17:34:32.126724952 -0400 18718+++ linux-2.6.30.4/drivers/md/bitmap.c 2009-07-30 09:48:10.029590223 -0400
18827@@ -57,7 +57,7 @@ 18719@@ -58,7 +58,7 @@
18828 # if DEBUG > 0 18720 # if DEBUG > 0
18829 # define PRINTK(x...) printk(KERN_DEBUG x) 18721 # define PRINTK(x...) printk(KERN_DEBUG x)
18830 # else 18722 # else
@@ -18833,10 +18725,10 @@ diff -urNp linux-2.6.29.6/drivers/md/bitmap.c linux-2.6.29.6/drivers/md/bitmap.c
18833 # endif 18725 # endif
18834 #endif 18726 #endif
18835 18727
18836diff -urNp linux-2.6.29.6/drivers/md/md.c linux-2.6.29.6/drivers/md/md.c 18728diff -urNp linux-2.6.30.4/drivers/md/md.c linux-2.6.30.4/drivers/md/md.c
18837--- linux-2.6.29.6/drivers/md/md.c 2009-07-02 19:41:20.000000000 -0400 18729--- linux-2.6.30.4/drivers/md/md.c 2009-07-24 17:47:51.000000000 -0400
18838+++ linux-2.6.29.6/drivers/md/md.c 2009-07-23 18:40:27.467400762 -0400 18730+++ linux-2.6.30.4/drivers/md/md.c 2009-07-30 09:48:10.031075937 -0400
18839@@ -5637,7 +5637,7 @@ static int md_seq_show(struct seq_file * 18731@@ -5973,7 +5973,7 @@ static int md_seq_show(struct seq_file *
18840 chunk_kb ? "KB" : "B"); 18732 chunk_kb ? "KB" : "B");
18841 if (bitmap->file) { 18733 if (bitmap->file) {
18842 seq_printf(seq, ", file: "); 18734 seq_printf(seq, ", file: ");
@@ -18845,19 +18737,46 @@ diff -urNp linux-2.6.29.6/drivers/md/md.c linux-2.6.29.6/drivers/md/md.c
18845 } 18737 }
18846 18738
18847 seq_printf(seq, "\n"); 18739 seq_printf(seq, "\n");
18848@@ -5651,7 +5651,7 @@ static int md_seq_show(struct seq_file * 18740diff -urNp linux-2.6.30.4/drivers/md/md.h linux-2.6.30.4/drivers/md/md.h
18849 return 0; 18741--- linux-2.6.30.4/drivers/md/md.h 2009-07-24 17:47:51.000000000 -0400
18742+++ linux-2.6.30.4/drivers/md/md.h 2009-07-30 09:48:10.031075937 -0400
18743@@ -299,7 +299,7 @@ static inline void rdev_dec_pending(mdk_
18744
18745 static inline void md_sync_acct(struct block_device *bdev, unsigned long nr_sectors)
18746 {
18747- atomic_add(nr_sectors, &bdev->bd_contains->bd_disk->sync_io);
18748+ atomic_add_unchecked(nr_sectors, &bdev->bd_contains->bd_disk->sync_io);
18850 } 18749 }
18851 18750
18852-static struct seq_operations md_seq_ops = { 18751 struct mdk_personality
18853+static const struct seq_operations md_seq_ops = { 18752diff -urNp linux-2.6.30.4/drivers/media/dvb/dvb-core/dmxdev.c linux-2.6.30.4/drivers/media/dvb/dvb-core/dmxdev.c
18854 .start = md_seq_start, 18753--- linux-2.6.30.4/drivers/media/dvb/dvb-core/dmxdev.c 2009-07-24 17:47:51.000000000 -0400
18855 .next = md_seq_next, 18754+++ linux-2.6.30.4/drivers/media/dvb/dvb-core/dmxdev.c 2009-07-30 12:06:52.108842402 -0400
18856 .stop = md_seq_stop, 18755@@ -1092,7 +1092,7 @@ static unsigned int dvb_dvr_poll(struct
18857diff -urNp linux-2.6.29.6/drivers/media/video/cafe_ccic.c linux-2.6.29.6/drivers/media/video/cafe_ccic.c 18756 return mask;
18858--- linux-2.6.29.6/drivers/media/video/cafe_ccic.c 2009-07-02 19:41:20.000000000 -0400 18757 }
18859+++ linux-2.6.29.6/drivers/media/video/cafe_ccic.c 2009-07-23 18:40:27.758392151 -0400 18758
18860@@ -1428,7 +1428,7 @@ static void cafe_v4l_vm_close(struct vm_ 18759-static struct file_operations dvb_dvr_fops = {
18760+static const struct file_operations dvb_dvr_fops = {
18761 .owner = THIS_MODULE,
18762 .read = dvb_dvr_read,
18763 .write = dvb_dvr_write,
18764diff -urNp linux-2.6.30.4/drivers/media/dvb/firewire/firedtv-ci.c linux-2.6.30.4/drivers/media/dvb/firewire/firedtv-ci.c
18765--- linux-2.6.30.4/drivers/media/dvb/firewire/firedtv-ci.c 2009-07-24 17:47:51.000000000 -0400
18766+++ linux-2.6.30.4/drivers/media/dvb/firewire/firedtv-ci.c 2009-07-30 12:06:52.110732547 -0400
18767@@ -215,7 +215,7 @@ static unsigned int fdtv_ca_io_poll(stru
18768 return POLLIN;
18769 }
18770
18771-static struct file_operations fdtv_ca_fops = {
18772+static const struct file_operations fdtv_ca_fops = {
18773 .owner = THIS_MODULE,
18774 .ioctl = dvb_generic_ioctl,
18775 .open = dvb_generic_open,
18776diff -urNp linux-2.6.30.4/drivers/media/video/cafe_ccic.c linux-2.6.30.4/drivers/media/video/cafe_ccic.c
18777--- linux-2.6.30.4/drivers/media/video/cafe_ccic.c 2009-07-24 17:47:51.000000000 -0400
18778+++ linux-2.6.30.4/drivers/media/video/cafe_ccic.c 2009-07-30 09:48:10.031530096 -0400
18779@@ -1326,7 +1326,7 @@ static void cafe_v4l_vm_close(struct vm_
18861 mutex_unlock(&sbuf->cam->s_mutex); 18780 mutex_unlock(&sbuf->cam->s_mutex);
18862 } 18781 }
18863 18782
@@ -18866,9 +18785,9 @@ diff -urNp linux-2.6.29.6/drivers/media/video/cafe_ccic.c linux-2.6.29.6/drivers
18866 .open = cafe_v4l_vm_open, 18785 .open = cafe_v4l_vm_open,
18867 .close = cafe_v4l_vm_close 18786 .close = cafe_v4l_vm_close
18868 }; 18787 };
18869diff -urNp linux-2.6.29.6/drivers/media/video/et61x251/et61x251_core.c linux-2.6.29.6/drivers/media/video/et61x251/et61x251_core.c 18788diff -urNp linux-2.6.30.4/drivers/media/video/et61x251/et61x251_core.c linux-2.6.30.4/drivers/media/video/et61x251/et61x251_core.c
18870--- linux-2.6.29.6/drivers/media/video/et61x251/et61x251_core.c 2009-07-02 19:41:20.000000000 -0400 18789--- linux-2.6.30.4/drivers/media/video/et61x251/et61x251_core.c 2009-07-24 17:47:51.000000000 -0400
18871+++ linux-2.6.29.6/drivers/media/video/et61x251/et61x251_core.c 2009-07-23 18:40:27.771668760 -0400 18790+++ linux-2.6.30.4/drivers/media/video/et61x251/et61x251_core.c 2009-07-30 09:48:10.031530096 -0400
18872@@ -1494,7 +1494,7 @@ static void et61x251_vm_close(struct vm_ 18791@@ -1494,7 +1494,7 @@ static void et61x251_vm_close(struct vm_
18873 } 18792 }
18874 18793
@@ -18878,10 +18797,10 @@ diff -urNp linux-2.6.29.6/drivers/media/video/et61x251/et61x251_core.c linux-2.6
18878 .open = et61x251_vm_open, 18797 .open = et61x251_vm_open,
18879 .close = et61x251_vm_close, 18798 .close = et61x251_vm_close,
18880 }; 18799 };
18881diff -urNp linux-2.6.29.6/drivers/media/video/gspca/gspca.c linux-2.6.29.6/drivers/media/video/gspca/gspca.c 18800diff -urNp linux-2.6.30.4/drivers/media/video/gspca/gspca.c linux-2.6.30.4/drivers/media/video/gspca/gspca.c
18882--- linux-2.6.29.6/drivers/media/video/gspca/gspca.c 2009-07-02 19:41:20.000000000 -0400 18801--- linux-2.6.30.4/drivers/media/video/gspca/gspca.c 2009-07-24 17:47:51.000000000 -0400
18883+++ linux-2.6.29.6/drivers/media/video/gspca/gspca.c 2009-07-23 18:40:27.778527732 -0400 18802+++ linux-2.6.30.4/drivers/media/video/gspca/gspca.c 2009-07-30 09:48:10.032627590 -0400
18884@@ -98,7 +98,7 @@ static void gspca_vm_close(struct vm_are 18803@@ -99,7 +99,7 @@ static void gspca_vm_close(struct vm_are
18885 frame->v4l2_buf.flags &= ~V4L2_BUF_FLAG_MAPPED; 18804 frame->v4l2_buf.flags &= ~V4L2_BUF_FLAG_MAPPED;
18886 } 18805 }
18887 18806
@@ -18890,10 +18809,10 @@ diff -urNp linux-2.6.29.6/drivers/media/video/gspca/gspca.c linux-2.6.29.6/drive
18890 .open = gspca_vm_open, 18809 .open = gspca_vm_open,
18891 .close = gspca_vm_close, 18810 .close = gspca_vm_close,
18892 }; 18811 };
18893diff -urNp linux-2.6.29.6/drivers/media/video/meye.c linux-2.6.29.6/drivers/media/video/meye.c 18812diff -urNp linux-2.6.30.4/drivers/media/video/meye.c linux-2.6.30.4/drivers/media/video/meye.c
18894--- linux-2.6.29.6/drivers/media/video/meye.c 2009-07-02 19:41:20.000000000 -0400 18813--- linux-2.6.30.4/drivers/media/video/meye.c 2009-07-24 17:47:51.000000000 -0400
18895+++ linux-2.6.29.6/drivers/media/video/meye.c 2009-07-23 18:40:27.788416673 -0400 18814+++ linux-2.6.30.4/drivers/media/video/meye.c 2009-07-30 09:48:10.032627590 -0400
18896@@ -1628,7 +1628,7 @@ static void meye_vm_close(struct vm_area 18815@@ -1589,7 +1589,7 @@ static void meye_vm_close(struct vm_area
18897 meye.vma_use_count[idx]--; 18816 meye.vma_use_count[idx]--;
18898 } 18817 }
18899 18818
@@ -18902,9 +18821,9 @@ diff -urNp linux-2.6.29.6/drivers/media/video/meye.c linux-2.6.29.6/drivers/medi
18902 .open = meye_vm_open, 18821 .open = meye_vm_open,
18903 .close = meye_vm_close, 18822 .close = meye_vm_close,
18904 }; 18823 };
18905diff -urNp linux-2.6.29.6/drivers/media/video/sn9c102/sn9c102_core.c linux-2.6.29.6/drivers/media/video/sn9c102/sn9c102_core.c 18824diff -urNp linux-2.6.30.4/drivers/media/video/sn9c102/sn9c102_core.c linux-2.6.30.4/drivers/media/video/sn9c102/sn9c102_core.c
18906--- linux-2.6.29.6/drivers/media/video/sn9c102/sn9c102_core.c 2009-07-02 19:41:20.000000000 -0400 18825--- linux-2.6.30.4/drivers/media/video/sn9c102/sn9c102_core.c 2009-07-24 17:47:51.000000000 -0400
18907+++ linux-2.6.29.6/drivers/media/video/sn9c102/sn9c102_core.c 2009-07-23 18:40:27.796800559 -0400 18826+++ linux-2.6.30.4/drivers/media/video/sn9c102/sn9c102_core.c 2009-07-30 09:48:10.033630131 -0400
18908@@ -2075,7 +2075,7 @@ static void sn9c102_vm_close(struct vm_a 18827@@ -2075,7 +2075,7 @@ static void sn9c102_vm_close(struct vm_a
18909 } 18828 }
18910 18829
@@ -18914,9 +18833,9 @@ diff -urNp linux-2.6.29.6/drivers/media/video/sn9c102/sn9c102_core.c linux-2.6.2
18914 .open = sn9c102_vm_open, 18833 .open = sn9c102_vm_open,
18915 .close = sn9c102_vm_close, 18834 .close = sn9c102_vm_close,
18916 }; 18835 };
18917diff -urNp linux-2.6.29.6/drivers/media/video/stk-webcam.c linux-2.6.29.6/drivers/media/video/stk-webcam.c 18836diff -urNp linux-2.6.30.4/drivers/media/video/stk-webcam.c linux-2.6.30.4/drivers/media/video/stk-webcam.c
18918--- linux-2.6.29.6/drivers/media/video/stk-webcam.c 2009-07-02 19:41:20.000000000 -0400 18837--- linux-2.6.30.4/drivers/media/video/stk-webcam.c 2009-07-24 17:47:51.000000000 -0400
18919+++ linux-2.6.29.6/drivers/media/video/stk-webcam.c 2009-07-23 18:40:27.803525619 -0400 18838+++ linux-2.6.30.4/drivers/media/video/stk-webcam.c 2009-07-30 09:48:10.033630131 -0400
18920@@ -789,7 +789,7 @@ static void stk_v4l_vm_close(struct vm_a 18839@@ -789,7 +789,7 @@ static void stk_v4l_vm_close(struct vm_a
18921 if (sbuf->mapcount == 0) 18840 if (sbuf->mapcount == 0)
18922 sbuf->v4lbuf.flags &= ~V4L2_BUF_FLAG_MAPPED; 18841 sbuf->v4lbuf.flags &= ~V4L2_BUF_FLAG_MAPPED;
@@ -18926,10 +18845,10 @@ diff -urNp linux-2.6.29.6/drivers/media/video/stk-webcam.c linux-2.6.29.6/driver
18926 .open = stk_v4l_vm_open, 18845 .open = stk_v4l_vm_open,
18927 .close = stk_v4l_vm_close 18846 .close = stk_v4l_vm_close
18928 }; 18847 };
18929diff -urNp linux-2.6.29.6/drivers/media/video/uvc/uvc_v4l2.c linux-2.6.29.6/drivers/media/video/uvc/uvc_v4l2.c 18848diff -urNp linux-2.6.30.4/drivers/media/video/uvc/uvc_v4l2.c linux-2.6.30.4/drivers/media/video/uvc/uvc_v4l2.c
18930--- linux-2.6.29.6/drivers/media/video/uvc/uvc_v4l2.c 2009-07-02 19:41:20.000000000 -0400 18849--- linux-2.6.30.4/drivers/media/video/uvc/uvc_v4l2.c 2009-07-24 17:47:51.000000000 -0400
18931+++ linux-2.6.29.6/drivers/media/video/uvc/uvc_v4l2.c 2009-07-23 18:40:27.817489179 -0400 18850+++ linux-2.6.30.4/drivers/media/video/uvc/uvc_v4l2.c 2009-07-30 09:48:10.034661447 -0400
18932@@ -1030,7 +1030,7 @@ static void uvc_vm_close(struct vm_area_ 18851@@ -1036,7 +1036,7 @@ static void uvc_vm_close(struct vm_area_
18933 buffer->vma_use_count--; 18852 buffer->vma_use_count--;
18934 } 18853 }
18935 18854
@@ -18938,9 +18857,9 @@ diff -urNp linux-2.6.29.6/drivers/media/video/uvc/uvc_v4l2.c linux-2.6.29.6/driv
18938 .open = uvc_vm_open, 18857 .open = uvc_vm_open,
18939 .close = uvc_vm_close, 18858 .close = uvc_vm_close,
18940 }; 18859 };
18941diff -urNp linux-2.6.29.6/drivers/media/video/videobuf-dma-contig.c linux-2.6.29.6/drivers/media/video/videobuf-dma-contig.c 18860diff -urNp linux-2.6.30.4/drivers/media/video/videobuf-dma-contig.c linux-2.6.30.4/drivers/media/video/videobuf-dma-contig.c
18942--- linux-2.6.29.6/drivers/media/video/videobuf-dma-contig.c 2009-07-02 19:41:20.000000000 -0400 18861--- linux-2.6.30.4/drivers/media/video/videobuf-dma-contig.c 2009-07-24 17:47:51.000000000 -0400
18943+++ linux-2.6.29.6/drivers/media/video/videobuf-dma-contig.c 2009-07-23 18:40:27.828475979 -0400 18862+++ linux-2.6.30.4/drivers/media/video/videobuf-dma-contig.c 2009-07-30 09:48:10.034661447 -0400
18944@@ -103,7 +103,7 @@ static void videobuf_vm_close(struct vm_ 18863@@ -103,7 +103,7 @@ static void videobuf_vm_close(struct vm_
18945 } 18864 }
18946 } 18865 }
@@ -18950,10 +18869,10 @@ diff -urNp linux-2.6.29.6/drivers/media/video/videobuf-dma-contig.c linux-2.6.29
18950 .open = videobuf_vm_open, 18869 .open = videobuf_vm_open,
18951 .close = videobuf_vm_close, 18870 .close = videobuf_vm_close,
18952 }; 18871 };
18953diff -urNp linux-2.6.29.6/drivers/media/video/vino.c linux-2.6.29.6/drivers/media/video/vino.c 18872diff -urNp linux-2.6.30.4/drivers/media/video/vino.c linux-2.6.30.4/drivers/media/video/vino.c
18954--- linux-2.6.29.6/drivers/media/video/vino.c 2009-07-02 19:41:20.000000000 -0400 18873--- linux-2.6.30.4/drivers/media/video/vino.c 2009-07-24 17:47:51.000000000 -0400
18955+++ linux-2.6.29.6/drivers/media/video/vino.c 2009-07-23 18:40:27.838748348 -0400 18874+++ linux-2.6.30.4/drivers/media/video/vino.c 2009-07-30 09:48:10.035537043 -0400
18956@@ -4088,7 +4088,7 @@ static void vino_vm_close(struct vm_area 18875@@ -3858,7 +3858,7 @@ static void vino_vm_close(struct vm_area
18957 dprintk("vino_vm_close(): count = %d\n", fb->map_count); 18876 dprintk("vino_vm_close(): count = %d\n", fb->map_count);
18958 } 18877 }
18959 18878
@@ -18962,9 +18881,9 @@ diff -urNp linux-2.6.29.6/drivers/media/video/vino.c linux-2.6.29.6/drivers/medi
18962 .open = vino_vm_open, 18881 .open = vino_vm_open,
18963 .close = vino_vm_close, 18882 .close = vino_vm_close,
18964 }; 18883 };
18965diff -urNp linux-2.6.29.6/drivers/media/video/zc0301/zc0301_core.c linux-2.6.29.6/drivers/media/video/zc0301/zc0301_core.c 18884diff -urNp linux-2.6.30.4/drivers/media/video/zc0301/zc0301_core.c linux-2.6.30.4/drivers/media/video/zc0301/zc0301_core.c
18966--- linux-2.6.29.6/drivers/media/video/zc0301/zc0301_core.c 2009-07-02 19:41:20.000000000 -0400 18885--- linux-2.6.30.4/drivers/media/video/zc0301/zc0301_core.c 2009-07-24 17:47:51.000000000 -0400
18967+++ linux-2.6.29.6/drivers/media/video/zc0301/zc0301_core.c 2009-07-23 18:40:27.845358958 -0400 18886+++ linux-2.6.30.4/drivers/media/video/zc0301/zc0301_core.c 2009-07-30 09:48:10.036598829 -0400
18968@@ -933,7 +933,7 @@ static void zc0301_vm_close(struct vm_ar 18887@@ -933,7 +933,7 @@ static void zc0301_vm_close(struct vm_ar
18969 } 18888 }
18970 18889
@@ -18974,11 +18893,11 @@ diff -urNp linux-2.6.29.6/drivers/media/video/zc0301/zc0301_core.c linux-2.6.29.
18974 .open = zc0301_vm_open, 18893 .open = zc0301_vm_open,
18975 .close = zc0301_vm_close, 18894 .close = zc0301_vm_close,
18976 }; 18895 };
18977diff -urNp linux-2.6.29.6/drivers/media/video/zoran/zoran_driver.c linux-2.6.29.6/drivers/media/video/zoran/zoran_driver.c 18896diff -urNp linux-2.6.30.4/drivers/media/video/zoran/zoran_driver.c linux-2.6.30.4/drivers/media/video/zoran/zoran_driver.c
18978--- linux-2.6.29.6/drivers/media/video/zoran/zoran_driver.c 2009-07-02 19:41:20.000000000 -0400 18897--- linux-2.6.30.4/drivers/media/video/zoran/zoran_driver.c 2009-07-24 17:47:51.000000000 -0400
18979+++ linux-2.6.29.6/drivers/media/video/zoran/zoran_driver.c 2009-07-23 18:40:27.858649863 -0400 18898+++ linux-2.6.30.4/drivers/media/video/zoran/zoran_driver.c 2009-07-30 12:07:09.597971485 -0400
18980@@ -4359,7 +4359,7 @@ zoran_vm_close (struct vm_area_struct *v 18899@@ -3177,7 +3177,7 @@ zoran_vm_close (struct vm_area_struct *v
18981 } 18900 mutex_unlock(&zr->resource_lock);
18982 } 18901 }
18983 18902
18984-static struct vm_operations_struct zoran_vm_ops = { 18903-static struct vm_operations_struct zoran_vm_ops = {
@@ -18986,9 +18905,9 @@ diff -urNp linux-2.6.29.6/drivers/media/video/zoran/zoran_driver.c linux-2.6.29.
18986 .open = zoran_vm_open, 18905 .open = zoran_vm_open,
18987 .close = zoran_vm_close, 18906 .close = zoran_vm_close,
18988 }; 18907 };
18989diff -urNp linux-2.6.29.6/drivers/misc/ibmasm/ibmasmfs.c linux-2.6.29.6/drivers/misc/ibmasm/ibmasmfs.c 18908diff -urNp linux-2.6.30.4/drivers/misc/ibmasm/ibmasmfs.c linux-2.6.30.4/drivers/misc/ibmasm/ibmasmfs.c
18990--- linux-2.6.29.6/drivers/misc/ibmasm/ibmasmfs.c 2009-07-02 19:41:20.000000000 -0400 18909--- linux-2.6.30.4/drivers/misc/ibmasm/ibmasmfs.c 2009-07-24 17:47:51.000000000 -0400
18991+++ linux-2.6.29.6/drivers/misc/ibmasm/ibmasmfs.c 2009-07-23 18:40:27.864885246 -0400 18910+++ linux-2.6.30.4/drivers/misc/ibmasm/ibmasmfs.c 2009-07-30 09:48:10.036598829 -0400
18992@@ -97,7 +97,7 @@ static int ibmasmfs_get_super(struct fil 18911@@ -97,7 +97,7 @@ static int ibmasmfs_get_super(struct fil
18993 return get_sb_single(fst, flags, data, ibmasmfs_fill_super, mnt); 18912 return get_sb_single(fst, flags, data, ibmasmfs_fill_super, mnt);
18994 } 18913 }
@@ -18998,9 +18917,9 @@ diff -urNp linux-2.6.29.6/drivers/misc/ibmasm/ibmasmfs.c linux-2.6.29.6/drivers/
18998 .statfs = simple_statfs, 18917 .statfs = simple_statfs,
18999 .drop_inode = generic_delete_inode, 18918 .drop_inode = generic_delete_inode,
19000 }; 18919 };
19001diff -urNp linux-2.6.29.6/drivers/misc/phantom.c linux-2.6.29.6/drivers/misc/phantom.c 18920diff -urNp linux-2.6.30.4/drivers/misc/phantom.c linux-2.6.30.4/drivers/misc/phantom.c
19002--- linux-2.6.29.6/drivers/misc/phantom.c 2009-07-02 19:41:20.000000000 -0400 18921--- linux-2.6.30.4/drivers/misc/phantom.c 2009-07-24 17:47:51.000000000 -0400
19003+++ linux-2.6.29.6/drivers/misc/phantom.c 2009-07-23 18:40:27.874264006 -0400 18922+++ linux-2.6.30.4/drivers/misc/phantom.c 2009-07-30 09:48:10.037448258 -0400
19004@@ -271,7 +271,7 @@ static unsigned int phantom_poll(struct 18923@@ -271,7 +271,7 @@ static unsigned int phantom_poll(struct
19005 return mask; 18924 return mask;
19006 } 18925 }
@@ -19010,10 +18929,10 @@ diff -urNp linux-2.6.29.6/drivers/misc/phantom.c linux-2.6.29.6/drivers/misc/pha
19010 .open = phantom_open, 18929 .open = phantom_open,
19011 .release = phantom_release, 18930 .release = phantom_release,
19012 .unlocked_ioctl = phantom_ioctl, 18931 .unlocked_ioctl = phantom_ioctl,
19013diff -urNp linux-2.6.29.6/drivers/misc/sgi-gru/grufile.c linux-2.6.29.6/drivers/misc/sgi-gru/grufile.c 18932diff -urNp linux-2.6.30.4/drivers/misc/sgi-gru/grufile.c linux-2.6.30.4/drivers/misc/sgi-gru/grufile.c
19014--- linux-2.6.29.6/drivers/misc/sgi-gru/grufile.c 2009-07-02 19:41:20.000000000 -0400 18933--- linux-2.6.30.4/drivers/misc/sgi-gru/grufile.c 2009-07-24 17:47:51.000000000 -0400
19015+++ linux-2.6.29.6/drivers/misc/sgi-gru/grufile.c 2009-07-23 18:40:27.879624060 -0400 18934+++ linux-2.6.30.4/drivers/misc/sgi-gru/grufile.c 2009-07-30 17:46:03.273720317 -0400
19016@@ -63,7 +63,7 @@ struct gru_stats_s gru_stats; 18935@@ -53,7 +53,7 @@ struct gru_stats_s gru_stats;
19017 /* Guaranteed user available resources on each node */ 18936 /* Guaranteed user available resources on each node */
19018 static int max_user_cbrs, max_user_dsr_bytes; 18937 static int max_user_cbrs, max_user_dsr_bytes;
19019 18938
@@ -19022,7 +18941,7 @@ diff -urNp linux-2.6.29.6/drivers/misc/sgi-gru/grufile.c linux-2.6.29.6/drivers/
19022 static struct miscdevice gru_miscdev; 18941 static struct miscdevice gru_miscdev;
19023 18942
19024 18943
19025@@ -464,7 +464,7 @@ static void __exit gru_exit(void) 18944@@ -460,7 +460,7 @@ static void __exit gru_exit(void)
19026 gru_proc_exit(); 18945 gru_proc_exit();
19027 } 18946 }
19028 18947
@@ -19031,19 +18950,43 @@ diff -urNp linux-2.6.29.6/drivers/misc/sgi-gru/grufile.c linux-2.6.29.6/drivers/
19031 .owner = THIS_MODULE, 18950 .owner = THIS_MODULE,
19032 .unlocked_ioctl = gru_file_unlocked_ioctl, 18951 .unlocked_ioctl = gru_file_unlocked_ioctl,
19033 .mmap = gru_file_mmap, 18952 .mmap = gru_file_mmap,
19034@@ -476,7 +476,7 @@ static struct miscdevice gru_miscdev = { 18953@@ -472,7 +472,7 @@ static struct miscdevice gru_miscdev = {
19035 .fops = &gru_fops, 18954 .fops = &gru_fops,
19036 }; 18955 };
19037 18956
19038-struct vm_operations_struct gru_vm_ops = { 18957-struct vm_operations_struct gru_vm_ops = {
19039+struct const vm_operations_struct gru_vm_ops = { 18958+const struct vm_operations_struct gru_vm_ops = {
19040 .close = gru_vma_close, 18959 .close = gru_vma_close,
19041 .fault = gru_fault, 18960 .fault = gru_fault,
19042 }; 18961 };
19043diff -urNp linux-2.6.29.6/drivers/mtd/devices/doc2000.c linux-2.6.29.6/drivers/mtd/devices/doc2000.c 18962diff -urNp linux-2.6.30.4/drivers/misc/sgi-gru/grutables.h linux-2.6.30.4/drivers/misc/sgi-gru/grutables.h
19044--- linux-2.6.29.6/drivers/mtd/devices/doc2000.c 2009-07-02 19:41:20.000000000 -0400 18963--- linux-2.6.30.4/drivers/misc/sgi-gru/grutables.h 2009-07-24 17:47:51.000000000 -0400
19045+++ linux-2.6.29.6/drivers/mtd/devices/doc2000.c 2009-07-23 17:34:32.128864545 -0400 18964+++ linux-2.6.30.4/drivers/misc/sgi-gru/grutables.h 2009-07-30 17:46:28.013592240 -0400
19046@@ -777,7 +777,7 @@ static int doc_write(struct mtd_info *mt 18965@@ -589,7 +589,7 @@ static inline void unlock_tgh_handle(str
18966 */
18967 struct gru_unload_context_req;
18968
18969-extern struct vm_operations_struct gru_vm_ops;
18970+extern const struct vm_operations_struct gru_vm_ops;
18971 extern struct device *grudev;
18972
18973 extern struct gru_vma_data *gru_alloc_vma_data(struct vm_area_struct *vma,
18974diff -urNp linux-2.6.30.4/drivers/mmc/core/debugfs.c linux-2.6.30.4/drivers/mmc/core/debugfs.c
18975--- linux-2.6.30.4/drivers/mmc/core/debugfs.c 2009-07-24 17:47:51.000000000 -0400
18976+++ linux-2.6.30.4/drivers/mmc/core/debugfs.c 2009-07-30 12:06:52.113899680 -0400
18977@@ -240,7 +240,7 @@ static int mmc_ext_csd_release(struct in
18978 return 0;
18979 }
18980
18981-static struct file_operations mmc_dbg_ext_csd_fops = {
18982+static const struct file_operations mmc_dbg_ext_csd_fops = {
18983 .open = mmc_ext_csd_open,
18984 .read = mmc_ext_csd_read,
18985 .release = mmc_ext_csd_release,
18986diff -urNp linux-2.6.30.4/drivers/mtd/devices/doc2000.c linux-2.6.30.4/drivers/mtd/devices/doc2000.c
18987--- linux-2.6.30.4/drivers/mtd/devices/doc2000.c 2009-07-24 17:47:51.000000000 -0400
18988+++ linux-2.6.30.4/drivers/mtd/devices/doc2000.c 2009-07-30 09:48:10.037448258 -0400
18989@@ -776,7 +776,7 @@ static int doc_write(struct mtd_info *mt
19047 18990
19048 /* The ECC will not be calculated correctly if less than 512 is written */ 18991 /* The ECC will not be calculated correctly if less than 512 is written */
19049 /* DBB- 18992 /* DBB-
@@ -19052,10 +18995,10 @@ diff -urNp linux-2.6.29.6/drivers/mtd/devices/doc2000.c linux-2.6.29.6/drivers/m
19052 printk(KERN_WARNING 18995 printk(KERN_WARNING
19053 "ECC needs a full sector write (adr: %lx size %lx)\n", 18996 "ECC needs a full sector write (adr: %lx size %lx)\n",
19054 (long) to, (long) len); 18997 (long) to, (long) len);
19055diff -urNp linux-2.6.29.6/drivers/mtd/devices/doc2001.c linux-2.6.29.6/drivers/mtd/devices/doc2001.c 18998diff -urNp linux-2.6.30.4/drivers/mtd/devices/doc2001.c linux-2.6.30.4/drivers/mtd/devices/doc2001.c
19056--- linux-2.6.29.6/drivers/mtd/devices/doc2001.c 2009-07-02 19:41:20.000000000 -0400 18999--- linux-2.6.30.4/drivers/mtd/devices/doc2001.c 2009-07-24 17:47:51.000000000 -0400
19057+++ linux-2.6.29.6/drivers/mtd/devices/doc2001.c 2009-07-23 17:34:32.128864545 -0400 19000+++ linux-2.6.30.4/drivers/mtd/devices/doc2001.c 2009-07-30 11:10:49.040301758 -0400
19058@@ -396,6 +396,8 @@ static int doc_read (struct mtd_info *mt 19001@@ -395,6 +395,8 @@ static int doc_read (struct mtd_info *mt
19059 /* Don't allow read past end of device */ 19002 /* Don't allow read past end of device */
19060 if (from >= this->totlen) 19003 if (from >= this->totlen)
19061 return -EINVAL; 19004 return -EINVAL;
@@ -19064,9 +19007,9 @@ diff -urNp linux-2.6.29.6/drivers/mtd/devices/doc2001.c linux-2.6.29.6/drivers/m
19064 19007
19065 /* Don't allow a single read to cross a 512-byte block boundary */ 19008 /* Don't allow a single read to cross a 512-byte block boundary */
19066 if (from + len > ((from | 0x1ff) + 1)) 19009 if (from + len > ((from | 0x1ff) + 1))
19067diff -urNp linux-2.6.29.6/drivers/mtd/ubi/build.c linux-2.6.29.6/drivers/mtd/ubi/build.c 19010diff -urNp linux-2.6.30.4/drivers/mtd/ubi/build.c linux-2.6.30.4/drivers/mtd/ubi/build.c
19068--- linux-2.6.29.6/drivers/mtd/ubi/build.c 2009-07-02 19:41:20.000000000 -0400 19011--- linux-2.6.30.4/drivers/mtd/ubi/build.c 2009-07-24 17:47:51.000000000 -0400
19069+++ linux-2.6.29.6/drivers/mtd/ubi/build.c 2009-07-23 17:34:32.128864545 -0400 19012+++ linux-2.6.30.4/drivers/mtd/ubi/build.c 2009-07-30 09:48:10.038828720 -0400
19070@@ -1112,7 +1112,7 @@ static int __init bytes_str_to_int(const 19013@@ -1112,7 +1112,7 @@ static int __init bytes_str_to_int(const
19071 unsigned long result; 19014 unsigned long result;
19072 19015
@@ -19076,57 +19019,9 @@ diff -urNp linux-2.6.29.6/drivers/mtd/ubi/build.c linux-2.6.29.6/drivers/mtd/ubi
19076 printk(KERN_ERR "UBI error: incorrect bytes count: \"%s\"\n", 19019 printk(KERN_ERR "UBI error: incorrect bytes count: \"%s\"\n",
19077 str); 19020 str);
19078 return -EINVAL; 19021 return -EINVAL;
19079diff -urNp linux-2.6.29.6/drivers/net/bonding/bond_main.c linux-2.6.29.6/drivers/net/bonding/bond_main.c 19022diff -urNp linux-2.6.30.4/drivers/net/irda/vlsi_ir.c linux-2.6.30.4/drivers/net/irda/vlsi_ir.c
19080--- linux-2.6.29.6/drivers/net/bonding/bond_main.c 2009-07-02 19:41:20.000000000 -0400 19023--- linux-2.6.30.4/drivers/net/irda/vlsi_ir.c 2009-07-24 17:47:51.000000000 -0400
19081+++ linux-2.6.29.6/drivers/net/bonding/bond_main.c 2009-07-23 18:40:27.880597977 -0400 19024+++ linux-2.6.30.4/drivers/net/irda/vlsi_ir.c 2009-07-30 09:48:10.038828720 -0400
19082@@ -3368,7 +3368,7 @@ static int bond_info_seq_show(struct seq
19083 return 0;
19084 }
19085
19086-static struct seq_operations bond_info_seq_ops = {
19087+static const struct seq_operations bond_info_seq_ops = {
19088 .start = bond_info_seq_start,
19089 .next = bond_info_seq_next,
19090 .stop = bond_info_seq_stop,
19091diff -urNp linux-2.6.29.6/drivers/net/hamradio/bpqether.c linux-2.6.29.6/drivers/net/hamradio/bpqether.c
19092--- linux-2.6.29.6/drivers/net/hamradio/bpqether.c 2009-07-02 19:41:20.000000000 -0400
19093+++ linux-2.6.29.6/drivers/net/hamradio/bpqether.c 2009-07-23 18:40:27.886801730 -0400
19094@@ -454,7 +454,7 @@ static int bpq_seq_show(struct seq_file
19095 return 0;
19096 }
19097
19098-static struct seq_operations bpq_seqops = {
19099+static const struct seq_operations bpq_seqops = {
19100 .start = bpq_seq_start,
19101 .next = bpq_seq_next,
19102 .stop = bpq_seq_stop,
19103diff -urNp linux-2.6.29.6/drivers/net/hamradio/scc.c linux-2.6.29.6/drivers/net/hamradio/scc.c
19104--- linux-2.6.29.6/drivers/net/hamradio/scc.c 2009-07-02 19:41:20.000000000 -0400
19105+++ linux-2.6.29.6/drivers/net/hamradio/scc.c 2009-07-23 18:40:27.887355447 -0400
19106@@ -2073,7 +2073,7 @@ static int scc_net_seq_show(struct seq_f
19107 return 0;
19108 }
19109
19110-static struct seq_operations scc_net_seq_ops = {
19111+static const struct seq_operations scc_net_seq_ops = {
19112 .start = scc_net_seq_start,
19113 .next = scc_net_seq_next,
19114 .stop = scc_net_seq_stop,
19115diff -urNp linux-2.6.29.6/drivers/net/hamradio/yam.c linux-2.6.29.6/drivers/net/hamradio/yam.c
19116--- linux-2.6.29.6/drivers/net/hamradio/yam.c 2009-07-02 19:41:20.000000000 -0400
19117+++ linux-2.6.29.6/drivers/net/hamradio/yam.c 2009-07-23 18:40:27.889386996 -0400
19118@@ -787,7 +787,7 @@ static int yam_seq_show(struct seq_file
19119 return 0;
19120 }
19121
19122-static struct seq_operations yam_seqops = {
19123+static const struct seq_operations yam_seqops = {
19124 .start = yam_seq_start,
19125 .next = yam_seq_next,
19126 .stop = yam_seq_stop,
19127diff -urNp linux-2.6.29.6/drivers/net/irda/vlsi_ir.c linux-2.6.29.6/drivers/net/irda/vlsi_ir.c
19128--- linux-2.6.29.6/drivers/net/irda/vlsi_ir.c 2009-07-02 19:41:20.000000000 -0400
19129+++ linux-2.6.29.6/drivers/net/irda/vlsi_ir.c 2009-07-23 17:34:32.129778413 -0400
19130@@ -906,13 +906,12 @@ static int vlsi_hard_start_xmit(struct s 19025@@ -906,13 +906,12 @@ static int vlsi_hard_start_xmit(struct s
19131 /* no race - tx-ring already empty */ 19026 /* no race - tx-ring already empty */
19132 vlsi_set_baud(idev, iobase); 19027 vlsi_set_baud(idev, iobase);
@@ -19143,9 +19038,9 @@ diff -urNp linux-2.6.29.6/drivers/net/irda/vlsi_ir.c linux-2.6.29.6/drivers/net/
19143 spin_unlock_irqrestore(&idev->lock, flags); 19038 spin_unlock_irqrestore(&idev->lock, flags);
19144 dev_kfree_skb_any(skb); 19039 dev_kfree_skb_any(skb);
19145 return 0; 19040 return 0;
19146diff -urNp linux-2.6.29.6/drivers/net/pcnet32.c linux-2.6.29.6/drivers/net/pcnet32.c 19041diff -urNp linux-2.6.30.4/drivers/net/pcnet32.c linux-2.6.30.4/drivers/net/pcnet32.c
19147--- linux-2.6.29.6/drivers/net/pcnet32.c 2009-07-02 19:41:20.000000000 -0400 19042--- linux-2.6.30.4/drivers/net/pcnet32.c 2009-07-24 17:47:51.000000000 -0400
19148+++ linux-2.6.29.6/drivers/net/pcnet32.c 2009-07-23 17:34:32.129778413 -0400 19043+++ linux-2.6.30.4/drivers/net/pcnet32.c 2009-07-30 09:48:10.039525961 -0400
19149@@ -78,7 +78,7 @@ static int cards_found; 19044@@ -78,7 +78,7 @@ static int cards_found;
19150 /* 19045 /*
19151 * VLB I/O addresses 19046 * VLB I/O addresses
@@ -19155,42 +19050,9 @@ diff -urNp linux-2.6.29.6/drivers/net/pcnet32.c linux-2.6.29.6/drivers/net/pcnet
19155 { 0x300, 0x320, 0x340, 0x360, 0 }; 19050 { 0x300, 0x320, 0x340, 0x360, 0 };
19156 19051
19157 static int pcnet32_debug = 0; 19052 static int pcnet32_debug = 0;
19158diff -urNp linux-2.6.29.6/drivers/net/pppoe.c linux-2.6.29.6/drivers/net/pppoe.c 19053diff -urNp linux-2.6.30.4/drivers/net/tg3.h linux-2.6.30.4/drivers/net/tg3.h
19159--- linux-2.6.29.6/drivers/net/pppoe.c 2009-07-02 19:41:20.000000000 -0400 19054--- linux-2.6.30.4/drivers/net/tg3.h 2009-07-24 17:47:51.000000000 -0400
19160+++ linux-2.6.29.6/drivers/net/pppoe.c 2009-07-23 18:40:27.897571007 -0400 19055+++ linux-2.6.30.4/drivers/net/tg3.h 2009-07-30 09:48:10.040563677 -0400
19161@@ -1030,7 +1030,7 @@ static void pppoe_seq_stop(struct seq_fi
19162 read_unlock_bh(&pppoe_hash_lock);
19163 }
19164
19165-static struct seq_operations pppoe_seq_ops = {
19166+static const struct seq_operations pppoe_seq_ops = {
19167 .start = pppoe_seq_start,
19168 .next = pppoe_seq_next,
19169 .stop = pppoe_seq_stop,
19170diff -urNp linux-2.6.29.6/drivers/net/pppol2tp.c linux-2.6.29.6/drivers/net/pppol2tp.c
19171--- linux-2.6.29.6/drivers/net/pppol2tp.c 2009-07-02 19:41:20.000000000 -0400
19172+++ linux-2.6.29.6/drivers/net/pppol2tp.c 2009-07-23 18:40:27.913336405 -0400
19173@@ -2517,7 +2517,7 @@ out:
19174 return 0;
19175 }
19176
19177-static struct seq_operations pppol2tp_seq_ops = {
19178+static const struct seq_operations pppol2tp_seq_ops = {
19179 .start = pppol2tp_seq_start,
19180 .next = pppol2tp_seq_next,
19181 .stop = pppol2tp_seq_stop,
19182@@ -2565,7 +2565,7 @@ static int pppol2tp_proc_release(struct
19183 return seq_release(inode, file);
19184 }
19185
19186-static struct file_operations pppol2tp_proc_fops = {
19187+static const struct file_operations pppol2tp_proc_fops = {
19188 .owner = THIS_MODULE,
19189 .open = pppol2tp_proc_open,
19190 .read = seq_read,
19191diff -urNp linux-2.6.29.6/drivers/net/tg3.h linux-2.6.29.6/drivers/net/tg3.h
19192--- linux-2.6.29.6/drivers/net/tg3.h 2009-07-02 19:41:20.000000000 -0400
19193+++ linux-2.6.29.6/drivers/net/tg3.h 2009-07-23 17:34:32.130708691 -0400
19194@@ -89,6 +89,7 @@ 19056@@ -89,6 +89,7 @@
19195 #define CHIPREV_ID_5750_A0 0x4000 19057 #define CHIPREV_ID_5750_A0 0x4000
19196 #define CHIPREV_ID_5750_A1 0x4001 19058 #define CHIPREV_ID_5750_A1 0x4001
@@ -19199,46 +19061,10 @@ diff -urNp linux-2.6.29.6/drivers/net/tg3.h linux-2.6.29.6/drivers/net/tg3.h
19199 #define CHIPREV_ID_5750_C2 0x4202 19061 #define CHIPREV_ID_5750_C2 0x4202
19200 #define CHIPREV_ID_5752_A0_HW 0x5000 19062 #define CHIPREV_ID_5752_A0_HW 0x5000
19201 #define CHIPREV_ID_5752_A0 0x6000 19063 #define CHIPREV_ID_5752_A0 0x6000
19202diff -urNp linux-2.6.29.6/drivers/net/wireless/ath5k/debug.c linux-2.6.29.6/drivers/net/wireless/ath5k/debug.c 19064diff -urNp linux-2.6.30.4/drivers/oprofile/buffer_sync.c linux-2.6.30.4/drivers/oprofile/buffer_sync.c
19203--- linux-2.6.29.6/drivers/net/wireless/ath5k/debug.c 2009-07-02 19:41:20.000000000 -0400 19065--- linux-2.6.30.4/drivers/oprofile/buffer_sync.c 2009-07-24 17:47:51.000000000 -0400
19204+++ linux-2.6.29.6/drivers/net/wireless/ath5k/debug.c 2009-07-23 18:40:27.920274556 -0400 19066+++ linux-2.6.30.4/drivers/oprofile/buffer_sync.c 2009-07-30 09:48:10.040563677 -0400
19205@@ -165,7 +165,7 @@ static int reg_show(struct seq_file *seq 19067@@ -341,7 +341,7 @@ static void add_data(struct op_entry *en
19206 return 0;
19207 }
19208
19209-static struct seq_operations register_seq_ops = {
19210+static const struct seq_operations register_seq_ops = {
19211 .start = reg_start,
19212 .next = reg_next,
19213 .stop = reg_stop,
19214diff -urNp linux-2.6.29.6/drivers/net/wireless/libertas/debugfs.c linux-2.6.29.6/drivers/net/wireless/libertas/debugfs.c
19215--- linux-2.6.29.6/drivers/net/wireless/libertas/debugfs.c 2009-07-02 19:41:20.000000000 -0400
19216+++ linux-2.6.29.6/drivers/net/wireless/libertas/debugfs.c 2009-07-23 18:40:27.933357619 -0400
19217@@ -938,7 +938,7 @@ static ssize_t lbs_debugfs_write(struct
19218 return (ssize_t)cnt;
19219 }
19220
19221-static struct file_operations lbs_debug_fops = {
19222+static const struct file_operations lbs_debug_fops = {
19223 .owner = THIS_MODULE,
19224 .open = open_file_generic,
19225 .write = lbs_debugfs_write,
19226diff -urNp linux-2.6.29.6/drivers/net/wireless/strip.c linux-2.6.29.6/drivers/net/wireless/strip.c
19227--- linux-2.6.29.6/drivers/net/wireless/strip.c 2009-07-02 19:41:20.000000000 -0400
19228+++ linux-2.6.29.6/drivers/net/wireless/strip.c 2009-07-23 18:40:27.958265010 -0400
19229@@ -1125,7 +1125,7 @@ static int strip_seq_show(struct seq_fil
19230 }
19231
19232
19233-static struct seq_operations strip_seq_ops = {
19234+static const struct seq_operations strip_seq_ops = {
19235 .start = strip_seq_start,
19236 .next = strip_seq_next,
19237 .stop = strip_seq_stop,
19238diff -urNp linux-2.6.29.6/drivers/oprofile/buffer_sync.c linux-2.6.29.6/drivers/oprofile/buffer_sync.c
19239--- linux-2.6.29.6/drivers/oprofile/buffer_sync.c 2009-07-02 19:41:20.000000000 -0400
19240+++ linux-2.6.29.6/drivers/oprofile/buffer_sync.c 2009-07-23 17:34:32.130708691 -0400
19241@@ -335,7 +335,7 @@ static void add_data(struct op_entry *en
19242 if (cookie == NO_COOKIE) 19068 if (cookie == NO_COOKIE)
19243 offset = pc; 19069 offset = pc;
19244 if (cookie == INVALID_COOKIE) { 19070 if (cookie == INVALID_COOKIE) {
@@ -19247,7 +19073,7 @@ diff -urNp linux-2.6.29.6/drivers/oprofile/buffer_sync.c linux-2.6.29.6/drivers/
19247 offset = pc; 19073 offset = pc;
19248 } 19074 }
19249 if (cookie != last_cookie) { 19075 if (cookie != last_cookie) {
19250@@ -379,14 +379,14 @@ add_sample(struct mm_struct *mm, struct 19076@@ -385,14 +385,14 @@ add_sample(struct mm_struct *mm, struct
19251 /* add userspace sample */ 19077 /* add userspace sample */
19252 19078
19253 if (!mm) { 19079 if (!mm) {
@@ -19264,7 +19090,7 @@ diff -urNp linux-2.6.29.6/drivers/oprofile/buffer_sync.c linux-2.6.29.6/drivers/
19264 return 0; 19090 return 0;
19265 } 19091 }
19266 19092
19267@@ -555,7 +555,7 @@ void sync_buffer(int cpu) 19093@@ -561,7 +561,7 @@ void sync_buffer(int cpu)
19268 /* ignore backtraces if failed to add a sample */ 19094 /* ignore backtraces if failed to add a sample */
19269 if (state == sb_bt_start) { 19095 if (state == sb_bt_start) {
19270 state = sb_bt_ignore; 19096 state = sb_bt_ignore;
@@ -19273,9 +19099,9 @@ diff -urNp linux-2.6.29.6/drivers/oprofile/buffer_sync.c linux-2.6.29.6/drivers/
19273 } 19099 }
19274 } 19100 }
19275 release_mm(mm); 19101 release_mm(mm);
19276diff -urNp linux-2.6.29.6/drivers/oprofile/event_buffer.c linux-2.6.29.6/drivers/oprofile/event_buffer.c 19102diff -urNp linux-2.6.30.4/drivers/oprofile/event_buffer.c linux-2.6.30.4/drivers/oprofile/event_buffer.c
19277--- linux-2.6.29.6/drivers/oprofile/event_buffer.c 2009-07-02 19:41:20.000000000 -0400 19103--- linux-2.6.30.4/drivers/oprofile/event_buffer.c 2009-07-24 17:47:51.000000000 -0400
19278+++ linux-2.6.29.6/drivers/oprofile/event_buffer.c 2009-07-23 17:34:32.130708691 -0400 19104+++ linux-2.6.30.4/drivers/oprofile/event_buffer.c 2009-07-30 09:48:10.040563677 -0400
19279@@ -42,7 +42,7 @@ static atomic_t buffer_ready = ATOMIC_IN 19105@@ -42,7 +42,7 @@ static atomic_t buffer_ready = ATOMIC_IN
19280 void add_event_entry(unsigned long value) 19106 void add_event_entry(unsigned long value)
19281 { 19107 {
@@ -19285,9 +19111,9 @@ diff -urNp linux-2.6.29.6/drivers/oprofile/event_buffer.c linux-2.6.29.6/drivers
19285 return; 19111 return;
19286 } 19112 }
19287 19113
19288diff -urNp linux-2.6.29.6/drivers/oprofile/oprofilefs.c linux-2.6.29.6/drivers/oprofile/oprofilefs.c 19114diff -urNp linux-2.6.30.4/drivers/oprofile/oprofilefs.c linux-2.6.30.4/drivers/oprofile/oprofilefs.c
19289--- linux-2.6.29.6/drivers/oprofile/oprofilefs.c 2009-07-02 19:41:20.000000000 -0400 19115--- linux-2.6.30.4/drivers/oprofile/oprofilefs.c 2009-07-24 17:47:51.000000000 -0400
19290+++ linux-2.6.29.6/drivers/oprofile/oprofilefs.c 2009-07-23 18:40:27.469277997 -0400 19116+++ linux-2.6.30.4/drivers/oprofile/oprofilefs.c 2009-07-30 09:48:10.043540480 -0400
19291@@ -35,7 +35,7 @@ static struct inode *oprofilefs_get_inod 19117@@ -35,7 +35,7 @@ static struct inode *oprofilefs_get_inod
19292 } 19118 }
19293 19119
@@ -19306,9 +19132,9 @@ diff -urNp linux-2.6.29.6/drivers/oprofile/oprofilefs.c linux-2.6.29.6/drivers/o
19306 { 19132 {
19307 struct dentry *d = __oprofilefs_create_file(sb, root, name, 19133 struct dentry *d = __oprofilefs_create_file(sb, root, name,
19308 &atomic_ro_fops, 0444); 19134 &atomic_ro_fops, 0444);
19309diff -urNp linux-2.6.29.6/drivers/oprofile/oprofile_stats.h linux-2.6.29.6/drivers/oprofile/oprofile_stats.h 19135diff -urNp linux-2.6.30.4/drivers/oprofile/oprofile_stats.h linux-2.6.30.4/drivers/oprofile/oprofile_stats.h
19310--- linux-2.6.29.6/drivers/oprofile/oprofile_stats.h 2009-07-02 19:41:20.000000000 -0400 19136--- linux-2.6.30.4/drivers/oprofile/oprofile_stats.h 2009-07-24 17:47:51.000000000 -0400
19311+++ linux-2.6.29.6/drivers/oprofile/oprofile_stats.h 2009-07-23 17:34:32.131798606 -0400 19137+++ linux-2.6.30.4/drivers/oprofile/oprofile_stats.h 2009-07-30 09:48:10.043540480 -0400
19312@@ -13,10 +13,10 @@ 19138@@ -13,10 +13,10 @@
19313 #include <asm/atomic.h> 19139 #include <asm/atomic.h>
19314 19140
@@ -19324,9 +19150,9 @@ diff -urNp linux-2.6.29.6/drivers/oprofile/oprofile_stats.h linux-2.6.29.6/drive
19324 }; 19150 };
19325 19151
19326 extern struct oprofile_stat_struct oprofile_stats; 19152 extern struct oprofile_stat_struct oprofile_stats;
19327diff -urNp linux-2.6.29.6/drivers/pci/hotplug/cpqphp.h linux-2.6.29.6/drivers/pci/hotplug/cpqphp.h 19153diff -urNp linux-2.6.30.4/drivers/pci/hotplug/cpqphp.h linux-2.6.30.4/drivers/pci/hotplug/cpqphp.h
19328--- linux-2.6.29.6/drivers/pci/hotplug/cpqphp.h 2009-07-02 19:41:20.000000000 -0400 19154--- linux-2.6.30.4/drivers/pci/hotplug/cpqphp.h 2009-07-24 17:47:51.000000000 -0400
19329+++ linux-2.6.29.6/drivers/pci/hotplug/cpqphp.h 2009-07-23 18:40:27.972087415 -0400 19155+++ linux-2.6.30.4/drivers/pci/hotplug/cpqphp.h 2009-07-30 09:48:10.043540480 -0400
19330@@ -449,7 +449,7 @@ extern u8 cpqhp_disk_irq; 19156@@ -449,7 +449,7 @@ extern u8 cpqhp_disk_irq;
19331 19157
19332 /* inline functions */ 19158 /* inline functions */
@@ -19336,9 +19162,9 @@ diff -urNp linux-2.6.29.6/drivers/pci/hotplug/cpqphp.h linux-2.6.29.6/drivers/pc
19336 { 19162 {
19337 return hotplug_slot_name(slot->hotplug_slot); 19163 return hotplug_slot_name(slot->hotplug_slot);
19338 } 19164 }
19339diff -urNp linux-2.6.29.6/drivers/pci/hotplug/cpqphp_nvram.c linux-2.6.29.6/drivers/pci/hotplug/cpqphp_nvram.c 19165diff -urNp linux-2.6.30.4/drivers/pci/hotplug/cpqphp_nvram.c linux-2.6.30.4/drivers/pci/hotplug/cpqphp_nvram.c
19340--- linux-2.6.29.6/drivers/pci/hotplug/cpqphp_nvram.c 2009-07-02 19:41:20.000000000 -0400 19166--- linux-2.6.30.4/drivers/pci/hotplug/cpqphp_nvram.c 2009-07-24 17:47:51.000000000 -0400
19341+++ linux-2.6.29.6/drivers/pci/hotplug/cpqphp_nvram.c 2009-07-23 17:34:32.131798606 -0400 19167+++ linux-2.6.30.4/drivers/pci/hotplug/cpqphp_nvram.c 2009-07-30 09:48:10.043540480 -0400
19342@@ -425,9 +425,13 @@ static u32 store_HRT (void __iomem *rom_ 19168@@ -425,9 +425,13 @@ static u32 store_HRT (void __iomem *rom_
19343 19169
19344 void compaq_nvram_init (void __iomem *rom_start) 19170 void compaq_nvram_init (void __iomem *rom_start)
@@ -19353,21 +19179,9 @@ diff -urNp linux-2.6.29.6/drivers/pci/hotplug/cpqphp_nvram.c linux-2.6.29.6/driv
19353 dbg("int15 entry = %p\n", compaq_int15_entry_point); 19179 dbg("int15 entry = %p\n", compaq_int15_entry_point);
19354 19180
19355 /* initialize our int15 lock */ 19181 /* initialize our int15 lock */
19356diff -urNp linux-2.6.29.6/drivers/pci/pcie/aer/aerdrv.c linux-2.6.29.6/drivers/pci/pcie/aer/aerdrv.c 19182diff -urNp linux-2.6.30.4/drivers/pci/pcie/aer/aerdrv_core.c linux-2.6.30.4/drivers/pci/pcie/aer/aerdrv_core.c
19357--- linux-2.6.29.6/drivers/pci/pcie/aer/aerdrv.c 2009-07-02 19:41:20.000000000 -0400 19183--- linux-2.6.30.4/drivers/pci/pcie/aer/aerdrv_core.c 2009-07-24 17:47:51.000000000 -0400
19358+++ linux-2.6.29.6/drivers/pci/pcie/aer/aerdrv.c 2009-07-23 17:34:32.131798606 -0400 19184+++ linux-2.6.30.4/drivers/pci/pcie/aer/aerdrv_core.c 2009-07-30 09:48:10.044753152 -0400
19359@@ -59,7 +59,7 @@ static struct pcie_port_service_id aer_i
19360 .port_type = PCIE_RC_PORT,
19361 .service_type = PCIE_PORT_SERVICE_AER,
19362 },
19363- { /* end: all zeroes */ }
19364+ { 0, 0, 0, 0, 0, 0, 0, 0, 0 }
19365 };
19366
19367 static struct pci_error_handlers aer_error_handlers = {
19368diff -urNp linux-2.6.29.6/drivers/pci/pcie/aer/aerdrv_core.c linux-2.6.29.6/drivers/pci/pcie/aer/aerdrv_core.c
19369--- linux-2.6.29.6/drivers/pci/pcie/aer/aerdrv_core.c 2009-07-02 19:41:20.000000000 -0400
19370+++ linux-2.6.29.6/drivers/pci/pcie/aer/aerdrv_core.c 2009-07-23 17:34:32.132779386 -0400
19371@@ -670,7 +670,7 @@ static void aer_isr_one_error(struct pci 19185@@ -670,7 +670,7 @@ static void aer_isr_one_error(struct pci
19372 struct aer_err_source *e_src) 19186 struct aer_err_source *e_src)
19373 { 19187 {
@@ -19377,10 +19191,10 @@ diff -urNp linux-2.6.29.6/drivers/pci/pcie/aer/aerdrv_core.c linux-2.6.29.6/driv
19377 int i; 19191 int i;
19378 u16 id; 19192 u16 id;
19379 19193
19380diff -urNp linux-2.6.29.6/drivers/pci/pcie/portdrv_pci.c linux-2.6.29.6/drivers/pci/pcie/portdrv_pci.c 19194diff -urNp linux-2.6.30.4/drivers/pci/pcie/portdrv_pci.c linux-2.6.30.4/drivers/pci/pcie/portdrv_pci.c
19381--- linux-2.6.29.6/drivers/pci/pcie/portdrv_pci.c 2009-07-02 19:41:20.000000000 -0400 19195--- linux-2.6.30.4/drivers/pci/pcie/portdrv_pci.c 2009-07-24 17:47:51.000000000 -0400
19382+++ linux-2.6.29.6/drivers/pci/pcie/portdrv_pci.c 2009-07-23 17:34:32.132779386 -0400 19196+++ linux-2.6.30.4/drivers/pci/pcie/portdrv_pci.c 2009-07-30 09:48:10.044753152 -0400
19383@@ -260,7 +260,7 @@ static void pcie_portdrv_err_resume(stru 19197@@ -249,7 +249,7 @@ static void pcie_portdrv_err_resume(stru
19384 static const struct pci_device_id port_pci_ids[] = { { 19198 static const struct pci_device_id port_pci_ids[] = { {
19385 /* handle any PCI-Express port */ 19199 /* handle any PCI-Express port */
19386 PCI_DEVICE_CLASS(((PCI_CLASS_BRIDGE_PCI << 8) | 0x00), ~0), 19200 PCI_DEVICE_CLASS(((PCI_CLASS_BRIDGE_PCI << 8) | 0x00), ~0),
@@ -19389,9 +19203,9 @@ diff -urNp linux-2.6.29.6/drivers/pci/pcie/portdrv_pci.c linux-2.6.29.6/drivers/
19389 }; 19203 };
19390 MODULE_DEVICE_TABLE(pci, port_pci_ids); 19204 MODULE_DEVICE_TABLE(pci, port_pci_ids);
19391 19205
19392diff -urNp linux-2.6.29.6/drivers/pci/proc.c linux-2.6.29.6/drivers/pci/proc.c 19206diff -urNp linux-2.6.30.4/drivers/pci/proc.c linux-2.6.30.4/drivers/pci/proc.c
19393--- linux-2.6.29.6/drivers/pci/proc.c 2009-07-02 19:41:20.000000000 -0400 19207--- linux-2.6.30.4/drivers/pci/proc.c 2009-07-24 17:47:51.000000000 -0400
19394+++ linux-2.6.29.6/drivers/pci/proc.c 2009-07-23 17:34:32.132779386 -0400 19208+++ linux-2.6.30.4/drivers/pci/proc.c 2009-07-30 11:10:49.067392504 -0400
19395@@ -480,7 +480,16 @@ static const struct file_operations proc 19209@@ -480,7 +480,16 @@ static const struct file_operations proc
19396 static int __init pci_proc_init(void) 19210 static int __init pci_proc_init(void)
19397 { 19211 {
@@ -19409,9 +19223,9 @@ diff -urNp linux-2.6.29.6/drivers/pci/proc.c linux-2.6.29.6/drivers/pci/proc.c
19409 proc_create("devices", 0, proc_bus_pci_dir, 19223 proc_create("devices", 0, proc_bus_pci_dir,
19410 &proc_bus_pci_dev_operations); 19224 &proc_bus_pci_dev_operations);
19411 proc_initialized = 1; 19225 proc_initialized = 1;
19412diff -urNp linux-2.6.29.6/drivers/pcmcia/ti113x.h linux-2.6.29.6/drivers/pcmcia/ti113x.h 19226diff -urNp linux-2.6.30.4/drivers/pcmcia/ti113x.h linux-2.6.30.4/drivers/pcmcia/ti113x.h
19413--- linux-2.6.29.6/drivers/pcmcia/ti113x.h 2009-07-02 19:41:20.000000000 -0400 19227--- linux-2.6.30.4/drivers/pcmcia/ti113x.h 2009-07-24 17:47:51.000000000 -0400
19414+++ linux-2.6.29.6/drivers/pcmcia/ti113x.h 2009-07-23 17:34:32.132779386 -0400 19228+++ linux-2.6.30.4/drivers/pcmcia/ti113x.h 2009-07-30 09:48:10.044753152 -0400
19415@@ -903,7 +903,7 @@ static struct pci_device_id ene_tune_tbl 19229@@ -903,7 +903,7 @@ static struct pci_device_id ene_tune_tbl
19416 DEVID(PCI_VENDOR_ID_MOTOROLA, 0x3410, 0xECC0, PCI_ANY_ID, 19230 DEVID(PCI_VENDOR_ID_MOTOROLA, 0x3410, 0xECC0, PCI_ANY_ID,
19417 ENE_TEST_C9_TLTENABLE | ENE_TEST_C9_PFENABLE, ENE_TEST_C9_TLTENABLE), 19231 ENE_TEST_C9_TLTENABLE | ENE_TEST_C9_PFENABLE, ENE_TEST_C9_TLTENABLE),
@@ -19421,9 +19235,9 @@ diff -urNp linux-2.6.29.6/drivers/pcmcia/ti113x.h linux-2.6.29.6/drivers/pcmcia/
19421 }; 19235 };
19422 19236
19423 static void ene_tune_bridge(struct pcmcia_socket *sock, struct pci_bus *bus) 19237 static void ene_tune_bridge(struct pcmcia_socket *sock, struct pci_bus *bus)
19424diff -urNp linux-2.6.29.6/drivers/pcmcia/yenta_socket.c linux-2.6.29.6/drivers/pcmcia/yenta_socket.c 19238diff -urNp linux-2.6.30.4/drivers/pcmcia/yenta_socket.c linux-2.6.30.4/drivers/pcmcia/yenta_socket.c
19425--- linux-2.6.29.6/drivers/pcmcia/yenta_socket.c 2009-07-02 19:41:20.000000000 -0400 19239--- linux-2.6.30.4/drivers/pcmcia/yenta_socket.c 2009-07-24 17:47:51.000000000 -0400
19426+++ linux-2.6.29.6/drivers/pcmcia/yenta_socket.c 2009-07-23 17:34:32.133745041 -0400 19240+++ linux-2.6.30.4/drivers/pcmcia/yenta_socket.c 2009-07-30 09:48:10.045642944 -0400
19427@@ -1366,7 +1366,7 @@ static struct pci_device_id yenta_table 19241@@ -1366,7 +1366,7 @@ static struct pci_device_id yenta_table
19428 19242
19429 /* match any cardbus bridge */ 19243 /* match any cardbus bridge */
@@ -19433,9 +19247,9 @@ diff -urNp linux-2.6.29.6/drivers/pcmcia/yenta_socket.c linux-2.6.29.6/drivers/p
19433 }; 19247 };
19434 MODULE_DEVICE_TABLE(pci, yenta_table); 19248 MODULE_DEVICE_TABLE(pci, yenta_table);
19435 19249
19436diff -urNp linux-2.6.29.6/drivers/pnp/pnpbios/bioscalls.c linux-2.6.29.6/drivers/pnp/pnpbios/bioscalls.c 19250diff -urNp linux-2.6.30.4/drivers/pnp/pnpbios/bioscalls.c linux-2.6.30.4/drivers/pnp/pnpbios/bioscalls.c
19437--- linux-2.6.29.6/drivers/pnp/pnpbios/bioscalls.c 2009-07-02 19:41:20.000000000 -0400 19251--- linux-2.6.30.4/drivers/pnp/pnpbios/bioscalls.c 2009-07-24 17:47:51.000000000 -0400
19438+++ linux-2.6.29.6/drivers/pnp/pnpbios/bioscalls.c 2009-07-23 17:34:32.133745041 -0400 19252+++ linux-2.6.30.4/drivers/pnp/pnpbios/bioscalls.c 2009-07-30 09:48:10.045642944 -0400
19439@@ -60,7 +60,7 @@ set_base(gdt[(selname) >> 3], (u32)(addr 19253@@ -60,7 +60,7 @@ set_base(gdt[(selname) >> 3], (u32)(addr
19440 set_limit(gdt[(selname) >> 3], size); \ 19254 set_limit(gdt[(selname) >> 3], size); \
19441 } while(0) 19255 } while(0)
@@ -19528,9 +19342,9 @@ diff -urNp linux-2.6.29.6/drivers/pnp/pnpbios/bioscalls.c linux-2.6.29.6/drivers
19528+#endif 19342+#endif
19529+ 19343+
19530 } 19344 }
19531diff -urNp linux-2.6.29.6/drivers/pnp/quirks.c linux-2.6.29.6/drivers/pnp/quirks.c 19345diff -urNp linux-2.6.30.4/drivers/pnp/quirks.c linux-2.6.30.4/drivers/pnp/quirks.c
19532--- linux-2.6.29.6/drivers/pnp/quirks.c 2009-07-02 19:41:20.000000000 -0400 19346--- linux-2.6.30.4/drivers/pnp/quirks.c 2009-07-24 17:47:51.000000000 -0400
19533+++ linux-2.6.29.6/drivers/pnp/quirks.c 2009-07-23 17:34:32.133745041 -0400 19347+++ linux-2.6.30.4/drivers/pnp/quirks.c 2009-07-30 09:48:10.045642944 -0400
19534@@ -327,7 +327,7 @@ static struct pnp_fixup pnp_fixups[] = { 19348@@ -327,7 +327,7 @@ static struct pnp_fixup pnp_fixups[] = {
19535 /* PnP resources that might overlap PCI BARs */ 19349 /* PnP resources that might overlap PCI BARs */
19536 {"PNP0c01", quirk_system_pci_resources}, 19350 {"PNP0c01", quirk_system_pci_resources},
@@ -19540,9 +19354,9 @@ diff -urNp linux-2.6.29.6/drivers/pnp/quirks.c linux-2.6.29.6/drivers/pnp/quirks
19540 }; 19354 };
19541 19355
19542 void pnp_fixup_device(struct pnp_dev *dev) 19356 void pnp_fixup_device(struct pnp_dev *dev)
19543diff -urNp linux-2.6.29.6/drivers/pnp/resource.c linux-2.6.29.6/drivers/pnp/resource.c 19357diff -urNp linux-2.6.30.4/drivers/pnp/resource.c linux-2.6.30.4/drivers/pnp/resource.c
19544--- linux-2.6.29.6/drivers/pnp/resource.c 2009-07-02 19:41:20.000000000 -0400 19358--- linux-2.6.30.4/drivers/pnp/resource.c 2009-07-24 17:47:51.000000000 -0400
19545+++ linux-2.6.29.6/drivers/pnp/resource.c 2009-07-23 17:34:32.133745041 -0400 19359+++ linux-2.6.30.4/drivers/pnp/resource.c 2009-07-30 09:48:10.045642944 -0400
19546@@ -355,7 +355,7 @@ int pnp_check_irq(struct pnp_dev *dev, s 19360@@ -355,7 +355,7 @@ int pnp_check_irq(struct pnp_dev *dev, s
19547 return 1; 19361 return 1;
19548 19362
@@ -19561,10 +19375,10 @@ diff -urNp linux-2.6.29.6/drivers/pnp/resource.c linux-2.6.29.6/drivers/pnp/reso
19561 return 0; 19375 return 0;
19562 19376
19563 /* check if the resource is reserved */ 19377 /* check if the resource is reserved */
19564diff -urNp linux-2.6.29.6/drivers/s390/cio/qdio_debug.c linux-2.6.29.6/drivers/s390/cio/qdio_debug.c 19378diff -urNp linux-2.6.30.4/drivers/s390/cio/qdio_debug.c linux-2.6.30.4/drivers/s390/cio/qdio_debug.c
19565--- linux-2.6.29.6/drivers/s390/cio/qdio_debug.c 2009-07-02 19:41:20.000000000 -0400 19379--- linux-2.6.30.4/drivers/s390/cio/qdio_debug.c 2009-07-24 17:47:51.000000000 -0400
19566+++ linux-2.6.29.6/drivers/s390/cio/qdio_debug.c 2009-07-23 18:40:27.977694137 -0400 19380+++ linux-2.6.30.4/drivers/s390/cio/qdio_debug.c 2009-07-30 09:48:10.046735063 -0400
19567@@ -144,7 +144,7 @@ static void remove_debugfs_entry(struct 19381@@ -145,7 +145,7 @@ static void remove_debugfs_entry(struct
19568 } 19382 }
19569 } 19383 }
19570 19384
@@ -19573,9 +19387,9 @@ diff -urNp linux-2.6.29.6/drivers/s390/cio/qdio_debug.c linux-2.6.29.6/drivers/s
19573 .owner = THIS_MODULE, 19387 .owner = THIS_MODULE,
19574 .open = qstat_seq_open, 19388 .open = qstat_seq_open,
19575 .read = seq_read, 19389 .read = seq_read,
19576diff -urNp linux-2.6.29.6/drivers/s390/cio/qdio_perf.c linux-2.6.29.6/drivers/s390/cio/qdio_perf.c 19390diff -urNp linux-2.6.30.4/drivers/s390/cio/qdio_perf.c linux-2.6.30.4/drivers/s390/cio/qdio_perf.c
19577--- linux-2.6.29.6/drivers/s390/cio/qdio_perf.c 2009-07-02 19:41:20.000000000 -0400 19391--- linux-2.6.30.4/drivers/s390/cio/qdio_perf.c 2009-07-24 17:47:51.000000000 -0400
19578+++ linux-2.6.29.6/drivers/s390/cio/qdio_perf.c 2009-07-23 18:40:27.982430466 -0400 19392+++ linux-2.6.30.4/drivers/s390/cio/qdio_perf.c 2009-07-30 09:48:10.046735063 -0400
19579@@ -96,7 +96,7 @@ static int qdio_perf_seq_open(struct ino 19393@@ -96,7 +96,7 @@ static int qdio_perf_seq_open(struct ino
19580 return single_open(filp, qdio_perf_proc_show, NULL); 19394 return single_open(filp, qdio_perf_proc_show, NULL);
19581 } 19395 }
@@ -19585,9 +19399,9 @@ diff -urNp linux-2.6.29.6/drivers/s390/cio/qdio_perf.c linux-2.6.29.6/drivers/s3
19585 .owner = THIS_MODULE, 19399 .owner = THIS_MODULE,
19586 .open = qdio_perf_seq_open, 19400 .open = qdio_perf_seq_open,
19587 .read = seq_read, 19401 .read = seq_read,
19588diff -urNp linux-2.6.29.6/drivers/scsi/libfc/fc_exch.c linux-2.6.29.6/drivers/scsi/libfc/fc_exch.c 19402diff -urNp linux-2.6.30.4/drivers/scsi/libfc/fc_exch.c linux-2.6.30.4/drivers/scsi/libfc/fc_exch.c
19589--- linux-2.6.29.6/drivers/scsi/libfc/fc_exch.c 2009-07-02 19:41:20.000000000 -0400 19403--- linux-2.6.30.4/drivers/scsi/libfc/fc_exch.c 2009-07-24 17:47:51.000000000 -0400
19590+++ linux-2.6.29.6/drivers/scsi/libfc/fc_exch.c 2009-07-23 17:34:32.134722055 -0400 19404+++ linux-2.6.30.4/drivers/scsi/libfc/fc_exch.c 2009-07-30 09:48:10.047458850 -0400
19591@@ -84,12 +84,12 @@ struct fc_exch_mgr { 19405@@ -84,12 +84,12 @@ struct fc_exch_mgr {
19592 * all together if not used XXX 19406 * all together if not used XXX
19593 */ 19407 */
@@ -19705,84 +19519,9 @@ diff -urNp linux-2.6.29.6/drivers/scsi/libfc/fc_exch.c linux-2.6.29.6/drivers/sc
19705 FC_DEBUG_EXCH("non-BLS response to sequence"); 19519 FC_DEBUG_EXCH("non-BLS response to sequence");
19706 } 19520 }
19707 fc_frame_free(fp); 19521 fc_frame_free(fp);
19708diff -urNp linux-2.6.29.6/drivers/scsi/lpfc/lpfc_debugfs.c linux-2.6.29.6/drivers/scsi/lpfc/lpfc_debugfs.c 19522diff -urNp linux-2.6.30.4/drivers/scsi/scsi_logging.h linux-2.6.30.4/drivers/scsi/scsi_logging.h
19709--- linux-2.6.29.6/drivers/scsi/lpfc/lpfc_debugfs.c 2009-07-02 19:41:20.000000000 -0400 19523--- linux-2.6.30.4/drivers/scsi/scsi_logging.h 2009-07-24 17:47:51.000000000 -0400
19710+++ linux-2.6.29.6/drivers/scsi/lpfc/lpfc_debugfs.c 2009-07-23 18:40:27.982430466 -0400 19524+++ linux-2.6.30.4/drivers/scsi/scsi_logging.h 2009-07-30 09:48:10.047458850 -0400
19711@@ -1132,7 +1132,7 @@ lpfc_debugfs_dumpDataDif_release(struct
19712 }
19713
19714 #undef lpfc_debugfs_op_disc_trc
19715-static struct file_operations lpfc_debugfs_op_disc_trc = {
19716+static const struct file_operations lpfc_debugfs_op_disc_trc = {
19717 .owner = THIS_MODULE,
19718 .open = lpfc_debugfs_disc_trc_open,
19719 .llseek = lpfc_debugfs_lseek,
19720@@ -1141,7 +1141,7 @@ static struct file_operations lpfc_debug
19721 };
19722
19723 #undef lpfc_debugfs_op_nodelist
19724-static struct file_operations lpfc_debugfs_op_nodelist = {
19725+static const struct file_operations lpfc_debugfs_op_nodelist = {
19726 .owner = THIS_MODULE,
19727 .open = lpfc_debugfs_nodelist_open,
19728 .llseek = lpfc_debugfs_lseek,
19729@@ -1150,7 +1150,7 @@ static struct file_operations lpfc_debug
19730 };
19731
19732 #undef lpfc_debugfs_op_hbqinfo
19733-static struct file_operations lpfc_debugfs_op_hbqinfo = {
19734+static const struct file_operations lpfc_debugfs_op_hbqinfo = {
19735 .owner = THIS_MODULE,
19736 .open = lpfc_debugfs_hbqinfo_open,
19737 .llseek = lpfc_debugfs_lseek,
19738@@ -1159,7 +1159,7 @@ static struct file_operations lpfc_debug
19739 };
19740
19741 #undef lpfc_debugfs_op_dumpHBASlim
19742-static struct file_operations lpfc_debugfs_op_dumpHBASlim = {
19743+static const struct file_operations lpfc_debugfs_op_dumpHBASlim = {
19744 .owner = THIS_MODULE,
19745 .open = lpfc_debugfs_dumpHBASlim_open,
19746 .llseek = lpfc_debugfs_lseek,
19747@@ -1168,7 +1168,7 @@ static struct file_operations lpfc_debug
19748 };
19749
19750 #undef lpfc_debugfs_op_dumpHostSlim
19751-static struct file_operations lpfc_debugfs_op_dumpHostSlim = {
19752+static const struct file_operations lpfc_debugfs_op_dumpHostSlim = {
19753 .owner = THIS_MODULE,
19754 .open = lpfc_debugfs_dumpHostSlim_open,
19755 .llseek = lpfc_debugfs_lseek,
19756@@ -1177,7 +1177,7 @@ static struct file_operations lpfc_debug
19757 };
19758
19759 #undef lpfc_debugfs_op_dumpData
19760-static struct file_operations lpfc_debugfs_op_dumpData = {
19761+static const struct file_operations lpfc_debugfs_op_dumpData = {
19762 .owner = THIS_MODULE,
19763 .open = lpfc_debugfs_dumpData_open,
19764 .llseek = lpfc_debugfs_lseek,
19765@@ -1187,7 +1187,7 @@ static struct file_operations lpfc_debug
19766 };
19767
19768 #undef lpfc_debugfs_op_dumpDif
19769-static struct file_operations lpfc_debugfs_op_dumpDif = {
19770+static const struct file_operations lpfc_debugfs_op_dumpDif = {
19771 .owner = THIS_MODULE,
19772 .open = lpfc_debugfs_dumpDif_open,
19773 .llseek = lpfc_debugfs_lseek,
19774@@ -1197,7 +1197,7 @@ static struct file_operations lpfc_debug
19775 };
19776
19777 #undef lpfc_debugfs_op_slow_ring_trc
19778-static struct file_operations lpfc_debugfs_op_slow_ring_trc = {
19779+static const struct file_operations lpfc_debugfs_op_slow_ring_trc = {
19780 .owner = THIS_MODULE,
19781 .open = lpfc_debugfs_slow_ring_trc_open,
19782 .llseek = lpfc_debugfs_lseek,
19783diff -urNp linux-2.6.29.6/drivers/scsi/scsi_logging.h linux-2.6.29.6/drivers/scsi/scsi_logging.h
19784--- linux-2.6.29.6/drivers/scsi/scsi_logging.h 2009-07-02 19:41:20.000000000 -0400
19785+++ linux-2.6.29.6/drivers/scsi/scsi_logging.h 2009-07-23 17:34:32.134722055 -0400
19786@@ -51,7 +51,7 @@ do { \ 19525@@ -51,7 +51,7 @@ do { \
19787 } while (0); \ 19526 } while (0); \
19788 } while (0) 19527 } while (0)
@@ -19792,10 +19531,10 @@ diff -urNp linux-2.6.29.6/drivers/scsi/scsi_logging.h linux-2.6.29.6/drivers/scs
19792 #endif /* CONFIG_SCSI_LOGGING */ 19531 #endif /* CONFIG_SCSI_LOGGING */
19793 19532
19794 /* 19533 /*
19795diff -urNp linux-2.6.29.6/drivers/scsi/sg.c linux-2.6.29.6/drivers/scsi/sg.c 19534diff -urNp linux-2.6.30.4/drivers/scsi/sg.c linux-2.6.30.4/drivers/scsi/sg.c
19796--- linux-2.6.29.6/drivers/scsi/sg.c 2009-07-02 19:41:20.000000000 -0400 19535--- linux-2.6.30.4/drivers/scsi/sg.c 2009-07-30 20:32:40.512605937 -0400
19797+++ linux-2.6.29.6/drivers/scsi/sg.c 2009-07-23 18:40:27.983261819 -0400 19536+++ linux-2.6.30.4/drivers/scsi/sg.c 2009-07-30 20:32:47.966608613 -0400
19798@@ -1197,7 +1197,7 @@ sg_vma_fault(struct vm_area_struct *vma, 19537@@ -1186,7 +1186,7 @@ sg_vma_fault(struct vm_area_struct *vma,
19799 return VM_FAULT_SIGBUS; 19538 return VM_FAULT_SIGBUS;
19800 } 19539 }
19801 19540
@@ -19804,7 +19543,7 @@ diff -urNp linux-2.6.29.6/drivers/scsi/sg.c linux-2.6.29.6/drivers/scsi/sg.c
19804 .fault = sg_vma_fault, 19543 .fault = sg_vma_fault,
19805 }; 19544 };
19806 19545
19807@@ -1329,7 +1329,7 @@ static void sg_rq_end_io(struct request 19546@@ -1318,7 +1318,7 @@ static void sg_rq_end_io(struct request
19808 } 19547 }
19809 } 19548 }
19810 19549
@@ -19813,7 +19552,7 @@ diff -urNp linux-2.6.29.6/drivers/scsi/sg.c linux-2.6.29.6/drivers/scsi/sg.c
19813 .owner = THIS_MODULE, 19552 .owner = THIS_MODULE,
19814 .read = sg_read, 19553 .read = sg_read,
19815 .write = sg_write, 19554 .write = sg_write,
19816@@ -2222,8 +2222,11 @@ static int sg_proc_seq_show_int(struct s 19555@@ -2194,8 +2194,11 @@ static int sg_proc_seq_show_int(struct s
19817 static int sg_proc_single_open_adio(struct inode *inode, struct file *file); 19556 static int sg_proc_single_open_adio(struct inode *inode, struct file *file);
19818 static ssize_t sg_proc_write_adio(struct file *filp, const char __user *buffer, 19557 static ssize_t sg_proc_write_adio(struct file *filp, const char __user *buffer,
19819 size_t count, loff_t *off); 19558 size_t count, loff_t *off);
@@ -19827,7 +19566,7 @@ diff -urNp linux-2.6.29.6/drivers/scsi/sg.c linux-2.6.29.6/drivers/scsi/sg.c
19827 .open = sg_proc_single_open_adio, 19566 .open = sg_proc_single_open_adio,
19828 .write = sg_proc_write_adio, 19567 .write = sg_proc_write_adio,
19829 .release = single_release, 19568 .release = single_release,
19830@@ -2232,7 +2235,10 @@ static struct file_operations adio_fops 19569@@ -2204,7 +2207,10 @@ static struct file_operations adio_fops
19831 static int sg_proc_single_open_dressz(struct inode *inode, struct file *file); 19570 static int sg_proc_single_open_dressz(struct inode *inode, struct file *file);
19832 static ssize_t sg_proc_write_dressz(struct file *filp, 19571 static ssize_t sg_proc_write_dressz(struct file *filp,
19833 const char __user *buffer, size_t count, loff_t *off); 19572 const char __user *buffer, size_t count, loff_t *off);
@@ -19839,7 +19578,7 @@ diff -urNp linux-2.6.29.6/drivers/scsi/sg.c linux-2.6.29.6/drivers/scsi/sg.c
19839 .open = sg_proc_single_open_dressz, 19578 .open = sg_proc_single_open_dressz,
19840 .write = sg_proc_write_dressz, 19579 .write = sg_proc_write_dressz,
19841 .release = single_release, 19580 .release = single_release,
19842@@ -2240,14 +2246,20 @@ static struct file_operations dressz_fop 19581@@ -2212,14 +2218,20 @@ static struct file_operations dressz_fop
19843 19582
19844 static int sg_proc_seq_show_version(struct seq_file *s, void *v); 19583 static int sg_proc_seq_show_version(struct seq_file *s, void *v);
19845 static int sg_proc_single_open_version(struct inode *inode, struct file *file); 19584 static int sg_proc_single_open_version(struct inode *inode, struct file *file);
@@ -19862,7 +19601,7 @@ diff -urNp linux-2.6.29.6/drivers/scsi/sg.c linux-2.6.29.6/drivers/scsi/sg.c
19862 .open = sg_proc_single_open_devhdr, 19601 .open = sg_proc_single_open_devhdr,
19863 .release = single_release, 19602 .release = single_release,
19864 }; 19603 };
19865@@ -2257,11 +2269,14 @@ static int sg_proc_open_dev(struct inode 19604@@ -2229,11 +2241,14 @@ static int sg_proc_open_dev(struct inode
19866 static void * dev_seq_start(struct seq_file *s, loff_t *pos); 19605 static void * dev_seq_start(struct seq_file *s, loff_t *pos);
19867 static void * dev_seq_next(struct seq_file *s, void *v, loff_t *pos); 19606 static void * dev_seq_next(struct seq_file *s, void *v, loff_t *pos);
19868 static void dev_seq_stop(struct seq_file *s, void *v); 19607 static void dev_seq_stop(struct seq_file *s, void *v);
@@ -19879,7 +19618,7 @@ diff -urNp linux-2.6.29.6/drivers/scsi/sg.c linux-2.6.29.6/drivers/scsi/sg.c
19879 .start = dev_seq_start, 19618 .start = dev_seq_start,
19880 .next = dev_seq_next, 19619 .next = dev_seq_next,
19881 .stop = dev_seq_stop, 19620 .stop = dev_seq_stop,
19882@@ -2270,11 +2285,14 @@ static struct seq_operations dev_seq_ops 19621@@ -2242,11 +2257,14 @@ static struct seq_operations dev_seq_ops
19883 19622
19884 static int sg_proc_seq_show_devstrs(struct seq_file *s, void *v); 19623 static int sg_proc_seq_show_devstrs(struct seq_file *s, void *v);
19885 static int sg_proc_open_devstrs(struct inode *inode, struct file *file); 19624 static int sg_proc_open_devstrs(struct inode *inode, struct file *file);
@@ -19896,7 +19635,7 @@ diff -urNp linux-2.6.29.6/drivers/scsi/sg.c linux-2.6.29.6/drivers/scsi/sg.c
19896 .start = dev_seq_start, 19635 .start = dev_seq_start,
19897 .next = dev_seq_next, 19636 .next = dev_seq_next,
19898 .stop = dev_seq_stop, 19637 .stop = dev_seq_stop,
19899@@ -2283,11 +2301,14 @@ static struct seq_operations devstrs_seq 19638@@ -2255,11 +2273,14 @@ static struct seq_operations devstrs_seq
19900 19639
19901 static int sg_proc_seq_show_debug(struct seq_file *s, void *v); 19640 static int sg_proc_seq_show_debug(struct seq_file *s, void *v);
19902 static int sg_proc_open_debug(struct inode *inode, struct file *file); 19641 static int sg_proc_open_debug(struct inode *inode, struct file *file);
@@ -19913,7 +19652,7 @@ diff -urNp linux-2.6.29.6/drivers/scsi/sg.c linux-2.6.29.6/drivers/scsi/sg.c
19913 .start = dev_seq_start, 19652 .start = dev_seq_start,
19914 .next = dev_seq_next, 19653 .next = dev_seq_next,
19915 .stop = dev_seq_stop, 19654 .stop = dev_seq_stop,
19916@@ -2297,7 +2318,7 @@ static struct seq_operations debug_seq_o 19655@@ -2269,7 +2290,7 @@ static struct seq_operations debug_seq_o
19917 19656
19918 struct sg_proc_leaf { 19657 struct sg_proc_leaf {
19919 const char * name; 19658 const char * name;
@@ -19922,7 +19661,7 @@ diff -urNp linux-2.6.29.6/drivers/scsi/sg.c linux-2.6.29.6/drivers/scsi/sg.c
19922 }; 19661 };
19923 19662
19924 static struct sg_proc_leaf sg_proc_leaf_arr[] = { 19663 static struct sg_proc_leaf sg_proc_leaf_arr[] = {
19925@@ -2323,9 +2344,6 @@ sg_proc_init(void) 19664@@ -2295,9 +2316,6 @@ sg_proc_init(void)
19926 for (k = 0; k < num_leaves; ++k) { 19665 for (k = 0; k < num_leaves; ++k) {
19927 leaf = &sg_proc_leaf_arr[k]; 19666 leaf = &sg_proc_leaf_arr[k];
19928 mask = leaf->fops->write ? S_IRUGO | S_IWUSR : S_IRUGO; 19667 mask = leaf->fops->write ? S_IRUGO | S_IWUSR : S_IRUGO;
@@ -19932,10 +19671,10 @@ diff -urNp linux-2.6.29.6/drivers/scsi/sg.c linux-2.6.29.6/drivers/scsi/sg.c
19932 proc_create(leaf->name, mask, sg_proc_sgp, leaf->fops); 19671 proc_create(leaf->name, mask, sg_proc_sgp, leaf->fops);
19933 } 19672 }
19934 return 0; 19673 return 0;
19935diff -urNp linux-2.6.29.6/drivers/serial/8250_pci.c linux-2.6.29.6/drivers/serial/8250_pci.c 19674diff -urNp linux-2.6.30.4/drivers/serial/8250_pci.c linux-2.6.30.4/drivers/serial/8250_pci.c
19936--- linux-2.6.29.6/drivers/serial/8250_pci.c 2009-07-02 19:41:20.000000000 -0400 19675--- linux-2.6.30.4/drivers/serial/8250_pci.c 2009-07-24 17:47:51.000000000 -0400
19937+++ linux-2.6.29.6/drivers/serial/8250_pci.c 2009-07-23 17:34:32.135751373 -0400 19676+++ linux-2.6.30.4/drivers/serial/8250_pci.c 2009-07-30 09:48:10.048531085 -0400
19938@@ -3162,7 +3162,7 @@ static struct pci_device_id serial_pci_t 19677@@ -3572,7 +3572,7 @@ static struct pci_device_id serial_pci_t
19939 PCI_ANY_ID, PCI_ANY_ID, 19678 PCI_ANY_ID, PCI_ANY_ID,
19940 PCI_CLASS_COMMUNICATION_MULTISERIAL << 8, 19679 PCI_CLASS_COMMUNICATION_MULTISERIAL << 8,
19941 0xffff00, pbn_default }, 19680 0xffff00, pbn_default },
@@ -19944,9 +19683,9 @@ diff -urNp linux-2.6.29.6/drivers/serial/8250_pci.c linux-2.6.29.6/drivers/seria
19944 }; 19683 };
19945 19684
19946 static struct pci_driver serial_pci_driver = { 19685 static struct pci_driver serial_pci_driver = {
19947diff -urNp linux-2.6.29.6/drivers/spi/spidev.c linux-2.6.29.6/drivers/spi/spidev.c 19686diff -urNp linux-2.6.30.4/drivers/spi/spidev.c linux-2.6.30.4/drivers/spi/spidev.c
19948--- linux-2.6.29.6/drivers/spi/spidev.c 2009-07-02 19:41:20.000000000 -0400 19687--- linux-2.6.30.4/drivers/spi/spidev.c 2009-07-24 17:47:51.000000000 -0400
19949+++ linux-2.6.29.6/drivers/spi/spidev.c 2009-07-23 18:40:27.984271636 -0400 19688+++ linux-2.6.30.4/drivers/spi/spidev.c 2009-07-30 09:48:10.049614710 -0400
19950@@ -532,7 +532,7 @@ static int spidev_release(struct inode * 19689@@ -532,7 +532,7 @@ static int spidev_release(struct inode *
19951 return status; 19690 return status;
19952 } 19691 }
@@ -19956,23 +19695,11 @@ diff -urNp linux-2.6.29.6/drivers/spi/spidev.c linux-2.6.29.6/drivers/spi/spidev
19956 .owner = THIS_MODULE, 19695 .owner = THIS_MODULE,
19957 /* REVISIT switch to aio primitives, so that userspace 19696 /* REVISIT switch to aio primitives, so that userspace
19958 * gets more complete API coverage. It'll simplify things 19697 * gets more complete API coverage. It'll simplify things
19959diff -urNp linux-2.6.29.6/drivers/staging/altpciechdma/altpciechdma.c linux-2.6.29.6/drivers/staging/altpciechdma/altpciechdma.c 19698diff -urNp linux-2.6.30.4/drivers/staging/android/binder.c linux-2.6.30.4/drivers/staging/android/binder.c
19960--- linux-2.6.29.6/drivers/staging/altpciechdma/altpciechdma.c 2009-07-02 19:41:20.000000000 -0400 19699--- linux-2.6.30.4/drivers/staging/android/binder.c 2009-07-24 17:47:51.000000000 -0400
19961+++ linux-2.6.29.6/drivers/staging/altpciechdma/altpciechdma.c 2009-07-23 18:40:27.989802153 -0400 19700+++ linux-2.6.30.4/drivers/staging/android/binder.c 2009-07-30 12:07:09.614975906 -0400
19962@@ -1085,7 +1085,7 @@ static ssize_t sg_write(struct file *fil 19701@@ -2699,7 +2699,7 @@ static void binder_vma_close(struct vm_a
19963 /* 19702 binder_defer_work(proc, BINDER_DEFERRED_PUT_FILES);
19964 * character device file operations
19965 */
19966-static struct file_operations sg_fops = {
19967+static const struct file_operations sg_fops = {
19968 .owner = THIS_MODULE,
19969 .open = sg_open,
19970 .release = sg_close,
19971diff -urNp linux-2.6.29.6/drivers/staging/android/binder.c linux-2.6.29.6/drivers/staging/android/binder.c
19972--- linux-2.6.29.6/drivers/staging/android/binder.c 2009-07-02 19:41:20.000000000 -0400
19973+++ linux-2.6.29.6/drivers/staging/android/binder.c 2009-07-23 18:40:28.031683554 -0400
19974@@ -2660,7 +2660,7 @@ static void binder_vma_close(struct vm_a
19975 proc->vma = NULL;
19976 } 19703 }
19977 19704
19978-static struct vm_operations_struct binder_vm_ops = { 19705-static struct vm_operations_struct binder_vm_ops = {
@@ -19980,7 +19707,7 @@ diff -urNp linux-2.6.29.6/drivers/staging/android/binder.c linux-2.6.29.6/driver
19980 .open = binder_vma_open, 19707 .open = binder_vma_open,
19981 .close = binder_vma_close, 19708 .close = binder_vma_close,
19982 }; 19709 };
19983@@ -3464,7 +3464,7 @@ static int binder_read_proc_transaction_ 19710@@ -3579,7 +3579,7 @@ static int binder_read_proc_transaction_
19984 return len < count ? len : count; 19711 return len < count ? len : count;
19985 } 19712 }
19986 19713
@@ -19989,9 +19716,9 @@ diff -urNp linux-2.6.29.6/drivers/staging/android/binder.c linux-2.6.29.6/driver
19989 .owner = THIS_MODULE, 19716 .owner = THIS_MODULE,
19990 .poll = binder_poll, 19717 .poll = binder_poll,
19991 .unlocked_ioctl = binder_ioctl, 19718 .unlocked_ioctl = binder_ioctl,
19992diff -urNp linux-2.6.29.6/drivers/staging/android/logger.c linux-2.6.29.6/drivers/staging/android/logger.c 19719diff -urNp linux-2.6.30.4/drivers/staging/android/logger.c linux-2.6.30.4/drivers/staging/android/logger.c
19993--- linux-2.6.29.6/drivers/staging/android/logger.c 2009-07-02 19:41:20.000000000 -0400 19720--- linux-2.6.30.4/drivers/staging/android/logger.c 2009-07-24 17:47:51.000000000 -0400
19994+++ linux-2.6.29.6/drivers/staging/android/logger.c 2009-07-23 18:40:28.043741799 -0400 19721+++ linux-2.6.30.4/drivers/staging/android/logger.c 2009-07-30 09:48:10.050638667 -0400
19995@@ -519,7 +519,7 @@ static long logger_ioctl(struct file *fi 19722@@ -519,7 +519,7 @@ static long logger_ioctl(struct file *fi
19996 return ret; 19723 return ret;
19997 } 19724 }
@@ -20001,9 +19728,9 @@ diff -urNp linux-2.6.29.6/drivers/staging/android/logger.c linux-2.6.29.6/driver
20001 .owner = THIS_MODULE, 19728 .owner = THIS_MODULE,
20002 .read = logger_read, 19729 .read = logger_read,
20003 .aio_write = logger_aio_write, 19730 .aio_write = logger_aio_write,
20004diff -urNp linux-2.6.29.6/drivers/staging/android/ram_console.c linux-2.6.29.6/drivers/staging/android/ram_console.c 19731diff -urNp linux-2.6.30.4/drivers/staging/android/ram_console.c linux-2.6.30.4/drivers/staging/android/ram_console.c
20005--- linux-2.6.29.6/drivers/staging/android/ram_console.c 2009-07-02 19:41:20.000000000 -0400 19732--- linux-2.6.30.4/drivers/staging/android/ram_console.c 2009-07-24 17:47:51.000000000 -0400
20006+++ linux-2.6.29.6/drivers/staging/android/ram_console.c 2009-07-23 18:40:28.044366592 -0400 19733+++ linux-2.6.30.4/drivers/staging/android/ram_console.c 2009-07-30 09:48:10.050638667 -0400
20007@@ -365,7 +365,7 @@ static ssize_t ram_console_read_old(stru 19734@@ -365,7 +365,7 @@ static ssize_t ram_console_read_old(stru
20008 return count; 19735 return count;
20009 } 19736 }
@@ -20013,10 +19740,31 @@ diff -urNp linux-2.6.29.6/drivers/staging/android/ram_console.c linux-2.6.29.6/d
20013 .owner = THIS_MODULE, 19740 .owner = THIS_MODULE,
20014 .read = ram_console_read_old, 19741 .read = ram_console_read_old,
20015 }; 19742 };
20016diff -urNp linux-2.6.29.6/drivers/staging/comedi/comedi_fops.c linux-2.6.29.6/drivers/staging/comedi/comedi_fops.c 19743diff -urNp linux-2.6.30.4/drivers/staging/b3dfg/b3dfg.c linux-2.6.30.4/drivers/staging/b3dfg/b3dfg.c
20017--- linux-2.6.29.6/drivers/staging/comedi/comedi_fops.c 2009-07-02 19:41:20.000000000 -0400 19744--- linux-2.6.30.4/drivers/staging/b3dfg/b3dfg.c 2009-07-24 17:47:51.000000000 -0400
20018+++ linux-2.6.29.6/drivers/staging/comedi/comedi_fops.c 2009-07-23 18:40:28.047286541 -0400 19745+++ linux-2.6.30.4/drivers/staging/b3dfg/b3dfg.c 2009-07-30 12:07:09.622002360 -0400
20019@@ -1385,7 +1385,7 @@ void comedi_unmap(struct vm_area_struct 19746@@ -455,7 +455,7 @@ static int b3dfg_vma_fault(struct vm_are
19747 return VM_FAULT_NOPAGE;
19748 }
19749
19750-static struct vm_operations_struct b3dfg_vm_ops = {
19751+static const struct vm_operations_struct b3dfg_vm_ops = {
19752 .fault = b3dfg_vma_fault,
19753 };
19754
19755@@ -855,7 +855,7 @@ static int b3dfg_mmap(struct file *filp,
19756 return r;
19757 }
19758
19759-static struct file_operations b3dfg_fops = {
19760+static const struct file_operations b3dfg_fops = {
19761 .owner = THIS_MODULE,
19762 .open = b3dfg_open,
19763 .release = b3dfg_release,
19764diff -urNp linux-2.6.30.4/drivers/staging/comedi/comedi_fops.c linux-2.6.30.4/drivers/staging/comedi/comedi_fops.c
19765--- linux-2.6.30.4/drivers/staging/comedi/comedi_fops.c 2009-07-24 17:47:51.000000000 -0400
19766+++ linux-2.6.30.4/drivers/staging/comedi/comedi_fops.c 2009-07-30 09:48:10.051586138 -0400
19767@@ -1395,7 +1395,7 @@ void comedi_unmap(struct vm_area_struct
20020 mutex_unlock(&dev->mutex); 19768 mutex_unlock(&dev->mutex);
20021 } 19769 }
20022 19770
@@ -20025,10 +19773,10 @@ diff -urNp linux-2.6.29.6/drivers/staging/comedi/comedi_fops.c linux-2.6.29.6/dr
20025 .close = comedi_unmap, 19773 .close = comedi_unmap,
20026 }; 19774 };
20027 19775
20028diff -urNp linux-2.6.29.6/drivers/staging/epl/EplApiLinuxKernel.c linux-2.6.29.6/drivers/staging/epl/EplApiLinuxKernel.c 19776diff -urNp linux-2.6.30.4/drivers/staging/epl/EplApiLinuxKernel.c linux-2.6.30.4/drivers/staging/epl/EplApiLinuxKernel.c
20029--- linux-2.6.29.6/drivers/staging/epl/EplApiLinuxKernel.c 2009-07-02 19:41:20.000000000 -0400 19777--- linux-2.6.30.4/drivers/staging/epl/EplApiLinuxKernel.c 2009-07-24 17:47:51.000000000 -0400
20030+++ linux-2.6.29.6/drivers/staging/epl/EplApiLinuxKernel.c 2009-07-23 18:40:28.056426086 -0400 19778+++ linux-2.6.30.4/drivers/staging/epl/EplApiLinuxKernel.c 2009-07-30 09:48:10.051586138 -0400
20031@@ -231,7 +231,7 @@ EXPORT_NO_SYMBOLS; 19779@@ -203,7 +203,7 @@ static int EplLinIoctl(struct inode *pDe
20032 module_init(EplLinInit); 19780 module_init(EplLinInit);
20033 module_exit(EplLinExit); 19781 module_exit(EplLinExit);
20034 19782
@@ -20037,9 +19785,9 @@ diff -urNp linux-2.6.29.6/drivers/staging/epl/EplApiLinuxKernel.c linux-2.6.29.6
20037 .owner = THIS_MODULE, 19785 .owner = THIS_MODULE,
20038 .open = EplLinOpen, 19786 .open = EplLinOpen,
20039 .release = EplLinRelease, 19787 .release = EplLinRelease,
20040diff -urNp linux-2.6.29.6/drivers/staging/go7007/go7007-v4l2.c linux-2.6.29.6/drivers/staging/go7007/go7007-v4l2.c 19788diff -urNp linux-2.6.30.4/drivers/staging/go7007/go7007-v4l2.c linux-2.6.30.4/drivers/staging/go7007/go7007-v4l2.c
20041--- linux-2.6.29.6/drivers/staging/go7007/go7007-v4l2.c 2009-07-02 19:41:20.000000000 -0400 19789--- linux-2.6.30.4/drivers/staging/go7007/go7007-v4l2.c 2009-07-24 17:47:51.000000000 -0400
20042+++ linux-2.6.29.6/drivers/staging/go7007/go7007-v4l2.c 2009-07-23 18:40:28.061800902 -0400 19790+++ linux-2.6.30.4/drivers/staging/go7007/go7007-v4l2.c 2009-07-30 09:48:10.052768252 -0400
20043@@ -1717,7 +1717,7 @@ static int go7007_vm_fault(struct vm_are 19791@@ -1717,7 +1717,7 @@ static int go7007_vm_fault(struct vm_are
20044 return 0; 19792 return 0;
20045 } 19793 }
@@ -20049,125 +19797,10 @@ diff -urNp linux-2.6.29.6/drivers/staging/go7007/go7007-v4l2.c linux-2.6.29.6/dr
20049 .open = go7007_vm_open, 19797 .open = go7007_vm_open,
20050 .close = go7007_vm_close, 19798 .close = go7007_vm_close,
20051 .fault = go7007_vm_fault, 19799 .fault = go7007_vm_fault,
20052diff -urNp linux-2.6.29.6/drivers/staging/me4000/me4000.c linux-2.6.29.6/drivers/staging/me4000/me4000.c 19800diff -urNp linux-2.6.30.4/drivers/staging/meilhaus/memain.c linux-2.6.30.4/drivers/staging/meilhaus/memain.c
20053--- linux-2.6.29.6/drivers/staging/me4000/me4000.c 2009-07-02 19:41:20.000000000 -0400 19801--- linux-2.6.30.4/drivers/staging/meilhaus/memain.c 2009-07-24 17:47:51.000000000 -0400
20054+++ linux-2.6.29.6/drivers/staging/me4000/me4000.c 2009-07-23 18:40:28.080446994 -0400 19802+++ linux-2.6.30.4/drivers/staging/meilhaus/memain.c 2009-07-30 09:48:10.052768252 -0400
20055@@ -309,7 +309,7 @@ static struct pci_driver me4000_driver = 19803@@ -108,7 +108,7 @@ static struct cdev *cdevp;
20056 .probe = me4000_probe
20057 };
20058
20059-static struct file_operations me4000_ao_fops_sing = {
20060+static const struct file_operations me4000_ao_fops_sing = {
20061 .owner = THIS_MODULE,
20062 .write = me4000_ao_write_sing,
20063 .ioctl = me4000_ao_ioctl_sing,
20064@@ -317,7 +317,7 @@ static struct file_operations me4000_ao_
20065 .release = me4000_release,
20066 };
20067
20068-static struct file_operations me4000_ao_fops_wrap = {
20069+static const struct file_operations me4000_ao_fops_wrap = {
20070 .owner = THIS_MODULE,
20071 .write = me4000_ao_write_wrap,
20072 .ioctl = me4000_ao_ioctl_wrap,
20073@@ -325,7 +325,7 @@ static struct file_operations me4000_ao_
20074 .release = me4000_release,
20075 };
20076
20077-static struct file_operations me4000_ao_fops_cont = {
20078+static const struct file_operations me4000_ao_fops_cont = {
20079 .owner = THIS_MODULE,
20080 .write = me4000_ao_write_cont,
20081 .poll = me4000_ao_poll_cont,
20082@@ -335,14 +335,14 @@ static struct file_operations me4000_ao_
20083 .fsync = me4000_ao_fsync_cont,
20084 };
20085
20086-static struct file_operations me4000_ai_fops_sing = {
20087+static const struct file_operations me4000_ai_fops_sing = {
20088 .owner = THIS_MODULE,
20089 .ioctl = me4000_ai_ioctl_sing,
20090 .open = me4000_open,
20091 .release = me4000_release,
20092 };
20093
20094-static struct file_operations me4000_ai_fops_cont_sw = {
20095+static const struct file_operations me4000_ai_fops_cont_sw = {
20096 .owner = THIS_MODULE,
20097 .read = me4000_ai_read,
20098 .poll = me4000_ai_poll,
20099@@ -352,7 +352,7 @@ static struct file_operations me4000_ai_
20100 .fasync = me4000_ai_fasync,
20101 };
20102
20103-static struct file_operations me4000_ai_fops_cont_et = {
20104+static const struct file_operations me4000_ai_fops_cont_et = {
20105 .owner = THIS_MODULE,
20106 .read = me4000_ai_read,
20107 .poll = me4000_ai_poll,
20108@@ -361,7 +361,7 @@ static struct file_operations me4000_ai_
20109 .release = me4000_release,
20110 };
20111
20112-static struct file_operations me4000_ai_fops_cont_et_value = {
20113+static const struct file_operations me4000_ai_fops_cont_et_value = {
20114 .owner = THIS_MODULE,
20115 .read = me4000_ai_read,
20116 .poll = me4000_ai_poll,
20117@@ -370,7 +370,7 @@ static struct file_operations me4000_ai_
20118 .release = me4000_release,
20119 };
20120
20121-static struct file_operations me4000_ai_fops_cont_et_chanlist = {
20122+static const struct file_operations me4000_ai_fops_cont_et_chanlist = {
20123 .owner = THIS_MODULE,
20124 .read = me4000_ai_read,
20125 .poll = me4000_ai_poll,
20126@@ -379,21 +379,21 @@ static struct file_operations me4000_ai_
20127 .release = me4000_release,
20128 };
20129
20130-static struct file_operations me4000_dio_fops = {
20131+static const struct file_operations me4000_dio_fops = {
20132 .owner = THIS_MODULE,
20133 .ioctl = me4000_dio_ioctl,
20134 .open = me4000_open,
20135 .release = me4000_release,
20136 };
20137
20138-static struct file_operations me4000_cnt_fops = {
20139+static const struct file_operations me4000_cnt_fops = {
20140 .owner = THIS_MODULE,
20141 .ioctl = me4000_cnt_ioctl,
20142 .open = me4000_open,
20143 .release = me4000_release,
20144 };
20145
20146-static struct file_operations me4000_ext_int_fops = {
20147+static const struct file_operations me4000_ext_int_fops = {
20148 .owner = THIS_MODULE,
20149 .ioctl = me4000_ext_int_ioctl,
20150 .open = me4000_open,
20151@@ -401,13 +401,13 @@ static struct file_operations me4000_ext
20152 .fasync = me4000_ext_int_fasync,
20153 };
20154
20155-static struct file_operations *me4000_ao_fops_array[] = {
20156+static const struct file_operations *me4000_ao_fops_array[] = {
20157 &me4000_ao_fops_sing, // single operations
20158 &me4000_ao_fops_wrap, // wraparound operations
20159 &me4000_ao_fops_cont, // continous operations
20160 };
20161
20162-static struct file_operations *me4000_ai_fops_array[] = {
20163+static const struct file_operations *me4000_ai_fops_array[] = {
20164 &me4000_ai_fops_sing, // single operations
20165 &me4000_ai_fops_cont_sw, // continuous operations with software start
20166 &me4000_ai_fops_cont_et, // continous operations with external trigger
20167diff -urNp linux-2.6.29.6/drivers/staging/meilhaus/memain.c linux-2.6.29.6/drivers/staging/meilhaus/memain.c
20168--- linux-2.6.29.6/drivers/staging/meilhaus/memain.c 2009-07-02 19:41:20.000000000 -0400
20169+++ linux-2.6.29.6/drivers/staging/meilhaus/memain.c 2009-07-23 18:40:28.086506170 -0400
20170@@ -107,7 +107,7 @@ static struct cdev *cdevp;
20171 /* File operations provided by the module 19804 /* File operations provided by the module
20172 */ 19805 */
20173 19806
@@ -20176,9 +19809,9 @@ diff -urNp linux-2.6.29.6/drivers/staging/meilhaus/memain.c linux-2.6.29.6/drive
20176 .owner = THIS_MODULE, 19809 .owner = THIS_MODULE,
20177 .ioctl = me_ioctl, 19810 .ioctl = me_ioctl,
20178 .open = me_open, 19811 .open = me_open,
20179diff -urNp linux-2.6.29.6/drivers/staging/panel/panel.c linux-2.6.29.6/drivers/staging/panel/panel.c 19812diff -urNp linux-2.6.30.4/drivers/staging/panel/panel.c linux-2.6.30.4/drivers/staging/panel/panel.c
20180--- linux-2.6.29.6/drivers/staging/panel/panel.c 2009-07-02 19:41:20.000000000 -0400 19813--- linux-2.6.30.4/drivers/staging/panel/panel.c 2009-07-24 17:47:51.000000000 -0400
20181+++ linux-2.6.29.6/drivers/staging/panel/panel.c 2009-07-23 18:40:28.087439625 -0400 19814+++ linux-2.6.30.4/drivers/staging/panel/panel.c 2009-07-30 09:48:10.053870849 -0400
20182@@ -1263,7 +1263,7 @@ static int lcd_release(struct inode *ino 19815@@ -1263,7 +1263,7 @@ static int lcd_release(struct inode *ino
20183 return 0; 19816 return 0;
20184 } 19817 }
@@ -20197,9 +19830,9 @@ diff -urNp linux-2.6.29.6/drivers/staging/panel/panel.c linux-2.6.29.6/drivers/s
20197 .read = keypad_read, /* read */ 19830 .read = keypad_read, /* read */
20198 .open = keypad_open, /* open */ 19831 .open = keypad_open, /* open */
20199 .release = keypad_release, /* close */ 19832 .release = keypad_release, /* close */
20200diff -urNp linux-2.6.29.6/drivers/staging/poch/poch.c linux-2.6.29.6/drivers/staging/poch/poch.c 19833diff -urNp linux-2.6.30.4/drivers/staging/poch/poch.c linux-2.6.30.4/drivers/staging/poch/poch.c
20201--- linux-2.6.29.6/drivers/staging/poch/poch.c 2009-07-02 19:41:20.000000000 -0400 19834--- linux-2.6.30.4/drivers/staging/poch/poch.c 2009-07-24 17:47:51.000000000 -0400
20202+++ linux-2.6.29.6/drivers/staging/poch/poch.c 2009-07-23 18:40:28.100950832 -0400 19835+++ linux-2.6.30.4/drivers/staging/poch/poch.c 2009-07-30 09:48:10.053870849 -0400
20203@@ -1056,7 +1056,7 @@ static int poch_ioctl(struct inode *inod 19836@@ -1056,7 +1056,7 @@ static int poch_ioctl(struct inode *inod
20204 return 0; 19837 return 0;
20205 } 19838 }
@@ -20209,9 +19842,9 @@ diff -urNp linux-2.6.29.6/drivers/staging/poch/poch.c linux-2.6.29.6/drivers/sta
20209 .owner = THIS_MODULE, 19842 .owner = THIS_MODULE,
20210 .open = poch_open, 19843 .open = poch_open,
20211 .release = poch_release, 19844 .release = poch_release,
20212diff -urNp linux-2.6.29.6/drivers/staging/rspiusb/rspiusb.c linux-2.6.29.6/drivers/staging/rspiusb/rspiusb.c 19845diff -urNp linux-2.6.30.4/drivers/staging/rspiusb/rspiusb.c linux-2.6.30.4/drivers/staging/rspiusb/rspiusb.c
20213--- linux-2.6.29.6/drivers/staging/rspiusb/rspiusb.c 2009-07-02 19:41:20.000000000 -0400 19846--- linux-2.6.30.4/drivers/staging/rspiusb/rspiusb.c 2009-07-24 17:47:51.000000000 -0400
20214+++ linux-2.6.29.6/drivers/staging/rspiusb/rspiusb.c 2009-07-23 18:40:28.104254239 -0400 19847+++ linux-2.6.30.4/drivers/staging/rspiusb/rspiusb.c 2009-07-30 09:48:10.053870849 -0400
20215@@ -708,7 +708,7 @@ static int MapUserBuffer(struct ioctl_st 19848@@ -708,7 +708,7 @@ static int MapUserBuffer(struct ioctl_st
20216 return 0; 19849 return 0;
20217 } 19850 }
@@ -20221,10 +19854,10 @@ diff -urNp linux-2.6.29.6/drivers/staging/rspiusb/rspiusb.c linux-2.6.29.6/drive
20221 .owner = THIS_MODULE, 19854 .owner = THIS_MODULE,
20222 .ioctl = piusb_ioctl, 19855 .ioctl = piusb_ioctl,
20223 .open = piusb_open, 19856 .open = piusb_open,
20224diff -urNp linux-2.6.29.6/drivers/uio/uio.c linux-2.6.29.6/drivers/uio/uio.c 19857diff -urNp linux-2.6.30.4/drivers/uio/uio.c linux-2.6.30.4/drivers/uio/uio.c
20225--- linux-2.6.29.6/drivers/uio/uio.c 2009-07-02 19:41:20.000000000 -0400 19858--- linux-2.6.30.4/drivers/uio/uio.c 2009-07-24 17:47:51.000000000 -0400
20226+++ linux-2.6.29.6/drivers/uio/uio.c 2009-07-23 18:40:28.106388317 -0400 19859+++ linux-2.6.30.4/drivers/uio/uio.c 2009-07-30 09:48:10.053870849 -0400
20227@@ -636,7 +636,7 @@ static int uio_vma_fault(struct vm_area_ 19860@@ -658,7 +658,7 @@ static int uio_vma_fault(struct vm_area_
20228 return 0; 19861 return 0;
20229 } 19862 }
20230 19863
@@ -20233,9 +19866,9 @@ diff -urNp linux-2.6.29.6/drivers/uio/uio.c linux-2.6.29.6/drivers/uio/uio.c
20233 .open = uio_vma_open, 19866 .open = uio_vma_open,
20234 .close = uio_vma_close, 19867 .close = uio_vma_close,
20235 .fault = uio_vma_fault, 19868 .fault = uio_vma_fault,
20236diff -urNp linux-2.6.29.6/drivers/usb/atm/usbatm.c linux-2.6.29.6/drivers/usb/atm/usbatm.c 19869diff -urNp linux-2.6.30.4/drivers/usb/atm/usbatm.c linux-2.6.30.4/drivers/usb/atm/usbatm.c
20237--- linux-2.6.29.6/drivers/usb/atm/usbatm.c 2009-07-02 19:41:20.000000000 -0400 19870--- linux-2.6.30.4/drivers/usb/atm/usbatm.c 2009-07-24 17:47:51.000000000 -0400
20238+++ linux-2.6.29.6/drivers/usb/atm/usbatm.c 2009-07-23 17:34:32.135751373 -0400 19871+++ linux-2.6.30.4/drivers/usb/atm/usbatm.c 2009-07-30 09:48:10.055402995 -0400
20239@@ -333,7 +333,7 @@ static void usbatm_extract_one_cell(stru 19872@@ -333,7 +333,7 @@ static void usbatm_extract_one_cell(stru
20240 if (printk_ratelimit()) 19873 if (printk_ratelimit())
20241 atm_warn(instance, "%s: OAM not supported (vpi %d, vci %d)!\n", 19874 atm_warn(instance, "%s: OAM not supported (vpi %d, vci %d)!\n",
@@ -20298,10 +19931,10 @@ diff -urNp linux-2.6.29.6/drivers/usb/atm/usbatm.c linux-2.6.29.6/drivers/usb/at
20298 19931
20299 skb = skb_dequeue(&instance->sndqueue); 19932 skb = skb_dequeue(&instance->sndqueue);
20300 } 19933 }
20301diff -urNp linux-2.6.29.6/drivers/usb/class/cdc-acm.c linux-2.6.29.6/drivers/usb/class/cdc-acm.c 19934diff -urNp linux-2.6.30.4/drivers/usb/class/cdc-acm.c linux-2.6.30.4/drivers/usb/class/cdc-acm.c
20302--- linux-2.6.29.6/drivers/usb/class/cdc-acm.c 2009-07-02 19:41:20.000000000 -0400 19935--- linux-2.6.30.4/drivers/usb/class/cdc-acm.c 2009-07-24 17:47:51.000000000 -0400
20303+++ linux-2.6.29.6/drivers/usb/class/cdc-acm.c 2009-07-23 17:34:32.135751373 -0400 19936+++ linux-2.6.30.4/drivers/usb/class/cdc-acm.c 2009-07-30 09:48:10.055402995 -0400
20304@@ -1397,7 +1397,7 @@ static struct usb_device_id acm_ids[] = 19937@@ -1403,7 +1403,7 @@ static struct usb_device_id acm_ids[] =
20305 USB_CDC_ACM_PROTO_AT_CDMA) }, 19938 USB_CDC_ACM_PROTO_AT_CDMA) },
20306 19939
20307 /* NOTE: COMM/ACM/0xff is likely MSFT RNDIS ... NOT a modem!! */ 19940 /* NOTE: COMM/ACM/0xff is likely MSFT RNDIS ... NOT a modem!! */
@@ -20310,9 +19943,9 @@ diff -urNp linux-2.6.29.6/drivers/usb/class/cdc-acm.c linux-2.6.29.6/drivers/usb
20310 }; 19943 };
20311 19944
20312 MODULE_DEVICE_TABLE (usb, acm_ids); 19945 MODULE_DEVICE_TABLE (usb, acm_ids);
20313diff -urNp linux-2.6.29.6/drivers/usb/class/usblp.c linux-2.6.29.6/drivers/usb/class/usblp.c 19946diff -urNp linux-2.6.30.4/drivers/usb/class/usblp.c linux-2.6.30.4/drivers/usb/class/usblp.c
20314--- linux-2.6.29.6/drivers/usb/class/usblp.c 2009-07-02 19:41:20.000000000 -0400 19947--- linux-2.6.30.4/drivers/usb/class/usblp.c 2009-07-24 17:47:51.000000000 -0400
20315+++ linux-2.6.29.6/drivers/usb/class/usblp.c 2009-07-23 17:34:32.136781202 -0400 19948+++ linux-2.6.30.4/drivers/usb/class/usblp.c 2009-07-30 09:48:10.055402995 -0400
20316@@ -228,7 +228,7 @@ static const struct quirk_printer_struct 19949@@ -228,7 +228,7 @@ static const struct quirk_printer_struct
20317 { 0x0482, 0x0010, USBLP_QUIRK_BIDIR }, /* Kyocera Mita FS 820, by zut <kernel@zut.de> */ 19950 { 0x0482, 0x0010, USBLP_QUIRK_BIDIR }, /* Kyocera Mita FS 820, by zut <kernel@zut.de> */
20318 { 0x04f9, 0x000d, USBLP_QUIRK_BIDIR }, /* Brother Industries, Ltd HL-1440 Laser Printer */ 19951 { 0x04f9, 0x000d, USBLP_QUIRK_BIDIR }, /* Brother Industries, Ltd HL-1440 Laser Printer */
@@ -20322,7 +19955,7 @@ diff -urNp linux-2.6.29.6/drivers/usb/class/usblp.c linux-2.6.29.6/drivers/usb/c
20322 }; 19955 };
20323 19956
20324 static int usblp_wwait(struct usblp *usblp, int nonblock); 19957 static int usblp_wwait(struct usblp *usblp, int nonblock);
20325@@ -1403,7 +1403,7 @@ static struct usb_device_id usblp_ids [] 19958@@ -1406,7 +1406,7 @@ static struct usb_device_id usblp_ids []
20326 { USB_INTERFACE_INFO(7, 1, 2) }, 19959 { USB_INTERFACE_INFO(7, 1, 2) },
20327 { USB_INTERFACE_INFO(7, 1, 3) }, 19960 { USB_INTERFACE_INFO(7, 1, 3) },
20328 { USB_DEVICE(0x04b8, 0x0202) }, /* Seiko Epson Receipt Printer M129C */ 19961 { USB_DEVICE(0x04b8, 0x0202) }, /* Seiko Epson Receipt Printer M129C */
@@ -20331,9 +19964,9 @@ diff -urNp linux-2.6.29.6/drivers/usb/class/usblp.c linux-2.6.29.6/drivers/usb/c
20331 }; 19964 };
20332 19965
20333 MODULE_DEVICE_TABLE (usb, usblp_ids); 19966 MODULE_DEVICE_TABLE (usb, usblp_ids);
20334diff -urNp linux-2.6.29.6/drivers/usb/class/usbtmc.c linux-2.6.29.6/drivers/usb/class/usbtmc.c 19967diff -urNp linux-2.6.30.4/drivers/usb/class/usbtmc.c linux-2.6.30.4/drivers/usb/class/usbtmc.c
20335--- linux-2.6.29.6/drivers/usb/class/usbtmc.c 2009-07-02 19:41:20.000000000 -0400 19968--- linux-2.6.30.4/drivers/usb/class/usbtmc.c 2009-07-24 17:47:51.000000000 -0400
20336+++ linux-2.6.29.6/drivers/usb/class/usbtmc.c 2009-07-23 18:40:28.107490981 -0400 19969+++ linux-2.6.30.4/drivers/usb/class/usbtmc.c 2009-07-30 09:48:10.055402995 -0400
20337@@ -954,7 +954,7 @@ static long usbtmc_ioctl(struct file *fi 19970@@ -954,7 +954,7 @@ static long usbtmc_ioctl(struct file *fi
20338 return retval; 19971 return retval;
20339 } 19972 }
@@ -20343,10 +19976,10 @@ diff -urNp linux-2.6.29.6/drivers/usb/class/usbtmc.c linux-2.6.29.6/drivers/usb/
20343 .owner = THIS_MODULE, 19976 .owner = THIS_MODULE,
20344 .read = usbtmc_read, 19977 .read = usbtmc_read,
20345 .write = usbtmc_write, 19978 .write = usbtmc_write,
20346diff -urNp linux-2.6.29.6/drivers/usb/core/hub.c linux-2.6.29.6/drivers/usb/core/hub.c 19979diff -urNp linux-2.6.30.4/drivers/usb/core/hub.c linux-2.6.30.4/drivers/usb/core/hub.c
20347--- linux-2.6.29.6/drivers/usb/core/hub.c 2009-07-02 19:41:20.000000000 -0400 19980--- linux-2.6.30.4/drivers/usb/core/hub.c 2009-07-24 17:47:51.000000000 -0400
20348+++ linux-2.6.29.6/drivers/usb/core/hub.c 2009-07-23 17:34:32.136781202 -0400 19981+++ linux-2.6.30.4/drivers/usb/core/hub.c 2009-07-30 09:48:10.057446184 -0400
20349@@ -3193,7 +3193,7 @@ static struct usb_device_id hub_id_table 19982@@ -3194,7 +3194,7 @@ static struct usb_device_id hub_id_table
20350 .bDeviceClass = USB_CLASS_HUB}, 19983 .bDeviceClass = USB_CLASS_HUB},
20351 { .match_flags = USB_DEVICE_ID_MATCH_INT_CLASS, 19984 { .match_flags = USB_DEVICE_ID_MATCH_INT_CLASS,
20352 .bInterfaceClass = USB_CLASS_HUB}, 19985 .bInterfaceClass = USB_CLASS_HUB},
@@ -20355,9 +19988,9 @@ diff -urNp linux-2.6.29.6/drivers/usb/core/hub.c linux-2.6.29.6/drivers/usb/core
20355 }; 19988 };
20356 19989
20357 MODULE_DEVICE_TABLE (usb, hub_id_table); 19990 MODULE_DEVICE_TABLE (usb, hub_id_table);
20358diff -urNp linux-2.6.29.6/drivers/usb/core/inode.c linux-2.6.29.6/drivers/usb/core/inode.c 19991diff -urNp linux-2.6.30.4/drivers/usb/core/inode.c linux-2.6.30.4/drivers/usb/core/inode.c
20359--- linux-2.6.29.6/drivers/usb/core/inode.c 2009-07-02 19:41:20.000000000 -0400 19992--- linux-2.6.30.4/drivers/usb/core/inode.c 2009-07-24 17:47:51.000000000 -0400
20360+++ linux-2.6.29.6/drivers/usb/core/inode.c 2009-07-23 18:40:28.126687499 -0400 19993+++ linux-2.6.30.4/drivers/usb/core/inode.c 2009-07-30 09:48:10.057446184 -0400
20361@@ -47,7 +47,7 @@ 19994@@ -47,7 +47,7 @@
20362 #define USBFS_DEFAULT_BUSMODE (S_IXUGO | S_IRUGO) 19995 #define USBFS_DEFAULT_BUSMODE (S_IXUGO | S_IRUGO)
20363 #define USBFS_DEFAULT_LISTMODE S_IRUGO 19996 #define USBFS_DEFAULT_LISTMODE S_IRUGO
@@ -20376,22 +20009,23 @@ diff -urNp linux-2.6.29.6/drivers/usb/core/inode.c linux-2.6.29.6/drivers/usb/co
20376 .statfs = simple_statfs, 20009 .statfs = simple_statfs,
20377 .drop_inode = generic_delete_inode, 20010 .drop_inode = generic_delete_inode,
20378 .remount_fs = remount, 20011 .remount_fs = remount,
20379diff -urNp linux-2.6.29.6/drivers/usb/core/message.c linux-2.6.29.6/drivers/usb/core/message.c 20012diff -urNp linux-2.6.30.4/drivers/usb/core/message.c linux-2.6.30.4/drivers/usb/core/message.c
20380--- linux-2.6.29.6/drivers/usb/core/message.c 2009-07-02 19:41:20.000000000 -0400 20013--- linux-2.6.30.4/drivers/usb/core/message.c 2009-07-30 20:32:40.522633558 -0400
20381+++ linux-2.6.29.6/drivers/usb/core/message.c 2009-07-23 17:34:32.137720292 -0400 20014+++ linux-2.6.30.4/drivers/usb/core/message.c 2009-07-30 20:32:47.970590702 -0400
20382@@ -866,7 +866,8 @@ char *usb_cache_string(struct usb_device 20015@@ -890,8 +890,8 @@ char *usb_cache_string(struct usb_device
20016 buf = kmalloc(256, GFP_KERNEL);
20383 if (buf) { 20017 if (buf) {
20384 len = usb_string(udev, index, buf, 256); 20018 len = usb_string(udev, index, buf, 256);
20385 if (len > 0) { 20019- if (len > 0) {
20386- smallbuf = kmalloc(++len, GFP_KERNEL); 20020- smallbuf = kmalloc(++len, GFP_KERNEL);
20387+ ++len; 20021+ if (len++ > 0) {
20388+ smallbuf = kmalloc(len, GFP_KERNEL); 20022+ smallbuf = kmalloc(len, GFP_KERNEL);
20389 if (!smallbuf) 20023 if (!smallbuf)
20390 return buf; 20024 return buf;
20391 memcpy(smallbuf, buf, len); 20025 memcpy(smallbuf, buf, len);
20392diff -urNp linux-2.6.29.6/drivers/usb/gadget/inode.c linux-2.6.29.6/drivers/usb/gadget/inode.c 20026diff -urNp linux-2.6.30.4/drivers/usb/gadget/inode.c linux-2.6.30.4/drivers/usb/gadget/inode.c
20393--- linux-2.6.29.6/drivers/usb/gadget/inode.c 2009-07-02 19:41:20.000000000 -0400 20027--- linux-2.6.30.4/drivers/usb/gadget/inode.c 2009-07-24 17:47:51.000000000 -0400
20394+++ linux-2.6.29.6/drivers/usb/gadget/inode.c 2009-07-23 18:40:28.126687499 -0400 20028+++ linux-2.6.30.4/drivers/usb/gadget/inode.c 2009-07-30 09:48:10.057446184 -0400
20395@@ -2035,7 +2035,7 @@ gadgetfs_create_file (struct super_block 20029@@ -2035,7 +2035,7 @@ gadgetfs_create_file (struct super_block
20396 return inode; 20030 return inode;
20397 } 20031 }
@@ -20401,9 +20035,9 @@ diff -urNp linux-2.6.29.6/drivers/usb/gadget/inode.c linux-2.6.29.6/drivers/usb/
20401 .statfs = simple_statfs, 20035 .statfs = simple_statfs,
20402 .drop_inode = generic_delete_inode, 20036 .drop_inode = generic_delete_inode,
20403 }; 20037 };
20404diff -urNp linux-2.6.29.6/drivers/usb/gadget/printer.c linux-2.6.29.6/drivers/usb/gadget/printer.c 20038diff -urNp linux-2.6.30.4/drivers/usb/gadget/printer.c linux-2.6.30.4/drivers/usb/gadget/printer.c
20405--- linux-2.6.29.6/drivers/usb/gadget/printer.c 2009-07-02 19:41:20.000000000 -0400 20039--- linux-2.6.30.4/drivers/usb/gadget/printer.c 2009-07-24 17:47:51.000000000 -0400
20406+++ linux-2.6.29.6/drivers/usb/gadget/printer.c 2009-07-23 18:40:28.127445994 -0400 20040+++ linux-2.6.30.4/drivers/usb/gadget/printer.c 2009-07-30 09:48:10.059376894 -0400
20407@@ -875,7 +875,7 @@ printer_ioctl(struct file *fd, unsigned 20041@@ -875,7 +875,7 @@ printer_ioctl(struct file *fd, unsigned
20408 } 20042 }
20409 20043
@@ -20413,9 +20047,9 @@ diff -urNp linux-2.6.29.6/drivers/usb/gadget/printer.c linux-2.6.29.6/drivers/us
20413 .owner = THIS_MODULE, 20047 .owner = THIS_MODULE,
20414 .open = printer_open, 20048 .open = printer_open,
20415 .read = printer_read, 20049 .read = printer_read,
20416diff -urNp linux-2.6.29.6/drivers/usb/host/ehci-pci.c linux-2.6.29.6/drivers/usb/host/ehci-pci.c 20050diff -urNp linux-2.6.30.4/drivers/usb/host/ehci-pci.c linux-2.6.30.4/drivers/usb/host/ehci-pci.c
20417--- linux-2.6.29.6/drivers/usb/host/ehci-pci.c 2009-07-02 19:41:20.000000000 -0400 20051--- linux-2.6.30.4/drivers/usb/host/ehci-pci.c 2009-07-24 17:47:51.000000000 -0400
20418+++ linux-2.6.29.6/drivers/usb/host/ehci-pci.c 2009-07-23 17:34:32.137720292 -0400 20052+++ linux-2.6.30.4/drivers/usb/host/ehci-pci.c 2009-07-30 09:48:10.059376894 -0400
20419@@ -418,7 +418,7 @@ static const struct pci_device_id pci_id 20053@@ -418,7 +418,7 @@ static const struct pci_device_id pci_id
20420 PCI_DEVICE_CLASS(PCI_CLASS_SERIAL_USB_EHCI, ~0), 20054 PCI_DEVICE_CLASS(PCI_CLASS_SERIAL_USB_EHCI, ~0),
20421 .driver_data = (unsigned long) &ehci_pci_hc_driver, 20055 .driver_data = (unsigned long) &ehci_pci_hc_driver,
@@ -20425,9 +20059,9 @@ diff -urNp linux-2.6.29.6/drivers/usb/host/ehci-pci.c linux-2.6.29.6/drivers/usb
20425 }; 20059 };
20426 MODULE_DEVICE_TABLE(pci, pci_ids); 20060 MODULE_DEVICE_TABLE(pci, pci_ids);
20427 20061
20428diff -urNp linux-2.6.29.6/drivers/usb/host/uhci-hcd.c linux-2.6.29.6/drivers/usb/host/uhci-hcd.c 20062diff -urNp linux-2.6.30.4/drivers/usb/host/uhci-hcd.c linux-2.6.30.4/drivers/usb/host/uhci-hcd.c
20429--- linux-2.6.29.6/drivers/usb/host/uhci-hcd.c 2009-07-02 19:41:20.000000000 -0400 20063--- linux-2.6.30.4/drivers/usb/host/uhci-hcd.c 2009-07-24 17:47:51.000000000 -0400
20430+++ linux-2.6.29.6/drivers/usb/host/uhci-hcd.c 2009-07-23 17:34:32.138862216 -0400 20064+++ linux-2.6.30.4/drivers/usb/host/uhci-hcd.c 2009-07-30 09:48:10.059941908 -0400
20431@@ -927,7 +927,7 @@ static const struct pci_device_id uhci_p 20065@@ -927,7 +927,7 @@ static const struct pci_device_id uhci_p
20432 /* handle any USB UHCI controller */ 20066 /* handle any USB UHCI controller */
20433 PCI_DEVICE_CLASS(PCI_CLASS_SERIAL_USB_UHCI, ~0), 20067 PCI_DEVICE_CLASS(PCI_CLASS_SERIAL_USB_UHCI, ~0),
@@ -20437,9 +20071,9 @@ diff -urNp linux-2.6.29.6/drivers/usb/host/uhci-hcd.c linux-2.6.29.6/drivers/usb
20437 }; 20071 };
20438 20072
20439 MODULE_DEVICE_TABLE(pci, uhci_pci_ids); 20073 MODULE_DEVICE_TABLE(pci, uhci_pci_ids);
20440diff -urNp linux-2.6.29.6/drivers/usb/host/whci/debug.c linux-2.6.29.6/drivers/usb/host/whci/debug.c 20074diff -urNp linux-2.6.30.4/drivers/usb/host/whci/debug.c linux-2.6.30.4/drivers/usb/host/whci/debug.c
20441--- linux-2.6.29.6/drivers/usb/host/whci/debug.c 2009-07-02 19:41:20.000000000 -0400 20075--- linux-2.6.30.4/drivers/usb/host/whci/debug.c 2009-07-24 17:47:51.000000000 -0400
20442+++ linux-2.6.29.6/drivers/usb/host/whci/debug.c 2009-07-23 18:40:28.128284960 -0400 20076+++ linux-2.6.30.4/drivers/usb/host/whci/debug.c 2009-07-30 09:48:10.059941908 -0400
20443@@ -134,7 +134,7 @@ static int pzl_open(struct inode *inode, 20077@@ -134,7 +134,7 @@ static int pzl_open(struct inode *inode,
20444 return single_open(file, pzl_print, inode->i_private); 20078 return single_open(file, pzl_print, inode->i_private);
20445 } 20079 }
@@ -20467,10 +20101,10 @@ diff -urNp linux-2.6.29.6/drivers/usb/host/whci/debug.c linux-2.6.29.6/drivers/u
20467 .open = pzl_open, 20101 .open = pzl_open,
20468 .read = seq_read, 20102 .read = seq_read,
20469 .llseek = seq_lseek, 20103 .llseek = seq_lseek,
20470diff -urNp linux-2.6.29.6/drivers/usb/mon/mon_bin.c linux-2.6.29.6/drivers/usb/mon/mon_bin.c 20104diff -urNp linux-2.6.30.4/drivers/usb/mon/mon_bin.c linux-2.6.30.4/drivers/usb/mon/mon_bin.c
20471--- linux-2.6.29.6/drivers/usb/mon/mon_bin.c 2009-07-02 19:41:20.000000000 -0400 20105--- linux-2.6.30.4/drivers/usb/mon/mon_bin.c 2009-07-24 17:47:51.000000000 -0400
20472+++ linux-2.6.29.6/drivers/usb/mon/mon_bin.c 2009-07-23 18:40:28.128284960 -0400 20106+++ linux-2.6.30.4/drivers/usb/mon/mon_bin.c 2009-07-30 09:48:10.059941908 -0400
20473@@ -1094,7 +1094,7 @@ static int mon_bin_vma_fault(struct vm_a 20107@@ -1184,7 +1184,7 @@ static int mon_bin_vma_fault(struct vm_a
20474 return 0; 20108 return 0;
20475 } 20109 }
20476 20110
@@ -20479,9 +20113,9 @@ diff -urNp linux-2.6.29.6/drivers/usb/mon/mon_bin.c linux-2.6.29.6/drivers/usb/m
20479 .open = mon_bin_vma_open, 20113 .open = mon_bin_vma_open,
20480 .close = mon_bin_vma_close, 20114 .close = mon_bin_vma_close,
20481 .fault = mon_bin_vma_fault, 20115 .fault = mon_bin_vma_fault,
20482diff -urNp linux-2.6.29.6/drivers/usb/storage/debug.h linux-2.6.29.6/drivers/usb/storage/debug.h 20116diff -urNp linux-2.6.30.4/drivers/usb/storage/debug.h linux-2.6.30.4/drivers/usb/storage/debug.h
20483--- linux-2.6.29.6/drivers/usb/storage/debug.h 2009-07-02 19:41:20.000000000 -0400 20117--- linux-2.6.30.4/drivers/usb/storage/debug.h 2009-07-24 17:47:51.000000000 -0400
20484+++ linux-2.6.29.6/drivers/usb/storage/debug.h 2009-07-23 17:34:32.138862216 -0400 20118+++ linux-2.6.30.4/drivers/usb/storage/debug.h 2009-07-30 09:48:10.059941908 -0400
20485@@ -54,9 +54,9 @@ void usb_stor_show_sense( unsigned char 20119@@ -54,9 +54,9 @@ void usb_stor_show_sense( unsigned char
20486 #define US_DEBUGPX(x...) printk( x ) 20120 #define US_DEBUGPX(x...) printk( x )
20487 #define US_DEBUG(x) x 20121 #define US_DEBUG(x) x
@@ -20495,30 +20129,33 @@ diff -urNp linux-2.6.29.6/drivers/usb/storage/debug.h linux-2.6.29.6/drivers/usb
20495 #endif 20129 #endif
20496 20130
20497 #endif 20131 #endif
20498diff -urNp linux-2.6.29.6/drivers/usb/storage/usb.c linux-2.6.29.6/drivers/usb/storage/usb.c 20132diff -urNp linux-2.6.30.4/drivers/usb/storage/usb.c linux-2.6.30.4/drivers/usb/storage/usb.c
20499--- linux-2.6.29.6/drivers/usb/storage/usb.c 2009-07-02 19:41:20.000000000 -0400 20133--- linux-2.6.30.4/drivers/usb/storage/usb.c 2009-07-24 17:47:51.000000000 -0400
20500+++ linux-2.6.29.6/drivers/usb/storage/usb.c 2009-07-23 17:34:32.138862216 -0400 20134+++ linux-2.6.30.4/drivers/usb/storage/usb.c 2009-07-30 09:48:10.061383402 -0400
20501@@ -141,7 +141,7 @@ static struct usb_device_id storage_usb_ 20135@@ -118,7 +118,7 @@ MODULE_PARM_DESC(quirks, "supplemental l
20502 #undef COMPLIANT_DEV 20136
20503 #undef USUAL_DEV 20137 static struct us_unusual_dev us_unusual_dev_list[] = {
20504 /* Terminating entry */ 20138 # include "unusual_devs.h"
20505- { } 20139- { } /* Terminating entry */
20506+ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } 20140+ { NULL, NULL, 0, 0, NULL } /* Terminating entry */
20507 }; 20141 };
20508 20142
20509 MODULE_DEVICE_TABLE (usb, storage_usb_ids); 20143 #undef UNUSUAL_DEV
20510@@ -184,7 +184,7 @@ static struct us_unusual_dev us_unusual_ 20144diff -urNp linux-2.6.30.4/drivers/usb/storage/usual-tables.c linux-2.6.30.4/drivers/usb/storage/usual-tables.c
20511 # undef USUAL_DEV 20145--- linux-2.6.30.4/drivers/usb/storage/usual-tables.c 2009-07-24 17:47:51.000000000 -0400
20512 20146+++ linux-2.6.30.4/drivers/usb/storage/usual-tables.c 2009-07-30 09:48:10.061383402 -0400
20513 /* Terminating entry */ 20147@@ -48,7 +48,7 @@
20514- { NULL } 20148
20515+ { NULL, NULL, 0, 0, NULL } 20149 struct usb_device_id usb_storage_usb_ids[] = {
20150 # include "unusual_devs.h"
20151- { } /* Terminating entry */
20152+ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } /* Terminating entry */
20516 }; 20153 };
20154 EXPORT_SYMBOL_GPL(usb_storage_usb_ids);
20517 20155
20518 20156diff -urNp linux-2.6.30.4/drivers/uwb/uwb-debug.c linux-2.6.30.4/drivers/uwb/uwb-debug.c
20519diff -urNp linux-2.6.29.6/drivers/uwb/uwb-debug.c linux-2.6.29.6/drivers/uwb/uwb-debug.c 20157--- linux-2.6.30.4/drivers/uwb/uwb-debug.c 2009-07-24 17:47:51.000000000 -0400
20520--- linux-2.6.29.6/drivers/uwb/uwb-debug.c 2009-07-02 19:41:20.000000000 -0400 20158+++ linux-2.6.30.4/drivers/uwb/uwb-debug.c 2009-07-30 09:48:10.061383402 -0400
20521+++ linux-2.6.29.6/drivers/uwb/uwb-debug.c 2009-07-23 18:40:28.137381953 -0400
20522@@ -205,7 +205,7 @@ static ssize_t command_write(struct file 20159@@ -205,7 +205,7 @@ static ssize_t command_write(struct file
20523 return ret < 0 ? ret : len; 20160 return ret < 0 ? ret : len;
20524 } 20161 }
@@ -20546,9 +20183,9 @@ diff -urNp linux-2.6.29.6/drivers/uwb/uwb-debug.c linux-2.6.29.6/drivers/uwb/uwb
20546 .open = drp_avail_open, 20183 .open = drp_avail_open,
20547 .read = seq_read, 20184 .read = seq_read,
20548 .llseek = seq_lseek, 20185 .llseek = seq_lseek,
20549diff -urNp linux-2.6.29.6/drivers/uwb/wlp/messages.c linux-2.6.29.6/drivers/uwb/wlp/messages.c 20186diff -urNp linux-2.6.30.4/drivers/uwb/wlp/messages.c linux-2.6.30.4/drivers/uwb/wlp/messages.c
20550--- linux-2.6.29.6/drivers/uwb/wlp/messages.c 2009-07-02 19:41:20.000000000 -0400 20187--- linux-2.6.30.4/drivers/uwb/wlp/messages.c 2009-07-24 17:47:51.000000000 -0400
20551+++ linux-2.6.29.6/drivers/uwb/wlp/messages.c 2009-07-23 17:34:32.139921746 -0400 20188+++ linux-2.6.30.4/drivers/uwb/wlp/messages.c 2009-07-30 09:48:10.062348453 -0400
20552@@ -903,7 +903,7 @@ int wlp_parse_f0(struct wlp *wlp, struct 20189@@ -903,7 +903,7 @@ int wlp_parse_f0(struct wlp *wlp, struct
20553 size_t len = skb->len; 20190 size_t len = skb->len;
20554 size_t used; 20191 size_t used;
@@ -20558,9 +20195,9 @@ diff -urNp linux-2.6.29.6/drivers/uwb/wlp/messages.c linux-2.6.29.6/drivers/uwb/
20558 enum wlp_assc_error assc_err; 20195 enum wlp_assc_error assc_err;
20559 char enonce_buf[WLP_WSS_NONCE_STRSIZE]; 20196 char enonce_buf[WLP_WSS_NONCE_STRSIZE];
20560 char rnonce_buf[WLP_WSS_NONCE_STRSIZE]; 20197 char rnonce_buf[WLP_WSS_NONCE_STRSIZE];
20561diff -urNp linux-2.6.29.6/drivers/video/fb_defio.c linux-2.6.29.6/drivers/video/fb_defio.c 20198diff -urNp linux-2.6.30.4/drivers/video/fb_defio.c linux-2.6.30.4/drivers/video/fb_defio.c
20562--- linux-2.6.29.6/drivers/video/fb_defio.c 2009-07-02 19:41:20.000000000 -0400 20199--- linux-2.6.30.4/drivers/video/fb_defio.c 2009-07-24 17:47:51.000000000 -0400
20563+++ linux-2.6.29.6/drivers/video/fb_defio.c 2009-07-23 18:40:28.143844676 -0400 20200+++ linux-2.6.30.4/drivers/video/fb_defio.c 2009-07-30 09:48:10.062348453 -0400
20564@@ -125,7 +125,7 @@ page_already_added: 20201@@ -125,7 +125,7 @@ page_already_added:
20565 return 0; 20202 return 0;
20566 } 20203 }
@@ -20570,10 +20207,10 @@ diff -urNp linux-2.6.29.6/drivers/video/fb_defio.c linux-2.6.29.6/drivers/video/
20570 .fault = fb_deferred_io_fault, 20207 .fault = fb_deferred_io_fault,
20571 .page_mkwrite = fb_deferred_io_mkwrite, 20208 .page_mkwrite = fb_deferred_io_mkwrite,
20572 }; 20209 };
20573diff -urNp linux-2.6.29.6/drivers/video/fbmem.c linux-2.6.29.6/drivers/video/fbmem.c 20210diff -urNp linux-2.6.30.4/drivers/video/fbmem.c linux-2.6.30.4/drivers/video/fbmem.c
20574--- linux-2.6.29.6/drivers/video/fbmem.c 2009-07-02 19:41:20.000000000 -0400 20211--- linux-2.6.30.4/drivers/video/fbmem.c 2009-07-24 17:47:51.000000000 -0400
20575+++ linux-2.6.29.6/drivers/video/fbmem.c 2009-07-23 17:34:32.140710667 -0400 20212+++ linux-2.6.30.4/drivers/video/fbmem.c 2009-07-30 09:48:10.062348453 -0400
20576@@ -393,7 +393,7 @@ static void fb_do_show_logo(struct fb_in 20213@@ -404,7 +404,7 @@ static void fb_do_show_logo(struct fb_in
20577 image->dx += image->width + 8; 20214 image->dx += image->width + 8;
20578 } 20215 }
20579 } else if (rotate == FB_ROTATE_UD) { 20216 } else if (rotate == FB_ROTATE_UD) {
@@ -20582,7 +20219,7 @@ diff -urNp linux-2.6.29.6/drivers/video/fbmem.c linux-2.6.29.6/drivers/video/fbm
20582 info->fbops->fb_imageblit(info, image); 20219 info->fbops->fb_imageblit(info, image);
20583 image->dx -= image->width + 8; 20220 image->dx -= image->width + 8;
20584 } 20221 }
20585@@ -405,7 +405,7 @@ static void fb_do_show_logo(struct fb_in 20222@@ -416,7 +416,7 @@ static void fb_do_show_logo(struct fb_in
20586 image->dy += image->height + 8; 20223 image->dy += image->height + 8;
20587 } 20224 }
20588 } else if (rotate == FB_ROTATE_CCW) { 20225 } else if (rotate == FB_ROTATE_CCW) {
@@ -20591,7 +20228,7 @@ diff -urNp linux-2.6.29.6/drivers/video/fbmem.c linux-2.6.29.6/drivers/video/fbm
20591 info->fbops->fb_imageblit(info, image); 20228 info->fbops->fb_imageblit(info, image);
20592 image->dy -= image->height + 8; 20229 image->dy -= image->height + 8;
20593 } 20230 }
20594@@ -1098,7 +1098,7 @@ static long do_fb_ioctl(struct fb_info * 20231@@ -1109,7 +1109,7 @@ static long do_fb_ioctl(struct fb_info *
20595 return -EFAULT; 20232 return -EFAULT;
20596 if (con2fb.console < 1 || con2fb.console > MAX_NR_CONSOLES) 20233 if (con2fb.console < 1 || con2fb.console > MAX_NR_CONSOLES)
20597 return -EINVAL; 20234 return -EINVAL;
@@ -20600,9 +20237,9 @@ diff -urNp linux-2.6.29.6/drivers/video/fbmem.c linux-2.6.29.6/drivers/video/fbm
20600 return -EINVAL; 20237 return -EINVAL;
20601 if (!registered_fb[con2fb.framebuffer]) 20238 if (!registered_fb[con2fb.framebuffer])
20602 request_module("fb%d", con2fb.framebuffer); 20239 request_module("fb%d", con2fb.framebuffer);
20603diff -urNp linux-2.6.29.6/drivers/video/fbmon.c linux-2.6.29.6/drivers/video/fbmon.c 20240diff -urNp linux-2.6.30.4/drivers/video/fbmon.c linux-2.6.30.4/drivers/video/fbmon.c
20604--- linux-2.6.29.6/drivers/video/fbmon.c 2009-07-02 19:41:20.000000000 -0400 20241--- linux-2.6.30.4/drivers/video/fbmon.c 2009-07-24 17:47:51.000000000 -0400
20605+++ linux-2.6.29.6/drivers/video/fbmon.c 2009-07-23 17:34:32.140710667 -0400 20242+++ linux-2.6.30.4/drivers/video/fbmon.c 2009-07-30 09:48:10.063350135 -0400
20606@@ -45,7 +45,7 @@ 20243@@ -45,7 +45,7 @@
20607 #ifdef DEBUG 20244 #ifdef DEBUG
20608 #define DPRINTK(fmt, args...) printk(fmt,## args) 20245 #define DPRINTK(fmt, args...) printk(fmt,## args)
@@ -20612,9 +20249,9 @@ diff -urNp linux-2.6.29.6/drivers/video/fbmon.c linux-2.6.29.6/drivers/video/fbm
20612 #endif 20249 #endif
20613 20250
20614 #define FBMON_FIX_HEADER 1 20251 #define FBMON_FIX_HEADER 1
20615diff -urNp linux-2.6.29.6/drivers/video/i810/i810_accel.c linux-2.6.29.6/drivers/video/i810/i810_accel.c 20252diff -urNp linux-2.6.30.4/drivers/video/i810/i810_accel.c linux-2.6.30.4/drivers/video/i810/i810_accel.c
20616--- linux-2.6.29.6/drivers/video/i810/i810_accel.c 2009-07-02 19:41:20.000000000 -0400 20253--- linux-2.6.30.4/drivers/video/i810/i810_accel.c 2009-07-24 17:47:51.000000000 -0400
20617+++ linux-2.6.29.6/drivers/video/i810/i810_accel.c 2009-07-23 17:34:32.140710667 -0400 20254+++ linux-2.6.30.4/drivers/video/i810/i810_accel.c 2009-07-30 09:48:10.063350135 -0400
20618@@ -73,6 +73,7 @@ static inline int wait_for_space(struct 20255@@ -73,6 +73,7 @@ static inline int wait_for_space(struct
20619 } 20256 }
20620 } 20257 }
@@ -20623,9 +20260,9 @@ diff -urNp linux-2.6.29.6/drivers/video/i810/i810_accel.c linux-2.6.29.6/drivers
20623 i810_report_error(mmio); 20260 i810_report_error(mmio);
20624 par->dev_flags |= LOCKUP; 20261 par->dev_flags |= LOCKUP;
20625 info->pixmap.scan_align = 1; 20262 info->pixmap.scan_align = 1;
20626diff -urNp linux-2.6.29.6/drivers/video/i810/i810_main.c linux-2.6.29.6/drivers/video/i810/i810_main.c 20263diff -urNp linux-2.6.30.4/drivers/video/i810/i810_main.c linux-2.6.30.4/drivers/video/i810/i810_main.c
20627--- linux-2.6.29.6/drivers/video/i810/i810_main.c 2009-07-02 19:41:20.000000000 -0400 20264--- linux-2.6.30.4/drivers/video/i810/i810_main.c 2009-07-24 17:47:51.000000000 -0400
20628+++ linux-2.6.29.6/drivers/video/i810/i810_main.c 2009-07-23 17:34:32.141886076 -0400 20265+++ linux-2.6.30.4/drivers/video/i810/i810_main.c 2009-07-30 09:48:10.064300485 -0400
20629@@ -120,7 +120,7 @@ static struct pci_device_id i810fb_pci_t 20266@@ -120,7 +120,7 @@ static struct pci_device_id i810fb_pci_t
20630 PCI_ANY_ID, PCI_ANY_ID, 0, 0, 4 }, 20267 PCI_ANY_ID, PCI_ANY_ID, 0, 0, 4 },
20631 { PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82815_CGC, 20268 { PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82815_CGC,
@@ -20635,9 +20272,9 @@ diff -urNp linux-2.6.29.6/drivers/video/i810/i810_main.c linux-2.6.29.6/drivers/
20635 }; 20272 };
20636 20273
20637 static struct pci_driver i810fb_driver = { 20274 static struct pci_driver i810fb_driver = {
20638diff -urNp linux-2.6.29.6/drivers/video/modedb.c linux-2.6.29.6/drivers/video/modedb.c 20275diff -urNp linux-2.6.30.4/drivers/video/modedb.c linux-2.6.30.4/drivers/video/modedb.c
20639--- linux-2.6.29.6/drivers/video/modedb.c 2009-07-02 19:41:20.000000000 -0400 20276--- linux-2.6.30.4/drivers/video/modedb.c 2009-07-24 17:47:51.000000000 -0400
20640+++ linux-2.6.29.6/drivers/video/modedb.c 2009-07-23 17:34:32.141886076 -0400 20277+++ linux-2.6.30.4/drivers/video/modedb.c 2009-07-30 09:48:10.064300485 -0400
20641@@ -38,232 +38,232 @@ static const struct fb_videomode modedb[ 20278@@ -38,232 +38,232 @@ static const struct fb_videomode modedb[
20642 { 20279 {
20643 /* 640x400 @ 70 Hz, 31.5 kHz hsync */ 20280 /* 640x400 @ 70 Hz, 31.5 kHz hsync */
@@ -20928,10 +20565,10 @@ diff -urNp linux-2.6.29.6/drivers/video/modedb.c linux-2.6.29.6/drivers/video/mo
20928 }, 20565 },
20929 }; 20566 };
20930 20567
20931diff -urNp linux-2.6.29.6/drivers/video/omap/dispc.c linux-2.6.29.6/drivers/video/omap/dispc.c 20568diff -urNp linux-2.6.30.4/drivers/video/omap/dispc.c linux-2.6.30.4/drivers/video/omap/dispc.c
20932--- linux-2.6.29.6/drivers/video/omap/dispc.c 2009-07-02 19:41:20.000000000 -0400 20569--- linux-2.6.30.4/drivers/video/omap/dispc.c 2009-07-24 17:47:51.000000000 -0400
20933+++ linux-2.6.29.6/drivers/video/omap/dispc.c 2009-07-23 18:40:28.146299850 -0400 20570+++ linux-2.6.30.4/drivers/video/omap/dispc.c 2009-07-30 09:48:10.065250322 -0400
20934@@ -1011,7 +1011,7 @@ static void mmap_user_close(struct vm_ar 20571@@ -1013,7 +1013,7 @@ static void mmap_user_close(struct vm_ar
20935 atomic_dec(&dispc.map_count[plane]); 20572 atomic_dec(&dispc.map_count[plane]);
20936 } 20573 }
20937 20574
@@ -20940,9 +20577,9 @@ diff -urNp linux-2.6.29.6/drivers/video/omap/dispc.c linux-2.6.29.6/drivers/vide
20940 .open = mmap_user_open, 20577 .open = mmap_user_open,
20941 .close = mmap_user_close, 20578 .close = mmap_user_close,
20942 }; 20579 };
20943diff -urNp linux-2.6.29.6/drivers/video/uvesafb.c linux-2.6.29.6/drivers/video/uvesafb.c 20580diff -urNp linux-2.6.30.4/drivers/video/uvesafb.c linux-2.6.30.4/drivers/video/uvesafb.c
20944--- linux-2.6.29.6/drivers/video/uvesafb.c 2009-07-02 19:41:20.000000000 -0400 20581--- linux-2.6.30.4/drivers/video/uvesafb.c 2009-07-24 17:47:51.000000000 -0400
20945+++ linux-2.6.29.6/drivers/video/uvesafb.c 2009-07-23 17:34:32.142789474 -0400 20582+++ linux-2.6.30.4/drivers/video/uvesafb.c 2009-07-30 09:48:10.065250322 -0400
20946@@ -18,6 +18,7 @@ 20583@@ -18,6 +18,7 @@
20947 #include <linux/fb.h> 20584 #include <linux/fb.h>
20948 #include <linux/io.h> 20585 #include <linux/io.h>
@@ -20951,7 +20588,7 @@ diff -urNp linux-2.6.29.6/drivers/video/uvesafb.c linux-2.6.29.6/drivers/video/u
20951 #include <video/edid.h> 20588 #include <video/edid.h>
20952 #include <video/uvesafb.h> 20589 #include <video/uvesafb.h>
20953 #ifdef CONFIG_X86 20590 #ifdef CONFIG_X86
20954@@ -117,7 +118,7 @@ static int uvesafb_helper_start(void) 20591@@ -118,7 +119,7 @@ static int uvesafb_helper_start(void)
20955 NULL, 20592 NULL,
20956 }; 20593 };
20957 20594
@@ -20960,7 +20597,7 @@ diff -urNp linux-2.6.29.6/drivers/video/uvesafb.c linux-2.6.29.6/drivers/video/u
20960 } 20597 }
20961 20598
20962 /* 20599 /*
20963@@ -574,10 +575,34 @@ static int __devinit uvesafb_vbe_getpmi( 20600@@ -566,10 +567,34 @@ static int __devinit uvesafb_vbe_getpmi(
20964 if ((task->t.regs.eax & 0xffff) != 0x4f || task->t.regs.es < 0xc000) { 20601 if ((task->t.regs.eax & 0xffff) != 0x4f || task->t.regs.es < 0xc000) {
20965 par->pmi_setpal = par->ypan = 0; 20602 par->pmi_setpal = par->ypan = 0;
20966 } else { 20603 } else {
@@ -20995,7 +20632,7 @@ diff -urNp linux-2.6.29.6/drivers/video/uvesafb.c linux-2.6.29.6/drivers/video/u
20995 printk(KERN_INFO "uvesafb: protected mode interface info at " 20632 printk(KERN_INFO "uvesafb: protected mode interface info at "
20996 "%04x:%04x\n", 20633 "%04x:%04x\n",
20997 (u16)task->t.regs.es, (u16)task->t.regs.edi); 20634 (u16)task->t.regs.es, (u16)task->t.regs.edi);
20998@@ -1832,6 +1857,11 @@ out: 20635@@ -1825,6 +1850,11 @@ out:
20999 if (par->vbe_modes) 20636 if (par->vbe_modes)
21000 kfree(par->vbe_modes); 20637 kfree(par->vbe_modes);
21001 20638
@@ -21007,7 +20644,7 @@ diff -urNp linux-2.6.29.6/drivers/video/uvesafb.c linux-2.6.29.6/drivers/video/u
21007 framebuffer_release(info); 20644 framebuffer_release(info);
21008 return err; 20645 return err;
21009 } 20646 }
21010@@ -1858,6 +1888,12 @@ static int uvesafb_remove(struct platfor 20647@@ -1851,6 +1881,12 @@ static int uvesafb_remove(struct platfor
21011 kfree(par->vbe_state_orig); 20648 kfree(par->vbe_state_orig);
21012 if (par->vbe_state_saved) 20649 if (par->vbe_state_saved)
21013 kfree(par->vbe_state_saved); 20650 kfree(par->vbe_state_saved);
@@ -21020,9 +20657,9 @@ diff -urNp linux-2.6.29.6/drivers/video/uvesafb.c linux-2.6.29.6/drivers/video/u
21020 } 20657 }
21021 20658
21022 framebuffer_release(info); 20659 framebuffer_release(info);
21023diff -urNp linux-2.6.29.6/drivers/video/vesafb.c linux-2.6.29.6/drivers/video/vesafb.c 20660diff -urNp linux-2.6.30.4/drivers/video/vesafb.c linux-2.6.30.4/drivers/video/vesafb.c
21024--- linux-2.6.29.6/drivers/video/vesafb.c 2009-07-02 19:41:20.000000000 -0400 20661--- linux-2.6.30.4/drivers/video/vesafb.c 2009-07-24 17:47:51.000000000 -0400
21025+++ linux-2.6.29.6/drivers/video/vesafb.c 2009-07-23 17:34:32.142789474 -0400 20662+++ linux-2.6.30.4/drivers/video/vesafb.c 2009-07-30 09:48:10.066262821 -0400
21026@@ -9,6 +9,7 @@ 20663@@ -9,6 +9,7 @@
21027 */ 20664 */
21028 20665
@@ -21130,65 +20767,9 @@ diff -urNp linux-2.6.29.6/drivers/video/vesafb.c linux-2.6.29.6/drivers/video/ve
21130 if (info->screen_base) 20767 if (info->screen_base)
21131 iounmap(info->screen_base); 20768 iounmap(info->screen_base);
21132 framebuffer_release(info); 20769 framebuffer_release(info);
21133diff -urNp linux-2.6.29.6/drivers/watchdog/hpwdt.c linux-2.6.29.6/drivers/watchdog/hpwdt.c 20770diff -urNp linux-2.6.30.4/fs/9p/vfs_inode.c linux-2.6.30.4/fs/9p/vfs_inode.c
21134--- linux-2.6.29.6/drivers/watchdog/hpwdt.c 2009-07-02 19:41:20.000000000 -0400 20771--- linux-2.6.30.4/fs/9p/vfs_inode.c 2009-07-24 17:47:51.000000000 -0400
21135+++ linux-2.6.29.6/drivers/watchdog/hpwdt.c 2009-07-23 18:40:28.157294684 -0400 20772+++ linux-2.6.30.4/fs/9p/vfs_inode.c 2009-07-30 09:48:10.066262821 -0400
21136@@ -605,7 +605,7 @@ static long hpwdt_ioctl(struct file *fil
21137 /*
21138 * Kernel interfaces
21139 */
21140-static struct file_operations hpwdt_fops = {
21141+static const struct file_operations hpwdt_fops = {
21142 .owner = THIS_MODULE,
21143 .llseek = no_llseek,
21144 .write = hpwdt_write,
21145diff -urNp linux-2.6.29.6/drivers/watchdog/rc32434_wdt.c linux-2.6.29.6/drivers/watchdog/rc32434_wdt.c
21146--- linux-2.6.29.6/drivers/watchdog/rc32434_wdt.c 2009-07-02 19:41:20.000000000 -0400
21147+++ linux-2.6.29.6/drivers/watchdog/rc32434_wdt.c 2009-07-23 18:40:28.159486351 -0400
21148@@ -227,7 +227,7 @@ static long rc32434_wdt_ioctl(struct fil
21149 return 0;
21150 }
21151
21152-static struct file_operations rc32434_wdt_fops = {
21153+static const struct file_operations rc32434_wdt_fops = {
21154 .owner = THIS_MODULE,
21155 .llseek = no_llseek,
21156 .write = rc32434_wdt_write,
21157diff -urNp linux-2.6.29.6/fs/9p/v9fs_vfs.h linux-2.6.29.6/fs/9p/v9fs_vfs.h
21158--- linux-2.6.29.6/fs/9p/v9fs_vfs.h 2009-07-02 19:41:20.000000000 -0400
21159+++ linux-2.6.29.6/fs/9p/v9fs_vfs.h 2009-07-23 18:40:28.173305021 -0400
21160@@ -41,8 +41,8 @@ extern struct file_system_type v9fs_fs_t
21161 extern const struct address_space_operations v9fs_addr_operations;
21162 extern const struct file_operations v9fs_file_operations;
21163 extern const struct file_operations v9fs_dir_operations;
21164-extern struct dentry_operations v9fs_dentry_operations;
21165-extern struct dentry_operations v9fs_cached_dentry_operations;
21166+extern const struct dentry_operations v9fs_dentry_operations;
21167+extern const struct dentry_operations v9fs_cached_dentry_operations;
21168
21169 struct inode *v9fs_get_inode(struct super_block *sb, int mode);
21170 ino_t v9fs_qid2ino(struct p9_qid *qid);
21171diff -urNp linux-2.6.29.6/fs/9p/vfs_dentry.c linux-2.6.29.6/fs/9p/vfs_dentry.c
21172--- linux-2.6.29.6/fs/9p/vfs_dentry.c 2009-07-02 19:41:20.000000000 -0400
21173+++ linux-2.6.29.6/fs/9p/vfs_dentry.c 2009-07-23 18:40:28.185251831 -0400
21174@@ -104,12 +104,12 @@ void v9fs_dentry_release(struct dentry *
21175 }
21176 }
21177
21178-struct dentry_operations v9fs_cached_dentry_operations = {
21179+const struct dentry_operations v9fs_cached_dentry_operations = {
21180 .d_delete = v9fs_cached_dentry_delete,
21181 .d_release = v9fs_dentry_release,
21182 };
21183
21184-struct dentry_operations v9fs_dentry_operations = {
21185+const struct dentry_operations v9fs_dentry_operations = {
21186 .d_delete = v9fs_dentry_delete,
21187 .d_release = v9fs_dentry_release,
21188 };
21189diff -urNp linux-2.6.29.6/fs/9p/vfs_inode.c linux-2.6.29.6/fs/9p/vfs_inode.c
21190--- linux-2.6.29.6/fs/9p/vfs_inode.c 2009-07-02 19:41:20.000000000 -0400
21191+++ linux-2.6.29.6/fs/9p/vfs_inode.c 2009-07-23 17:34:32.142789474 -0400
21192@@ -1021,7 +1021,7 @@ static void *v9fs_vfs_follow_link(struct 20773@@ -1021,7 +1021,7 @@ static void *v9fs_vfs_follow_link(struct
21193 static void 20774 static void
21194 v9fs_vfs_put_link(struct dentry *dentry, struct nameidata *nd, void *p) 20775 v9fs_vfs_put_link(struct dentry *dentry, struct nameidata *nd, void *p)
@@ -21198,77 +20779,9 @@ diff -urNp linux-2.6.29.6/fs/9p/vfs_inode.c linux-2.6.29.6/fs/9p/vfs_inode.c
21198 20779
21199 P9_DPRINTK(P9_DEBUG_VFS, " %s %s\n", dentry->d_name.name, 20780 P9_DPRINTK(P9_DEBUG_VFS, " %s %s\n", dentry->d_name.name,
21200 IS_ERR(s) ? "<error>" : s); 20781 IS_ERR(s) ? "<error>" : s);
21201diff -urNp linux-2.6.29.6/fs/adfs/adfs.h linux-2.6.29.6/fs/adfs/adfs.h 20782diff -urNp linux-2.6.30.4/fs/afs/proc.c linux-2.6.30.4/fs/afs/proc.c
21202--- linux-2.6.29.6/fs/adfs/adfs.h 2009-07-02 19:41:20.000000000 -0400 20783--- linux-2.6.30.4/fs/afs/proc.c 2009-07-24 17:47:51.000000000 -0400
21203+++ linux-2.6.29.6/fs/adfs/adfs.h 2009-07-23 18:40:28.197959261 -0400 20784+++ linux-2.6.30.4/fs/afs/proc.c 2009-07-30 09:48:10.066262821 -0400
21204@@ -86,7 +86,7 @@ void __adfs_error(struct super_block *sb
21205 /* dir_*.c */
21206 extern const struct inode_operations adfs_dir_inode_operations;
21207 extern const struct file_operations adfs_dir_operations;
21208-extern struct dentry_operations adfs_dentry_operations;
21209+extern const struct dentry_operations adfs_dentry_operations;
21210 extern struct adfs_dir_ops adfs_f_dir_ops;
21211 extern struct adfs_dir_ops adfs_fplus_dir_ops;
21212
21213diff -urNp linux-2.6.29.6/fs/adfs/dir.c linux-2.6.29.6/fs/adfs/dir.c
21214--- linux-2.6.29.6/fs/adfs/dir.c 2009-07-02 19:41:20.000000000 -0400
21215+++ linux-2.6.29.6/fs/adfs/dir.c 2009-07-23 18:40:28.198372454 -0400
21216@@ -263,7 +263,7 @@ adfs_compare(struct dentry *parent, stru
21217 return 0;
21218 }
21219
21220-struct dentry_operations adfs_dentry_operations = {
21221+const struct dentry_operations adfs_dentry_operations = {
21222 .d_hash = adfs_hash,
21223 .d_compare = adfs_compare,
21224 };
21225diff -urNp linux-2.6.29.6/fs/affs/affs.h linux-2.6.29.6/fs/affs/affs.h
21226--- linux-2.6.29.6/fs/affs/affs.h 2009-07-02 19:41:20.000000000 -0400
21227+++ linux-2.6.29.6/fs/affs/affs.h 2009-07-23 18:40:28.203573277 -0400
21228@@ -199,8 +199,8 @@ extern const struct address_space_operat
21229 extern const struct address_space_operations affs_aops;
21230 extern const struct address_space_operations affs_aops_ofs;
21231
21232-extern struct dentry_operations affs_dentry_operations;
21233-extern struct dentry_operations affs_dentry_operations_intl;
21234+extern const struct dentry_operations affs_dentry_operations;
21235+extern const struct dentry_operations affs_dentry_operations_intl;
21236
21237 static inline void
21238 affs_set_blocksize(struct super_block *sb, int size)
21239diff -urNp linux-2.6.29.6/fs/affs/namei.c linux-2.6.29.6/fs/affs/namei.c
21240--- linux-2.6.29.6/fs/affs/namei.c 2009-07-02 19:41:20.000000000 -0400
21241+++ linux-2.6.29.6/fs/affs/namei.c 2009-07-23 18:40:28.222351680 -0400
21242@@ -19,12 +19,12 @@ static int affs_intl_toupper(int ch);
21243 static int affs_intl_hash_dentry(struct dentry *, struct qstr *);
21244 static int affs_intl_compare_dentry(struct dentry *, struct qstr *, struct qstr *);
21245
21246-struct dentry_operations affs_dentry_operations = {
21247+const struct dentry_operations affs_dentry_operations = {
21248 .d_hash = affs_hash_dentry,
21249 .d_compare = affs_compare_dentry,
21250 };
21251
21252-static struct dentry_operations affs_intl_dentry_operations = {
21253+static const struct dentry_operations affs_intl_dentry_operations = {
21254 .d_hash = affs_intl_hash_dentry,
21255 .d_compare = affs_intl_compare_dentry,
21256 };
21257diff -urNp linux-2.6.29.6/fs/afs/dir.c linux-2.6.29.6/fs/afs/dir.c
21258--- linux-2.6.29.6/fs/afs/dir.c 2009-07-02 19:41:20.000000000 -0400
21259+++ linux-2.6.29.6/fs/afs/dir.c 2009-07-23 18:40:28.235494421 -0400
21260@@ -62,7 +62,7 @@ const struct inode_operations afs_dir_in
21261 .setattr = afs_setattr,
21262 };
21263
21264-static struct dentry_operations afs_fs_dentry_operations = {
21265+static const struct dentry_operations afs_fs_dentry_operations = {
21266 .d_revalidate = afs_d_revalidate,
21267 .d_delete = afs_d_delete,
21268 .d_release = afs_d_release,
21269diff -urNp linux-2.6.29.6/fs/afs/proc.c linux-2.6.29.6/fs/afs/proc.c
21270--- linux-2.6.29.6/fs/afs/proc.c 2009-07-02 19:41:20.000000000 -0400
21271+++ linux-2.6.29.6/fs/afs/proc.c 2009-07-23 18:40:28.235494421 -0400
21272@@ -28,7 +28,7 @@ static int afs_proc_cells_show(struct se 20785@@ -28,7 +28,7 @@ static int afs_proc_cells_show(struct se
21273 static ssize_t afs_proc_cells_write(struct file *file, const char __user *buf, 20786 static ssize_t afs_proc_cells_write(struct file *file, const char __user *buf,
21274 size_t size, loff_t *_pos); 20787 size_t size, loff_t *_pos);
@@ -21305,9 +20818,9 @@ diff -urNp linux-2.6.29.6/fs/afs/proc.c linux-2.6.29.6/fs/afs/proc.c
21305 .start = afs_proc_cell_servers_start, 20818 .start = afs_proc_cell_servers_start,
21306 .next = afs_proc_cell_servers_next, 20819 .next = afs_proc_cell_servers_next,
21307 .stop = afs_proc_cell_servers_stop, 20820 .stop = afs_proc_cell_servers_stop,
21308diff -urNp linux-2.6.29.6/fs/aio.c linux-2.6.29.6/fs/aio.c 20821diff -urNp linux-2.6.30.4/fs/aio.c linux-2.6.30.4/fs/aio.c
21309--- linux-2.6.29.6/fs/aio.c 2009-07-02 19:41:20.000000000 -0400 20822--- linux-2.6.30.4/fs/aio.c 2009-07-24 17:47:51.000000000 -0400
21310+++ linux-2.6.29.6/fs/aio.c 2009-07-23 17:34:32.143911823 -0400 20823+++ linux-2.6.30.4/fs/aio.c 2009-07-30 09:48:10.067233652 -0400
21311@@ -114,7 +114,7 @@ static int aio_setup_ring(struct kioctx 20824@@ -114,7 +114,7 @@ static int aio_setup_ring(struct kioctx
21312 size += sizeof(struct io_event) * nr_events; 20825 size += sizeof(struct io_event) * nr_events;
21313 nr_pages = (size + PAGE_SIZE-1) >> PAGE_SHIFT; 20826 nr_pages = (size + PAGE_SIZE-1) >> PAGE_SHIFT;
@@ -21317,74 +20830,22 @@ diff -urNp linux-2.6.29.6/fs/aio.c linux-2.6.29.6/fs/aio.c
21317 return -EINVAL; 20830 return -EINVAL;
21318 20831
21319 nr_events = (PAGE_SIZE * nr_pages - sizeof(struct aio_ring)) / sizeof(struct io_event); 20832 nr_events = (PAGE_SIZE * nr_pages - sizeof(struct aio_ring)) / sizeof(struct io_event);
21320diff -urNp linux-2.6.29.6/fs/anon_inodes.c linux-2.6.29.6/fs/anon_inodes.c 20833diff -urNp linux-2.6.30.4/fs/autofs/root.c linux-2.6.30.4/fs/autofs/root.c
21321--- linux-2.6.29.6/fs/anon_inodes.c 2009-07-02 19:41:20.000000000 -0400 20834--- linux-2.6.30.4/fs/autofs/root.c 2009-07-24 17:47:51.000000000 -0400
21322+++ linux-2.6.29.6/fs/anon_inodes.c 2009-07-23 18:40:28.246761754 -0400 20835+++ linux-2.6.30.4/fs/autofs/root.c 2009-07-30 09:48:10.067811135 -0400
21323@@ -48,7 +48,7 @@ static struct file_system_type anon_inod
21324 .get_sb = anon_inodefs_get_sb,
21325 .kill_sb = kill_anon_super,
21326 };
21327-static struct dentry_operations anon_inodefs_dentry_operations = {
21328+static const struct dentry_operations anon_inodefs_dentry_operations = {
21329 .d_delete = anon_inodefs_delete_dentry,
21330 };
21331
21332diff -urNp linux-2.6.29.6/fs/autofs/root.c linux-2.6.29.6/fs/autofs/root.c
21333--- linux-2.6.29.6/fs/autofs/root.c 2009-07-02 19:41:20.000000000 -0400
21334+++ linux-2.6.29.6/fs/autofs/root.c 2009-07-23 18:40:27.469277997 -0400
21335@@ -192,7 +192,7 @@ static int autofs_revalidate(struct dent
21336 return 1;
21337 }
21338
21339-static struct dentry_operations autofs_dentry_operations = {
21340+static const struct dentry_operations autofs_dentry_operations = {
21341 .d_revalidate = autofs_revalidate,
21342 };
21343
21344@@ -299,7 +299,8 @@ static int autofs_root_symlink(struct in 20836@@ -299,7 +299,8 @@ static int autofs_root_symlink(struct in
21345 set_bit(n,sbi->symlink_bitmap); 20837 set_bit(n,sbi->symlink_bitmap);
21346 sl = &sbi->symlink[n]; 20838 sl = &sbi->symlink[n];
21347 sl->len = strlen(symname); 20839 sl->len = strlen(symname);
21348- sl->data = kmalloc(slsize = sl->len+1, GFP_KERNEL); 20840- sl->data = kmalloc(slsize = sl->len+1, GFP_KERNEL);
21349+ slsize = sl->len + 1; 20841+ slsize = sl->len+1;
21350+ sl->data = kmalloc(slsize, GFP_KERNEL); 20842+ sl->data = kmalloc(slsize, GFP_KERNEL);
21351 if (!sl->data) { 20843 if (!sl->data) {
21352 clear_bit(n,sbi->symlink_bitmap); 20844 clear_bit(n,sbi->symlink_bitmap);
21353 unlock_kernel(); 20845 unlock_kernel();
21354diff -urNp linux-2.6.29.6/fs/autofs4/inode.c linux-2.6.29.6/fs/autofs4/inode.c 20846diff -urNp linux-2.6.30.4/fs/autofs4/symlink.c linux-2.6.30.4/fs/autofs4/symlink.c
21355--- linux-2.6.29.6/fs/autofs4/inode.c 2009-07-02 19:41:20.000000000 -0400 20847--- linux-2.6.30.4/fs/autofs4/symlink.c 2009-07-24 17:47:51.000000000 -0400
21356+++ linux-2.6.29.6/fs/autofs4/inode.c 2009-07-23 18:40:28.247289762 -0400 20848+++ linux-2.6.30.4/fs/autofs4/symlink.c 2009-07-30 09:48:10.067811135 -0400
21357@@ -310,7 +310,7 @@ static struct autofs_info *autofs4_mkroo
21358 return ino;
21359 }
21360
21361-static struct dentry_operations autofs4_sb_dentry_operations = {
21362+static const struct dentry_operations autofs4_sb_dentry_operations = {
21363 .d_release = autofs4_dentry_release,
21364 };
21365
21366diff -urNp linux-2.6.29.6/fs/autofs4/root.c linux-2.6.29.6/fs/autofs4/root.c
21367--- linux-2.6.29.6/fs/autofs4/root.c 2009-07-02 19:41:20.000000000 -0400
21368+++ linux-2.6.29.6/fs/autofs4/root.c 2009-07-23 18:40:28.260399846 -0400
21369@@ -349,13 +349,13 @@ void autofs4_dentry_release(struct dentr
21370 }
21371
21372 /* For dentries of directories in the root dir */
21373-static struct dentry_operations autofs4_root_dentry_operations = {
21374+static const struct dentry_operations autofs4_root_dentry_operations = {
21375 .d_revalidate = autofs4_revalidate,
21376 .d_release = autofs4_dentry_release,
21377 };
21378
21379 /* For other dentries */
21380-static struct dentry_operations autofs4_dentry_operations = {
21381+static const struct dentry_operations autofs4_dentry_operations = {
21382 .d_revalidate = autofs4_revalidate,
21383 .d_release = autofs4_dentry_release,
21384 };
21385diff -urNp linux-2.6.29.6/fs/autofs4/symlink.c linux-2.6.29.6/fs/autofs4/symlink.c
21386--- linux-2.6.29.6/fs/autofs4/symlink.c 2009-07-02 19:41:20.000000000 -0400
21387+++ linux-2.6.29.6/fs/autofs4/symlink.c 2009-07-23 17:34:32.143911823 -0400
21388@@ -15,7 +15,7 @@ 20849@@ -15,7 +15,7 @@
21389 static void *autofs4_follow_link(struct dentry *dentry, struct nameidata *nd) 20850 static void *autofs4_follow_link(struct dentry *dentry, struct nameidata *nd)
21390 { 20851 {
@@ -21394,9 +20855,9 @@ diff -urNp linux-2.6.29.6/fs/autofs4/symlink.c linux-2.6.29.6/fs/autofs4/symlink
21394 return NULL; 20855 return NULL;
21395 } 20856 }
21396 20857
21397diff -urNp linux-2.6.29.6/fs/befs/linuxvfs.c linux-2.6.29.6/fs/befs/linuxvfs.c 20858diff -urNp linux-2.6.30.4/fs/befs/linuxvfs.c linux-2.6.30.4/fs/befs/linuxvfs.c
21398--- linux-2.6.29.6/fs/befs/linuxvfs.c 2009-07-02 19:41:20.000000000 -0400 20859--- linux-2.6.30.4/fs/befs/linuxvfs.c 2009-07-24 17:47:51.000000000 -0400
21399+++ linux-2.6.29.6/fs/befs/linuxvfs.c 2009-07-23 17:34:32.144798896 -0400 20860+++ linux-2.6.30.4/fs/befs/linuxvfs.c 2009-07-30 09:48:10.067811135 -0400
21400@@ -493,7 +493,7 @@ static void befs_put_link(struct dentry 20861@@ -493,7 +493,7 @@ static void befs_put_link(struct dentry
21401 { 20862 {
21402 befs_inode_info *befs_ino = BEFS_I(dentry->d_inode); 20863 befs_inode_info *befs_ino = BEFS_I(dentry->d_inode);
@@ -21406,9 +20867,9 @@ diff -urNp linux-2.6.29.6/fs/befs/linuxvfs.c linux-2.6.29.6/fs/befs/linuxvfs.c
21406 if (!IS_ERR(link)) 20867 if (!IS_ERR(link))
21407 kfree(link); 20868 kfree(link);
21408 } 20869 }
21409diff -urNp linux-2.6.29.6/fs/binfmt_aout.c linux-2.6.29.6/fs/binfmt_aout.c 20870diff -urNp linux-2.6.30.4/fs/binfmt_aout.c linux-2.6.30.4/fs/binfmt_aout.c
21410--- linux-2.6.29.6/fs/binfmt_aout.c 2009-07-02 19:41:20.000000000 -0400 20871--- linux-2.6.30.4/fs/binfmt_aout.c 2009-07-24 17:47:51.000000000 -0400
21411+++ linux-2.6.29.6/fs/binfmt_aout.c 2009-07-23 17:34:32.144798896 -0400 20872+++ linux-2.6.30.4/fs/binfmt_aout.c 2009-07-30 11:10:49.111321779 -0400
21412@@ -16,6 +16,7 @@ 20873@@ -16,6 +16,7 @@
21413 #include <linux/string.h> 20874 #include <linux/string.h>
21414 #include <linux/fs.h> 20875 #include <linux/fs.h>
@@ -21476,10 +20937,10 @@ diff -urNp linux-2.6.29.6/fs/binfmt_aout.c linux-2.6.29.6/fs/binfmt_aout.c
21476 MAP_FIXED | MAP_PRIVATE | MAP_DENYWRITE | MAP_EXECUTABLE, 20937 MAP_FIXED | MAP_PRIVATE | MAP_DENYWRITE | MAP_EXECUTABLE,
21477 fd_offset + ex.a_text); 20938 fd_offset + ex.a_text);
21478 up_write(&current->mm->mmap_sem); 20939 up_write(&current->mm->mmap_sem);
21479diff -urNp linux-2.6.29.6/fs/binfmt_elf.c linux-2.6.29.6/fs/binfmt_elf.c 20940diff -urNp linux-2.6.30.4/fs/binfmt_elf.c linux-2.6.30.4/fs/binfmt_elf.c
21480--- linux-2.6.29.6/fs/binfmt_elf.c 2009-07-02 19:41:20.000000000 -0400 20941--- linux-2.6.30.4/fs/binfmt_elf.c 2009-07-30 20:32:40.526845645 -0400
21481+++ linux-2.6.29.6/fs/binfmt_elf.c 2009-07-23 17:34:32.146933187 -0400 20942+++ linux-2.6.30.4/fs/binfmt_elf.c 2009-07-30 20:32:47.974595765 -0400
21482@@ -42,6 +42,10 @@ 20943@@ -35,6 +35,10 @@
21483 #include <asm/param.h> 20944 #include <asm/param.h>
21484 #include <asm/page.h> 20945 #include <asm/page.h>
21485 20946
@@ -21490,7 +20951,7 @@ diff -urNp linux-2.6.29.6/fs/binfmt_elf.c linux-2.6.29.6/fs/binfmt_elf.c
21490 static int load_elf_binary(struct linux_binprm *bprm, struct pt_regs *regs); 20951 static int load_elf_binary(struct linux_binprm *bprm, struct pt_regs *regs);
21491 static int load_elf_library(struct file *); 20952 static int load_elf_library(struct file *);
21492 static unsigned long elf_map(struct file *, unsigned long, struct elf_phdr *, 20953 static unsigned long elf_map(struct file *, unsigned long, struct elf_phdr *,
21493@@ -57,6 +61,10 @@ static int elf_core_dump(long signr, str 20954@@ -50,6 +54,10 @@ static int elf_core_dump(long signr, str
21494 #define elf_core_dump NULL 20955 #define elf_core_dump NULL
21495 #endif 20956 #endif
21496 20957
@@ -21501,7 +20962,7 @@ diff -urNp linux-2.6.29.6/fs/binfmt_elf.c linux-2.6.29.6/fs/binfmt_elf.c
21501 #if ELF_EXEC_PAGESIZE > PAGE_SIZE 20962 #if ELF_EXEC_PAGESIZE > PAGE_SIZE
21502 #define ELF_MIN_ALIGN ELF_EXEC_PAGESIZE 20963 #define ELF_MIN_ALIGN ELF_EXEC_PAGESIZE
21503 #else 20964 #else
21504@@ -76,6 +84,11 @@ static struct linux_binfmt elf_format = 20965@@ -69,6 +77,11 @@ static struct linux_binfmt elf_format =
21505 .load_binary = load_elf_binary, 20966 .load_binary = load_elf_binary,
21506 .load_shlib = load_elf_library, 20967 .load_shlib = load_elf_library,
21507 .core_dump = elf_core_dump, 20968 .core_dump = elf_core_dump,
@@ -21513,7 +20974,7 @@ diff -urNp linux-2.6.29.6/fs/binfmt_elf.c linux-2.6.29.6/fs/binfmt_elf.c
21513 .min_coredump = ELF_EXEC_PAGESIZE, 20974 .min_coredump = ELF_EXEC_PAGESIZE,
21514 .hasvdso = 1 20975 .hasvdso = 1
21515 }; 20976 };
21516@@ -84,6 +97,8 @@ static struct linux_binfmt elf_format = 20977@@ -77,6 +90,8 @@ static struct linux_binfmt elf_format =
21517 20978
21518 static int set_brk(unsigned long start, unsigned long end) 20979 static int set_brk(unsigned long start, unsigned long end)
21519 { 20980 {
@@ -21522,7 +20983,7 @@ diff -urNp linux-2.6.29.6/fs/binfmt_elf.c linux-2.6.29.6/fs/binfmt_elf.c
21522 start = ELF_PAGEALIGN(start); 20983 start = ELF_PAGEALIGN(start);
21523 end = ELF_PAGEALIGN(end); 20984 end = ELF_PAGEALIGN(end);
21524 if (end > start) { 20985 if (end > start) {
21525@@ -94,7 +109,7 @@ static int set_brk(unsigned long start, 20986@@ -87,7 +102,7 @@ static int set_brk(unsigned long start,
21526 if (BAD_ADDR(addr)) 20987 if (BAD_ADDR(addr))
21527 return addr; 20988 return addr;
21528 } 20989 }
@@ -21531,7 +20992,7 @@ diff -urNp linux-2.6.29.6/fs/binfmt_elf.c linux-2.6.29.6/fs/binfmt_elf.c
21531 return 0; 20992 return 0;
21532 } 20993 }
21533 20994
21534@@ -155,7 +170,7 @@ create_elf_tables(struct linux_binprm *b 20995@@ -148,7 +163,7 @@ create_elf_tables(struct linux_binprm *b
21535 elf_addr_t __user *u_rand_bytes; 20996 elf_addr_t __user *u_rand_bytes;
21536 const char *k_platform = ELF_PLATFORM; 20997 const char *k_platform = ELF_PLATFORM;
21537 const char *k_base_platform = ELF_BASE_PLATFORM; 20998 const char *k_base_platform = ELF_BASE_PLATFORM;
@@ -21540,7 +21001,7 @@ diff -urNp linux-2.6.29.6/fs/binfmt_elf.c linux-2.6.29.6/fs/binfmt_elf.c
21540 int items; 21001 int items;
21541 elf_addr_t *elf_info; 21002 elf_addr_t *elf_info;
21542 int ei_index = 0; 21003 int ei_index = 0;
21543@@ -202,6 +217,10 @@ create_elf_tables(struct linux_binprm *b 21004@@ -195,6 +210,10 @@ create_elf_tables(struct linux_binprm *b
21544 * Generate 16 random bytes for userspace PRNG seeding. 21005 * Generate 16 random bytes for userspace PRNG seeding.
21545 */ 21006 */
21546 get_random_bytes(k_rand_bytes, sizeof(k_rand_bytes)); 21007 get_random_bytes(k_rand_bytes, sizeof(k_rand_bytes));
@@ -21551,7 +21012,7 @@ diff -urNp linux-2.6.29.6/fs/binfmt_elf.c linux-2.6.29.6/fs/binfmt_elf.c
21551 u_rand_bytes = (elf_addr_t __user *) 21012 u_rand_bytes = (elf_addr_t __user *)
21552 STACK_ALLOC(p, sizeof(k_rand_bytes)); 21013 STACK_ALLOC(p, sizeof(k_rand_bytes));
21553 if (__copy_to_user(u_rand_bytes, k_rand_bytes, sizeof(k_rand_bytes))) 21014 if (__copy_to_user(u_rand_bytes, k_rand_bytes, sizeof(k_rand_bytes)))
21554@@ -392,10 +411,10 @@ static unsigned long load_elf_interp(str 21015@@ -385,10 +404,10 @@ static unsigned long load_elf_interp(str
21555 { 21016 {
21556 struct elf_phdr *elf_phdata; 21017 struct elf_phdr *elf_phdata;
21557 struct elf_phdr *eppnt; 21018 struct elf_phdr *eppnt;
@@ -21564,7 +21025,7 @@ diff -urNp linux-2.6.29.6/fs/binfmt_elf.c linux-2.6.29.6/fs/binfmt_elf.c
21564 unsigned long total_size; 21025 unsigned long total_size;
21565 int retval, i, size; 21026 int retval, i, size;
21566 21027
21567@@ -441,6 +460,11 @@ static unsigned long load_elf_interp(str 21028@@ -434,6 +453,11 @@ static unsigned long load_elf_interp(str
21568 goto out_close; 21029 goto out_close;
21569 } 21030 }
21570 21031
@@ -21576,7 +21037,7 @@ diff -urNp linux-2.6.29.6/fs/binfmt_elf.c linux-2.6.29.6/fs/binfmt_elf.c
21576 eppnt = elf_phdata; 21037 eppnt = elf_phdata;
21577 for (i = 0; i < interp_elf_ex->e_phnum; i++, eppnt++) { 21038 for (i = 0; i < interp_elf_ex->e_phnum; i++, eppnt++) {
21578 if (eppnt->p_type == PT_LOAD) { 21039 if (eppnt->p_type == PT_LOAD) {
21579@@ -484,8 +508,8 @@ static unsigned long load_elf_interp(str 21040@@ -477,8 +501,8 @@ static unsigned long load_elf_interp(str
21580 k = load_addr + eppnt->p_vaddr; 21041 k = load_addr + eppnt->p_vaddr;
21581 if (BAD_ADDR(k) || 21042 if (BAD_ADDR(k) ||
21582 eppnt->p_filesz > eppnt->p_memsz || 21043 eppnt->p_filesz > eppnt->p_memsz ||
@@ -21587,7 +21048,7 @@ diff -urNp linux-2.6.29.6/fs/binfmt_elf.c linux-2.6.29.6/fs/binfmt_elf.c
21587 error = -ENOMEM; 21048 error = -ENOMEM;
21588 goto out_close; 21049 goto out_close;
21589 } 21050 }
21590@@ -539,6 +563,177 @@ out: 21051@@ -532,6 +556,177 @@ out:
21591 return error; 21052 return error;
21592 } 21053 }
21593 21054
@@ -21765,7 +21226,7 @@ diff -urNp linux-2.6.29.6/fs/binfmt_elf.c linux-2.6.29.6/fs/binfmt_elf.c
21765 /* 21226 /*
21766 * These are the functions used to load ELF style executables and shared 21227 * These are the functions used to load ELF style executables and shared
21767 * libraries. There is no binary dependent code anywhere else. 21228 * libraries. There is no binary dependent code anywhere else.
21768@@ -555,6 +750,11 @@ static unsigned long randomize_stack_top 21229@@ -548,6 +743,11 @@ static unsigned long randomize_stack_top
21769 { 21230 {
21770 unsigned int random_variable = 0; 21231 unsigned int random_variable = 0;
21771 21232
@@ -21777,7 +21238,7 @@ diff -urNp linux-2.6.29.6/fs/binfmt_elf.c linux-2.6.29.6/fs/binfmt_elf.c
21777 if ((current->flags & PF_RANDOMIZE) && 21238 if ((current->flags & PF_RANDOMIZE) &&
21778 !(current->personality & ADDR_NO_RANDOMIZE)) { 21239 !(current->personality & ADDR_NO_RANDOMIZE)) {
21779 random_variable = get_random_int() & STACK_RND_MASK; 21240 random_variable = get_random_int() & STACK_RND_MASK;
21780@@ -573,7 +773,7 @@ static int load_elf_binary(struct linux_ 21241@@ -566,7 +766,7 @@ static int load_elf_binary(struct linux_
21781 unsigned long load_addr = 0, load_bias = 0; 21242 unsigned long load_addr = 0, load_bias = 0;
21782 int load_addr_set = 0; 21243 int load_addr_set = 0;
21783 char * elf_interpreter = NULL; 21244 char * elf_interpreter = NULL;
@@ -21785,8 +21246,8 @@ diff -urNp linux-2.6.29.6/fs/binfmt_elf.c linux-2.6.29.6/fs/binfmt_elf.c
21785+ unsigned long error = 0; 21246+ unsigned long error = 0;
21786 struct elf_phdr *elf_ppnt, *elf_phdata; 21247 struct elf_phdr *elf_ppnt, *elf_phdata;
21787 unsigned long elf_bss, elf_brk; 21248 unsigned long elf_bss, elf_brk;
21788 int elf_exec_fileno; 21249 int retval, i;
21789@@ -584,11 +784,11 @@ static int load_elf_binary(struct linux_ 21250@@ -576,11 +776,11 @@ static int load_elf_binary(struct linux_
21790 unsigned long start_code, end_code, start_data, end_data; 21251 unsigned long start_code, end_code, start_data, end_data;
21791 unsigned long reloc_func_desc = 0; 21252 unsigned long reloc_func_desc = 0;
21792 int executable_stack = EXSTACK_DEFAULT; 21253 int executable_stack = EXSTACK_DEFAULT;
@@ -21799,7 +21260,7 @@ diff -urNp linux-2.6.29.6/fs/binfmt_elf.c linux-2.6.29.6/fs/binfmt_elf.c
21799 21260
21800 loc = kmalloc(sizeof(*loc), GFP_KERNEL); 21261 loc = kmalloc(sizeof(*loc), GFP_KERNEL);
21801 if (!loc) { 21262 if (!loc) {
21802@@ -756,11 +956,80 @@ static int load_elf_binary(struct linux_ 21263@@ -742,11 +942,80 @@ static int load_elf_binary(struct linux_
21803 21264
21804 /* OK, This is the point of no return */ 21265 /* OK, This is the point of no return */
21805 current->flags &= ~PF_FORKNOEXEC; 21266 current->flags &= ~PF_FORKNOEXEC;
@@ -21881,7 +21342,7 @@ diff -urNp linux-2.6.29.6/fs/binfmt_elf.c linux-2.6.29.6/fs/binfmt_elf.c
21881 if (elf_read_implies_exec(loc->elf_ex, executable_stack)) 21342 if (elf_read_implies_exec(loc->elf_ex, executable_stack))
21882 current->personality |= READ_IMPLIES_EXEC; 21343 current->personality |= READ_IMPLIES_EXEC;
21883 21344
21884@@ -841,6 +1110,20 @@ static int load_elf_binary(struct linux_ 21345@@ -827,6 +1096,20 @@ static int load_elf_binary(struct linux_
21885 #else 21346 #else
21886 load_bias = ELF_PAGESTART(ELF_ET_DYN_BASE - vaddr); 21347 load_bias = ELF_PAGESTART(ELF_ET_DYN_BASE - vaddr);
21887 #endif 21348 #endif
@@ -21902,7 +21363,7 @@ diff -urNp linux-2.6.29.6/fs/binfmt_elf.c linux-2.6.29.6/fs/binfmt_elf.c
21902 } 21363 }
21903 21364
21904 error = elf_map(bprm->file, load_bias + vaddr, elf_ppnt, 21365 error = elf_map(bprm->file, load_bias + vaddr, elf_ppnt,
21905@@ -873,9 +1156,9 @@ static int load_elf_binary(struct linux_ 21366@@ -859,9 +1142,9 @@ static int load_elf_binary(struct linux_
21906 * allowed task size. Note that p_filesz must always be 21367 * allowed task size. Note that p_filesz must always be
21907 * <= p_memsz so it is only necessary to check p_memsz. 21368 * <= p_memsz so it is only necessary to check p_memsz.
21908 */ 21369 */
@@ -21915,7 +21376,7 @@ diff -urNp linux-2.6.29.6/fs/binfmt_elf.c linux-2.6.29.6/fs/binfmt_elf.c
21915 /* set_brk can never work. Avoid overflows. */ 21376 /* set_brk can never work. Avoid overflows. */
21916 send_sig(SIGKILL, current, 0); 21377 send_sig(SIGKILL, current, 0);
21917 retval = -EINVAL; 21378 retval = -EINVAL;
21918@@ -903,6 +1186,11 @@ static int load_elf_binary(struct linux_ 21379@@ -889,6 +1172,11 @@ static int load_elf_binary(struct linux_
21919 start_data += load_bias; 21380 start_data += load_bias;
21920 end_data += load_bias; 21381 end_data += load_bias;
21921 21382
@@ -21927,7 +21388,7 @@ diff -urNp linux-2.6.29.6/fs/binfmt_elf.c linux-2.6.29.6/fs/binfmt_elf.c
21927 /* Calling set_brk effectively mmaps the pages that we need 21388 /* Calling set_brk effectively mmaps the pages that we need
21928 * for the bss and break sections. We must do this before 21389 * for the bss and break sections. We must do this before
21929 * mapping in the interpreter, to make sure it doesn't wind 21390 * mapping in the interpreter, to make sure it doesn't wind
21930@@ -914,9 +1202,11 @@ static int load_elf_binary(struct linux_ 21391@@ -900,9 +1188,11 @@ static int load_elf_binary(struct linux_
21931 goto out_free_dentry; 21392 goto out_free_dentry;
21932 } 21393 }
21933 if (likely(elf_bss != elf_brk) && unlikely(padzero(elf_bss))) { 21394 if (likely(elf_bss != elf_brk) && unlikely(padzero(elf_bss))) {
@@ -21942,7 +21403,7 @@ diff -urNp linux-2.6.29.6/fs/binfmt_elf.c linux-2.6.29.6/fs/binfmt_elf.c
21942 } 21403 }
21943 21404
21944 if (elf_interpreter) { 21405 if (elf_interpreter) {
21945@@ -1153,8 +1443,10 @@ static int dump_seek(struct file *file, 21406@@ -1135,8 +1425,10 @@ static int dump_seek(struct file *file,
21946 unsigned long n = off; 21407 unsigned long n = off;
21947 if (n > PAGE_SIZE) 21408 if (n > PAGE_SIZE)
21948 n = PAGE_SIZE; 21409 n = PAGE_SIZE;
@@ -21954,7 +21415,7 @@ diff -urNp linux-2.6.29.6/fs/binfmt_elf.c linux-2.6.29.6/fs/binfmt_elf.c
21954 off -= n; 21415 off -= n;
21955 } 21416 }
21956 free_page((unsigned long)buf); 21417 free_page((unsigned long)buf);
21957@@ -1166,7 +1458,7 @@ static int dump_seek(struct file *file, 21418@@ -1148,7 +1440,7 @@ static int dump_seek(struct file *file,
21958 * Decide what to dump of a segment, part, all or none. 21419 * Decide what to dump of a segment, part, all or none.
21959 */ 21420 */
21960 static unsigned long vma_dump_size(struct vm_area_struct *vma, 21421 static unsigned long vma_dump_size(struct vm_area_struct *vma,
@@ -21963,7 +21424,7 @@ diff -urNp linux-2.6.29.6/fs/binfmt_elf.c linux-2.6.29.6/fs/binfmt_elf.c
21963 { 21424 {
21964 #define FILTER(type) (mm_flags & (1UL << MMF_DUMP_##type)) 21425 #define FILTER(type) (mm_flags & (1UL << MMF_DUMP_##type))
21965 21426
21966@@ -1200,7 +1492,7 @@ static unsigned long vma_dump_size(struc 21427@@ -1182,7 +1474,7 @@ static unsigned long vma_dump_size(struc
21967 if (vma->vm_file == NULL) 21428 if (vma->vm_file == NULL)
21968 return 0; 21429 return 0;
21969 21430
@@ -21972,7 +21433,7 @@ diff -urNp linux-2.6.29.6/fs/binfmt_elf.c linux-2.6.29.6/fs/binfmt_elf.c
21972 goto whole; 21433 goto whole;
21973 21434
21974 /* 21435 /*
21975@@ -1296,8 +1588,11 @@ static int writenote(struct memelfnote * 21436@@ -1278,8 +1570,11 @@ static int writenote(struct memelfnote *
21976 #undef DUMP_WRITE 21437 #undef DUMP_WRITE
21977 21438
21978 #define DUMP_WRITE(addr, nr) \ 21439 #define DUMP_WRITE(addr, nr) \
@@ -21985,7 +21446,7 @@ diff -urNp linux-2.6.29.6/fs/binfmt_elf.c linux-2.6.29.6/fs/binfmt_elf.c
21985 #define DUMP_SEEK(off) \ 21446 #define DUMP_SEEK(off) \
21986 if (!dump_seek(file, (off))) \ 21447 if (!dump_seek(file, (off))) \
21987 goto end_coredump; 21448 goto end_coredump;
21988@@ -2002,7 +2297,7 @@ static int elf_core_dump(long signr, str 21449@@ -1984,7 +2279,7 @@ static int elf_core_dump(long signr, str
21989 phdr.p_offset = offset; 21450 phdr.p_offset = offset;
21990 phdr.p_vaddr = vma->vm_start; 21451 phdr.p_vaddr = vma->vm_start;
21991 phdr.p_paddr = 0; 21452 phdr.p_paddr = 0;
@@ -21994,7 +21455,7 @@ diff -urNp linux-2.6.29.6/fs/binfmt_elf.c linux-2.6.29.6/fs/binfmt_elf.c
21994 phdr.p_memsz = vma->vm_end - vma->vm_start; 21455 phdr.p_memsz = vma->vm_end - vma->vm_start;
21995 offset += phdr.p_filesz; 21456 offset += phdr.p_filesz;
21996 phdr.p_flags = vma->vm_flags & VM_READ ? PF_R : 0; 21457 phdr.p_flags = vma->vm_flags & VM_READ ? PF_R : 0;
21997@@ -2034,7 +2329,7 @@ static int elf_core_dump(long signr, str 21458@@ -2016,7 +2311,7 @@ static int elf_core_dump(long signr, str
21998 unsigned long addr; 21459 unsigned long addr;
21999 unsigned long end; 21460 unsigned long end;
22000 21461
@@ -22003,7 +21464,7 @@ diff -urNp linux-2.6.29.6/fs/binfmt_elf.c linux-2.6.29.6/fs/binfmt_elf.c
22003 21464
22004 for (addr = vma->vm_start; addr < end; addr += PAGE_SIZE) { 21465 for (addr = vma->vm_start; addr < end; addr += PAGE_SIZE) {
22005 struct page *page; 21466 struct page *page;
22006@@ -2054,6 +2349,7 @@ static int elf_core_dump(long signr, str 21467@@ -2036,6 +2331,7 @@ static int elf_core_dump(long signr, str
22007 flush_cache_page(tmp_vma, addr, 21468 flush_cache_page(tmp_vma, addr,
22008 page_to_pfn(page)); 21469 page_to_pfn(page));
22009 kaddr = kmap(page); 21470 kaddr = kmap(page);
@@ -22011,7 +21472,7 @@ diff -urNp linux-2.6.29.6/fs/binfmt_elf.c linux-2.6.29.6/fs/binfmt_elf.c
22011 if ((size += PAGE_SIZE) > limit || 21472 if ((size += PAGE_SIZE) > limit ||
22012 !dump_write(file, kaddr, 21473 !dump_write(file, kaddr,
22013 PAGE_SIZE)) { 21474 PAGE_SIZE)) {
22014@@ -2084,6 +2380,99 @@ out: 21475@@ -2066,6 +2362,99 @@ out:
22015 21476
22016 #endif /* USE_ELF_CORE_DUMP */ 21477 #endif /* USE_ELF_CORE_DUMP */
22017 21478
@@ -22111,10 +21572,10 @@ diff -urNp linux-2.6.29.6/fs/binfmt_elf.c linux-2.6.29.6/fs/binfmt_elf.c
22111 static int __init init_elf_binfmt(void) 21572 static int __init init_elf_binfmt(void)
22112 { 21573 {
22113 return register_binfmt(&elf_format); 21574 return register_binfmt(&elf_format);
22114diff -urNp linux-2.6.29.6/fs/binfmt_flat.c linux-2.6.29.6/fs/binfmt_flat.c 21575diff -urNp linux-2.6.30.4/fs/binfmt_flat.c linux-2.6.30.4/fs/binfmt_flat.c
22115--- linux-2.6.29.6/fs/binfmt_flat.c 2009-07-02 19:41:20.000000000 -0400 21576--- linux-2.6.30.4/fs/binfmt_flat.c 2009-07-24 17:47:51.000000000 -0400
22116+++ linux-2.6.29.6/fs/binfmt_flat.c 2009-07-23 17:34:32.148887586 -0400 21577+++ linux-2.6.30.4/fs/binfmt_flat.c 2009-07-30 09:48:10.069189169 -0400
22117@@ -554,7 +554,9 @@ static int load_flat_file(struct linux_b 21578@@ -565,7 +565,9 @@ static int load_flat_file(struct linux_b
22118 realdatastart = (unsigned long) -ENOMEM; 21579 realdatastart = (unsigned long) -ENOMEM;
22119 printk("Unable to allocate RAM for process data, errno %d\n", 21580 printk("Unable to allocate RAM for process data, errno %d\n",
22120 (int)-realdatastart); 21581 (int)-realdatastart);
@@ -22124,7 +21585,7 @@ diff -urNp linux-2.6.29.6/fs/binfmt_flat.c linux-2.6.29.6/fs/binfmt_flat.c
22124 ret = realdatastart; 21585 ret = realdatastart;
22125 goto err; 21586 goto err;
22126 } 21587 }
22127@@ -576,8 +578,10 @@ static int load_flat_file(struct linux_b 21588@@ -589,8 +591,10 @@ static int load_flat_file(struct linux_b
22128 } 21589 }
22129 if (result >= (unsigned long)-4096) { 21590 if (result >= (unsigned long)-4096) {
22130 printk("Unable to read data+bss, errno %d\n", (int)-result); 21591 printk("Unable to read data+bss, errno %d\n", (int)-result);
@@ -22135,7 +21596,7 @@ diff -urNp linux-2.6.29.6/fs/binfmt_flat.c linux-2.6.29.6/fs/binfmt_flat.c
22135 ret = result; 21596 ret = result;
22136 goto err; 21597 goto err;
22137 } 21598 }
22138@@ -643,8 +647,10 @@ static int load_flat_file(struct linux_b 21599@@ -659,8 +663,10 @@ static int load_flat_file(struct linux_b
22139 } 21600 }
22140 if (result >= (unsigned long)-4096) { 21601 if (result >= (unsigned long)-4096) {
22141 printk("Unable to read code+data+bss, errno %d\n",(int)-result); 21602 printk("Unable to read code+data+bss, errno %d\n",(int)-result);
@@ -22146,9 +21607,9 @@ diff -urNp linux-2.6.29.6/fs/binfmt_flat.c linux-2.6.29.6/fs/binfmt_flat.c
22146 ret = result; 21607 ret = result;
22147 goto err; 21608 goto err;
22148 } 21609 }
22149diff -urNp linux-2.6.29.6/fs/binfmt_misc.c linux-2.6.29.6/fs/binfmt_misc.c 21610diff -urNp linux-2.6.30.4/fs/binfmt_misc.c linux-2.6.30.4/fs/binfmt_misc.c
22150--- linux-2.6.29.6/fs/binfmt_misc.c 2009-07-02 19:41:20.000000000 -0400 21611--- linux-2.6.30.4/fs/binfmt_misc.c 2009-07-24 17:47:51.000000000 -0400
22151+++ linux-2.6.29.6/fs/binfmt_misc.c 2009-07-23 17:34:32.148887586 -0400 21612+++ linux-2.6.30.4/fs/binfmt_misc.c 2009-07-30 09:48:10.070138647 -0400
22152@@ -693,7 +693,7 @@ static int bm_fill_super(struct super_bl 21613@@ -693,7 +693,7 @@ static int bm_fill_super(struct super_bl
22153 static struct tree_descr bm_files[] = { 21614 static struct tree_descr bm_files[] = {
22154 [2] = {"status", &bm_status_operations, S_IWUSR|S_IRUGO}, 21615 [2] = {"status", &bm_status_operations, S_IWUSR|S_IRUGO},
@@ -22158,10 +21619,10 @@ diff -urNp linux-2.6.29.6/fs/binfmt_misc.c linux-2.6.29.6/fs/binfmt_misc.c
22158 }; 21619 };
22159 int err = simple_fill_super(sb, 0x42494e4d, bm_files); 21620 int err = simple_fill_super(sb, 0x42494e4d, bm_files);
22160 if (!err) 21621 if (!err)
22161diff -urNp linux-2.6.29.6/fs/bio.c linux-2.6.29.6/fs/bio.c 21622diff -urNp linux-2.6.30.4/fs/bio.c linux-2.6.30.4/fs/bio.c
22162--- linux-2.6.29.6/fs/bio.c 2009-07-02 19:41:20.000000000 -0400 21623--- linux-2.6.30.4/fs/bio.c 2009-07-30 20:32:40.527789063 -0400
22163+++ linux-2.6.29.6/fs/bio.c 2009-07-23 17:34:32.148887586 -0400 21624+++ linux-2.6.30.4/fs/bio.c 2009-07-30 20:32:47.975645587 -0400
22164@@ -710,7 +710,7 @@ static int __bio_copy_iov(struct bio *bi 21625@@ -720,7 +720,7 @@ static int __bio_copy_iov(struct bio *bi
22165 21626
22166 while (bv_len && iov_idx < iov_count) { 21627 while (bv_len && iov_idx < iov_count) {
22167 unsigned int bytes; 21628 unsigned int bytes;
@@ -22170,10 +21631,10 @@ diff -urNp linux-2.6.29.6/fs/bio.c linux-2.6.29.6/fs/bio.c
22170 21631
22171 bytes = min_t(unsigned int, 21632 bytes = min_t(unsigned int,
22172 iov[iov_idx].iov_len - iov_off, bv_len); 21633 iov[iov_idx].iov_len - iov_off, bv_len);
22173diff -urNp linux-2.6.29.6/fs/btrfs/ctree.h linux-2.6.29.6/fs/btrfs/ctree.h 21634diff -urNp linux-2.6.30.4/fs/btrfs/ctree.h linux-2.6.30.4/fs/btrfs/ctree.h
22174--- linux-2.6.29.6/fs/btrfs/ctree.h 2009-07-02 19:41:20.000000000 -0400 21635--- linux-2.6.30.4/fs/btrfs/ctree.h 2009-07-24 17:47:51.000000000 -0400
22175+++ linux-2.6.29.6/fs/btrfs/ctree.h 2009-07-23 18:40:28.276499409 -0400 21636+++ linux-2.6.30.4/fs/btrfs/ctree.h 2009-07-30 09:48:10.071936994 -0400
22176@@ -2099,7 +2099,7 @@ int btrfs_sync_file(struct file *file, s 21637@@ -2174,7 +2174,7 @@ int btrfs_sync_file(struct file *file, s
22177 int btrfs_drop_extent_cache(struct inode *inode, u64 start, u64 end, 21638 int btrfs_drop_extent_cache(struct inode *inode, u64 start, u64 end,
22178 int skip_pinned); 21639 int skip_pinned);
22179 int btrfs_check_file(struct btrfs_root *root, struct inode *inode); 21640 int btrfs_check_file(struct btrfs_root *root, struct inode *inode);
@@ -22181,23 +21642,23 @@ diff -urNp linux-2.6.29.6/fs/btrfs/ctree.h linux-2.6.29.6/fs/btrfs/ctree.h
22181+extern const struct file_operations btrfs_file_operations; 21642+extern const struct file_operations btrfs_file_operations;
22182 int btrfs_drop_extents(struct btrfs_trans_handle *trans, 21643 int btrfs_drop_extents(struct btrfs_trans_handle *trans,
22183 struct btrfs_root *root, struct inode *inode, 21644 struct btrfs_root *root, struct inode *inode,
22184 u64 start, u64 end, u64 inline_limit, u64 *hint_block); 21645 u64 start, u64 end, u64 locked_end,
22185diff -urNp linux-2.6.29.6/fs/btrfs/disk-io.c linux-2.6.29.6/fs/btrfs/disk-io.c 21646diff -urNp linux-2.6.30.4/fs/btrfs/disk-io.c linux-2.6.30.4/fs/btrfs/disk-io.c
22186--- linux-2.6.29.6/fs/btrfs/disk-io.c 2009-07-02 19:41:20.000000000 -0400 21647--- linux-2.6.30.4/fs/btrfs/disk-io.c 2009-07-24 17:47:51.000000000 -0400
22187+++ linux-2.6.29.6/fs/btrfs/disk-io.c 2009-07-23 18:40:28.282751578 -0400 21648+++ linux-2.6.30.4/fs/btrfs/disk-io.c 2009-07-30 12:07:28.366973168 -0400
22188@@ -768,7 +768,7 @@ static int btree_writepage(struct page * 21649@@ -771,7 +771,7 @@ static void btree_invalidatepage(struct
21650 }
22189 } 21651 }
22190 #endif
22191 21652
22192-static struct address_space_operations btree_aops = { 21653-static struct address_space_operations btree_aops = {
22193+static const struct address_space_operations btree_aops = { 21654+static const struct address_space_operations btree_aops = {
22194 .readpage = btree_readpage, 21655 .readpage = btree_readpage,
22195 .writepage = btree_writepage, 21656 .writepage = btree_writepage,
22196 .writepages = btree_writepages, 21657 .writepages = btree_writepages,
22197diff -urNp linux-2.6.29.6/fs/btrfs/file.c linux-2.6.29.6/fs/btrfs/file.c 21658diff -urNp linux-2.6.30.4/fs/btrfs/file.c linux-2.6.30.4/fs/btrfs/file.c
22198--- linux-2.6.29.6/fs/btrfs/file.c 2009-07-02 19:41:20.000000000 -0400 21659--- linux-2.6.30.4/fs/btrfs/file.c 2009-07-24 17:47:51.000000000 -0400
22199+++ linux-2.6.29.6/fs/btrfs/file.c 2009-07-23 18:40:28.305635485 -0400 21660+++ linux-2.6.30.4/fs/btrfs/file.c 2009-07-30 09:48:10.073009918 -0400
22200@@ -1268,7 +1268,7 @@ out: 21661@@ -1231,7 +1231,7 @@ out:
22201 return ret > 0 ? EIO : ret; 21662 return ret > 0 ? EIO : ret;
22202 } 21663 }
22203 21664
@@ -22206,7 +21667,7 @@ diff -urNp linux-2.6.29.6/fs/btrfs/file.c linux-2.6.29.6/fs/btrfs/file.c
22206 .fault = filemap_fault, 21667 .fault = filemap_fault,
22207 .page_mkwrite = btrfs_page_mkwrite, 21668 .page_mkwrite = btrfs_page_mkwrite,
22208 }; 21669 };
22209@@ -1280,7 +1280,7 @@ static int btrfs_file_mmap(struct file * 21670@@ -1243,7 +1243,7 @@ static int btrfs_file_mmap(struct file *
22210 return 0; 21671 return 0;
22211 } 21672 }
22212 21673
@@ -22215,9 +21676,9 @@ diff -urNp linux-2.6.29.6/fs/btrfs/file.c linux-2.6.29.6/fs/btrfs/file.c
22215 .llseek = generic_file_llseek, 21676 .llseek = generic_file_llseek,
22216 .read = do_sync_read, 21677 .read = do_sync_read,
22217 .aio_read = generic_file_aio_read, 21678 .aio_read = generic_file_aio_read,
22218diff -urNp linux-2.6.29.6/fs/btrfs/inode.c linux-2.6.29.6/fs/btrfs/inode.c 21679diff -urNp linux-2.6.30.4/fs/btrfs/inode.c linux-2.6.30.4/fs/btrfs/inode.c
22219--- linux-2.6.29.6/fs/btrfs/inode.c 2009-07-02 19:41:20.000000000 -0400 21680--- linux-2.6.30.4/fs/btrfs/inode.c 2009-07-24 17:47:51.000000000 -0400
22220+++ linux-2.6.29.6/fs/btrfs/inode.c 2009-07-23 18:40:28.316264775 -0400 21681+++ linux-2.6.30.4/fs/btrfs/inode.c 2009-07-30 09:48:10.073009918 -0400
22221@@ -57,14 +57,14 @@ struct btrfs_iget_args { 21682@@ -57,14 +57,14 @@ struct btrfs_iget_args {
22222 struct btrfs_root *root; 21683 struct btrfs_root *root;
22223 }; 21684 };
@@ -22241,7 +21702,7 @@ diff -urNp linux-2.6.29.6/fs/btrfs/inode.c linux-2.6.29.6/fs/btrfs/inode.c
22241 static struct extent_io_ops btrfs_extent_io_ops; 21702 static struct extent_io_ops btrfs_extent_io_ops;
22242 21703
22243 static struct kmem_cache *btrfs_inode_cachep; 21704 static struct kmem_cache *btrfs_inode_cachep;
22244@@ -4955,7 +4955,7 @@ static int btrfs_permission(struct inode 21705@@ -5187,7 +5187,7 @@ static int btrfs_permission(struct inode
22245 return generic_permission(inode, mask, btrfs_check_acl); 21706 return generic_permission(inode, mask, btrfs_check_acl);
22246 } 21707 }
22247 21708
@@ -22250,7 +21711,7 @@ diff -urNp linux-2.6.29.6/fs/btrfs/inode.c linux-2.6.29.6/fs/btrfs/inode.c
22250 .getattr = btrfs_getattr, 21711 .getattr = btrfs_getattr,
22251 .lookup = btrfs_lookup, 21712 .lookup = btrfs_lookup,
22252 .create = btrfs_create, 21713 .create = btrfs_create,
22253@@ -4973,11 +4973,11 @@ static struct inode_operations btrfs_dir 21714@@ -5205,11 +5205,11 @@ static struct inode_operations btrfs_dir
22254 .removexattr = btrfs_removexattr, 21715 .removexattr = btrfs_removexattr,
22255 .permission = btrfs_permission, 21716 .permission = btrfs_permission,
22256 }; 21717 };
@@ -22264,7 +21725,7 @@ diff -urNp linux-2.6.29.6/fs/btrfs/inode.c linux-2.6.29.6/fs/btrfs/inode.c
22264 .llseek = generic_file_llseek, 21725 .llseek = generic_file_llseek,
22265 .read = generic_read_dir, 21726 .read = generic_read_dir,
22266 .readdir = btrfs_real_readdir, 21727 .readdir = btrfs_real_readdir,
22267@@ -5013,7 +5013,7 @@ static struct extent_io_ops btrfs_extent 21728@@ -5245,7 +5245,7 @@ static struct extent_io_ops btrfs_extent
22268 * 21729 *
22269 * For now we're avoiding this by dropping bmap. 21730 * For now we're avoiding this by dropping bmap.
22270 */ 21731 */
@@ -22273,7 +21734,7 @@ diff -urNp linux-2.6.29.6/fs/btrfs/inode.c linux-2.6.29.6/fs/btrfs/inode.c
22273 .readpage = btrfs_readpage, 21734 .readpage = btrfs_readpage,
22274 .writepage = btrfs_writepage, 21735 .writepage = btrfs_writepage,
22275 .writepages = btrfs_writepages, 21736 .writepages = btrfs_writepages,
22276@@ -5025,14 +5025,14 @@ static struct address_space_operations b 21737@@ -5257,14 +5257,14 @@ static struct address_space_operations b
22277 .set_page_dirty = btrfs_set_page_dirty, 21738 .set_page_dirty = btrfs_set_page_dirty,
22278 }; 21739 };
22279 21740
@@ -22290,7 +21751,7 @@ diff -urNp linux-2.6.29.6/fs/btrfs/inode.c linux-2.6.29.6/fs/btrfs/inode.c
22290 .truncate = btrfs_truncate, 21751 .truncate = btrfs_truncate,
22291 .getattr = btrfs_getattr, 21752 .getattr = btrfs_getattr,
22292 .setattr = btrfs_setattr, 21753 .setattr = btrfs_setattr,
22293@@ -5044,7 +5044,7 @@ static struct inode_operations btrfs_fil 21754@@ -5276,7 +5276,7 @@ static struct inode_operations btrfs_fil
22294 .fallocate = btrfs_fallocate, 21755 .fallocate = btrfs_fallocate,
22295 .fiemap = btrfs_fiemap, 21756 .fiemap = btrfs_fiemap,
22296 }; 21757 };
@@ -22299,7 +21760,7 @@ diff -urNp linux-2.6.29.6/fs/btrfs/inode.c linux-2.6.29.6/fs/btrfs/inode.c
22299 .getattr = btrfs_getattr, 21760 .getattr = btrfs_getattr,
22300 .setattr = btrfs_setattr, 21761 .setattr = btrfs_setattr,
22301 .permission = btrfs_permission, 21762 .permission = btrfs_permission,
22302@@ -5053,7 +5053,7 @@ static struct inode_operations btrfs_spe 21763@@ -5285,7 +5285,7 @@ static struct inode_operations btrfs_spe
22303 .listxattr = btrfs_listxattr, 21764 .listxattr = btrfs_listxattr,
22304 .removexattr = btrfs_removexattr, 21765 .removexattr = btrfs_removexattr,
22305 }; 21766 };
@@ -22308,10 +21769,10 @@ diff -urNp linux-2.6.29.6/fs/btrfs/inode.c linux-2.6.29.6/fs/btrfs/inode.c
22308 .readlink = generic_readlink, 21769 .readlink = generic_readlink,
22309 .follow_link = page_follow_link_light, 21770 .follow_link = page_follow_link_light,
22310 .put_link = page_put_link, 21771 .put_link = page_put_link,
22311diff -urNp linux-2.6.29.6/fs/btrfs/super.c linux-2.6.29.6/fs/btrfs/super.c 21772diff -urNp linux-2.6.30.4/fs/btrfs/super.c linux-2.6.30.4/fs/btrfs/super.c
22312--- linux-2.6.29.6/fs/btrfs/super.c 2009-07-02 19:41:20.000000000 -0400 21773--- linux-2.6.30.4/fs/btrfs/super.c 2009-07-24 17:47:51.000000000 -0400
22313+++ linux-2.6.29.6/fs/btrfs/super.c 2009-07-23 18:40:28.317383091 -0400 21774+++ linux-2.6.30.4/fs/btrfs/super.c 2009-07-30 09:48:10.074085184 -0400
22314@@ -52,7 +52,7 @@ 21775@@ -53,7 +53,7 @@
22315 #include "compression.h" 21776 #include "compression.h"
22316 21777
22317 21778
@@ -22320,7 +21781,7 @@ diff -urNp linux-2.6.29.6/fs/btrfs/super.c linux-2.6.29.6/fs/btrfs/super.c
22320 21781
22321 static void btrfs_put_super(struct super_block *sb) 21782 static void btrfs_put_super(struct super_block *sb)
22322 { 21783 {
22323@@ -625,7 +625,7 @@ static int btrfs_unfreeze(struct super_b 21784@@ -675,7 +675,7 @@ static int btrfs_unfreeze(struct super_b
22324 return 0; 21785 return 0;
22325 } 21786 }
22326 21787
@@ -22329,9 +21790,9 @@ diff -urNp linux-2.6.29.6/fs/btrfs/super.c linux-2.6.29.6/fs/btrfs/super.c
22329 .delete_inode = btrfs_delete_inode, 21790 .delete_inode = btrfs_delete_inode,
22330 .put_super = btrfs_put_super, 21791 .put_super = btrfs_put_super,
22331 .write_super = btrfs_write_super, 21792 .write_super = btrfs_write_super,
22332diff -urNp linux-2.6.29.6/fs/buffer.c linux-2.6.29.6/fs/buffer.c 21793diff -urNp linux-2.6.30.4/fs/buffer.c linux-2.6.30.4/fs/buffer.c
22333--- linux-2.6.29.6/fs/buffer.c 2009-07-02 19:41:20.000000000 -0400 21794--- linux-2.6.30.4/fs/buffer.c 2009-07-24 17:47:51.000000000 -0400
22334+++ linux-2.6.29.6/fs/buffer.c 2009-07-23 17:34:32.149864089 -0400 21795+++ linux-2.6.30.4/fs/buffer.c 2009-07-30 11:10:49.132480423 -0400
22335@@ -25,6 +25,7 @@ 21796@@ -25,6 +25,7 @@
22336 #include <linux/percpu.h> 21797 #include <linux/percpu.h>
22337 #include <linux/slab.h> 21798 #include <linux/slab.h>
@@ -22340,7 +21801,7 @@ diff -urNp linux-2.6.29.6/fs/buffer.c linux-2.6.29.6/fs/buffer.c
22340 #include <linux/blkdev.h> 21801 #include <linux/blkdev.h>
22341 #include <linux/file.h> 21802 #include <linux/file.h>
22342 #include <linux/quotaops.h> 21803 #include <linux/quotaops.h>
22343@@ -2312,6 +2313,7 @@ int generic_cont_expand_simple(struct in 21804@@ -2230,6 +2231,7 @@ int generic_cont_expand_simple(struct in
22344 21805
22345 err = -EFBIG; 21806 err = -EFBIG;
22346 limit = current->signal->rlim[RLIMIT_FSIZE].rlim_cur; 21807 limit = current->signal->rlim[RLIMIT_FSIZE].rlim_cur;
@@ -22348,10 +21809,10 @@ diff -urNp linux-2.6.29.6/fs/buffer.c linux-2.6.29.6/fs/buffer.c
22348 if (limit != RLIM_INFINITY && size > (loff_t)limit) { 21809 if (limit != RLIM_INFINITY && size > (loff_t)limit) {
22349 send_sig(SIGXFSZ, current, 0); 21810 send_sig(SIGXFSZ, current, 0);
22350 goto out; 21811 goto out;
22351diff -urNp linux-2.6.29.6/fs/cifs/cifs_dfs_ref.c linux-2.6.29.6/fs/cifs/cifs_dfs_ref.c 21812diff -urNp linux-2.6.30.4/fs/cifs/cifs_dfs_ref.c linux-2.6.30.4/fs/cifs/cifs_dfs_ref.c
22352--- linux-2.6.29.6/fs/cifs/cifs_dfs_ref.c 2009-07-02 19:41:20.000000000 -0400 21813--- linux-2.6.30.4/fs/cifs/cifs_dfs_ref.c 2009-07-24 17:47:51.000000000 -0400
22353+++ linux-2.6.29.6/fs/cifs/cifs_dfs_ref.c 2009-07-23 18:40:28.330897960 -0400 21814+++ linux-2.6.30.4/fs/cifs/cifs_dfs_ref.c 2009-07-30 09:48:10.074085184 -0400
22354@@ -387,7 +387,7 @@ out_err: 21815@@ -379,7 +379,7 @@ out_err:
22355 goto out; 21816 goto out;
22356 } 21817 }
22357 21818
@@ -22360,9 +21821,9 @@ diff -urNp linux-2.6.29.6/fs/cifs/cifs_dfs_ref.c linux-2.6.29.6/fs/cifs/cifs_dfs
22360 .follow_link = cifs_dfs_follow_mountpoint, 21821 .follow_link = cifs_dfs_follow_mountpoint,
22361 }; 21822 };
22362 21823
22363diff -urNp linux-2.6.29.6/fs/cifs/cifsfs.h linux-2.6.29.6/fs/cifs/cifsfs.h 21824diff -urNp linux-2.6.30.4/fs/cifs/cifsfs.h linux-2.6.30.4/fs/cifs/cifsfs.h
22364--- linux-2.6.29.6/fs/cifs/cifsfs.h 2009-07-02 19:41:20.000000000 -0400 21825--- linux-2.6.30.4/fs/cifs/cifsfs.h 2009-07-24 17:47:51.000000000 -0400
22365+++ linux-2.6.29.6/fs/cifs/cifsfs.h 2009-07-23 18:40:28.331788628 -0400 21826+++ linux-2.6.30.4/fs/cifs/cifsfs.h 2009-07-30 09:48:10.075044089 -0400
22366@@ -54,7 +54,7 @@ extern int cifs_setattr(struct dentry *, 21827@@ -54,7 +54,7 @@ extern int cifs_setattr(struct dentry *,
22367 21828
22368 extern const struct inode_operations cifs_file_inode_ops; 21829 extern const struct inode_operations cifs_file_inode_ops;
@@ -22372,20 +21833,9 @@ diff -urNp linux-2.6.29.6/fs/cifs/cifsfs.h linux-2.6.29.6/fs/cifs/cifsfs.h
22372 21833
22373 21834
22374 /* Functions related to files and directories */ 21835 /* Functions related to files and directories */
22375@@ -78,8 +78,8 @@ extern int cifs_dir_open(struct inode *i 21836diff -urNp linux-2.6.30.4/fs/cifs/cifs_uniupr.h linux-2.6.30.4/fs/cifs/cifs_uniupr.h
22376 extern int cifs_readdir(struct file *file, void *direntry, filldir_t filldir); 21837--- linux-2.6.30.4/fs/cifs/cifs_uniupr.h 2009-07-24 17:47:51.000000000 -0400
22377 21838+++ linux-2.6.30.4/fs/cifs/cifs_uniupr.h 2009-07-30 09:48:10.074085184 -0400
22378 /* Functions related to dir entries */
22379-extern struct dentry_operations cifs_dentry_ops;
22380-extern struct dentry_operations cifs_ci_dentry_ops;
22381+extern const struct dentry_operations cifs_dentry_ops;
22382+extern const struct dentry_operations cifs_ci_dentry_ops;
22383
22384 /* Functions related to symlinks */
22385 extern void *cifs_follow_link(struct dentry *direntry, struct nameidata *nd);
22386diff -urNp linux-2.6.29.6/fs/cifs/cifs_uniupr.h linux-2.6.29.6/fs/cifs/cifs_uniupr.h
22387--- linux-2.6.29.6/fs/cifs/cifs_uniupr.h 2009-07-02 19:41:20.000000000 -0400
22388+++ linux-2.6.29.6/fs/cifs/cifs_uniupr.h 2009-07-23 17:34:32.150758980 -0400
22389@@ -132,7 +132,7 @@ const struct UniCaseRange CifsUniUpperRa 21839@@ -132,7 +132,7 @@ const struct UniCaseRange CifsUniUpperRa
22390 {0x0490, 0x04cc, UniCaseRangeU0490}, 21840 {0x0490, 0x04cc, UniCaseRangeU0490},
22391 {0x1e00, 0x1ffc, UniCaseRangeU1e00}, 21841 {0x1e00, 0x1ffc, UniCaseRangeU1e00},
@@ -22395,31 +21845,10 @@ diff -urNp linux-2.6.29.6/fs/cifs/cifs_uniupr.h linux-2.6.29.6/fs/cifs/cifs_uniu
22395 }; 21845 };
22396 #endif 21846 #endif
22397 21847
22398diff -urNp linux-2.6.29.6/fs/cifs/dir.c linux-2.6.29.6/fs/cifs/dir.c 21848diff -urNp linux-2.6.30.4/fs/cifs/link.c linux-2.6.30.4/fs/cifs/link.c
22399--- linux-2.6.29.6/fs/cifs/dir.c 2009-07-02 19:41:20.000000000 -0400 21849--- linux-2.6.30.4/fs/cifs/link.c 2009-07-24 17:47:51.000000000 -0400
22400+++ linux-2.6.29.6/fs/cifs/dir.c 2009-07-23 18:40:28.331788628 -0400 21850+++ linux-2.6.30.4/fs/cifs/link.c 2009-07-30 09:48:10.075668043 -0400
22401@@ -699,7 +699,7 @@ cifs_d_revalidate(struct dentry *direntr 21851@@ -214,7 +214,7 @@ cifs_symlink(struct inode *inode, struct
22402 return rc;
22403 } */
22404
22405-struct dentry_operations cifs_dentry_ops = {
22406+const struct dentry_operations cifs_dentry_ops = {
22407 .d_revalidate = cifs_d_revalidate,
22408 /* d_delete: cifs_d_delete, */ /* not needed except for debugging */
22409 };
22410@@ -737,7 +737,7 @@ static int cifs_ci_compare(struct dentry
22411 return 1;
22412 }
22413
22414-struct dentry_operations cifs_ci_dentry_ops = {
22415+const struct dentry_operations cifs_ci_dentry_ops = {
22416 .d_revalidate = cifs_d_revalidate,
22417 .d_hash = cifs_ci_hash,
22418 .d_compare = cifs_ci_compare,
22419diff -urNp linux-2.6.29.6/fs/cifs/link.c linux-2.6.29.6/fs/cifs/link.c
22420--- linux-2.6.29.6/fs/cifs/link.c 2009-07-02 19:41:20.000000000 -0400
22421+++ linux-2.6.29.6/fs/cifs/link.c 2009-07-23 17:34:32.150758980 -0400
22422@@ -318,7 +318,7 @@ cifs_readlink(struct dentry *direntry, c
22423 21852
22424 void cifs_put_link(struct dentry *direntry, struct nameidata *nd, void *cookie) 21853 void cifs_put_link(struct dentry *direntry, struct nameidata *nd, void *cookie)
22425 { 21854 {
@@ -22428,10 +21857,10 @@ diff -urNp linux-2.6.29.6/fs/cifs/link.c linux-2.6.29.6/fs/cifs/link.c
22428 if (!IS_ERR(p)) 21857 if (!IS_ERR(p))
22429 kfree(p); 21858 kfree(p);
22430 } 21859 }
22431diff -urNp linux-2.6.29.6/fs/compat.c linux-2.6.29.6/fs/compat.c 21860diff -urNp linux-2.6.30.4/fs/compat.c linux-2.6.30.4/fs/compat.c
22432--- linux-2.6.29.6/fs/compat.c 2009-07-02 19:41:20.000000000 -0400 21861--- linux-2.6.30.4/fs/compat.c 2009-07-24 17:47:51.000000000 -0400
22433+++ linux-2.6.29.6/fs/compat.c 2009-07-23 17:34:32.150758980 -0400 21862+++ linux-2.6.30.4/fs/compat.c 2009-07-30 11:10:49.133453691 -0400
22434@@ -1338,14 +1338,12 @@ static int compat_copy_strings(int argc, 21863@@ -1420,14 +1420,12 @@ static int compat_copy_strings(int argc,
22435 if (!kmapped_page || kpos != (pos & PAGE_MASK)) { 21864 if (!kmapped_page || kpos != (pos & PAGE_MASK)) {
22436 struct page *page; 21865 struct page *page;
22437 21866
@@ -22446,7 +21875,7 @@ diff -urNp linux-2.6.29.6/fs/compat.c linux-2.6.29.6/fs/compat.c
22446 ret = get_user_pages(current, bprm->mm, pos, 21875 ret = get_user_pages(current, bprm->mm, pos,
22447 1, 1, 1, &page, NULL); 21876 1, 1, 1, &page, NULL);
22448 if (ret <= 0) { 21877 if (ret <= 0) {
22449@@ -1391,6 +1389,11 @@ int compat_do_execve(char * filename, 21878@@ -1473,6 +1471,11 @@ int compat_do_execve(char * filename,
22450 compat_uptr_t __user *envp, 21879 compat_uptr_t __user *envp,
22451 struct pt_regs * regs) 21880 struct pt_regs * regs)
22452 { 21881 {
@@ -22458,7 +21887,7 @@ diff -urNp linux-2.6.29.6/fs/compat.c linux-2.6.29.6/fs/compat.c
22458 struct linux_binprm *bprm; 21887 struct linux_binprm *bprm;
22459 struct file *file; 21888 struct file *file;
22460 struct files_struct *displaced; 21889 struct files_struct *displaced;
22461@@ -1431,6 +1434,14 @@ int compat_do_execve(char * filename, 21890@@ -1514,6 +1517,14 @@ int compat_do_execve(char * filename,
22462 bprm->filename = filename; 21891 bprm->filename = filename;
22463 bprm->interp = filename; 21892 bprm->interp = filename;
22464 21893
@@ -22473,7 +21902,7 @@ diff -urNp linux-2.6.29.6/fs/compat.c linux-2.6.29.6/fs/compat.c
22473 retval = bprm_mm_init(bprm); 21902 retval = bprm_mm_init(bprm);
22474 if (retval) 21903 if (retval)
22475 goto out_file; 21904 goto out_file;
22476@@ -1460,9 +1471,40 @@ int compat_do_execve(char * filename, 21905@@ -1543,9 +1554,40 @@ int compat_do_execve(char * filename,
22477 if (retval < 0) 21906 if (retval < 0)
22478 goto out; 21907 goto out;
22479 21908
@@ -22515,7 +21944,7 @@ diff -urNp linux-2.6.29.6/fs/compat.c linux-2.6.29.6/fs/compat.c
22515 21944
22516 /* execve succeeded */ 21945 /* execve succeeded */
22517 current->fs->in_exec = 0; 21946 current->fs->in_exec = 0;
22518@@ -1473,6 +1515,14 @@ int compat_do_execve(char * filename, 21947@@ -1557,6 +1599,14 @@ int compat_do_execve(char * filename,
22519 put_files_struct(displaced); 21948 put_files_struct(displaced);
22520 return retval; 21949 return retval;
22521 21950
@@ -22530,10 +21959,10 @@ diff -urNp linux-2.6.29.6/fs/compat.c linux-2.6.29.6/fs/compat.c
22530 out: 21959 out:
22531 if (bprm->mm) 21960 if (bprm->mm)
22532 mmput(bprm->mm); 21961 mmput(bprm->mm);
22533diff -urNp linux-2.6.29.6/fs/compat_ioctl.c linux-2.6.29.6/fs/compat_ioctl.c 21962diff -urNp linux-2.6.30.4/fs/compat_ioctl.c linux-2.6.30.4/fs/compat_ioctl.c
22534--- linux-2.6.29.6/fs/compat_ioctl.c 2009-07-02 19:41:20.000000000 -0400 21963--- linux-2.6.30.4/fs/compat_ioctl.c 2009-07-24 17:47:51.000000000 -0400
22535+++ linux-2.6.29.6/fs/compat_ioctl.c 2009-07-23 17:34:32.151817730 -0400 21964+++ linux-2.6.30.4/fs/compat_ioctl.c 2009-07-30 09:48:10.080197700 -0400
22536@@ -1832,15 +1832,15 @@ struct ioctl_trans { 21965@@ -1837,15 +1837,15 @@ struct ioctl_trans {
22537 }; 21966 };
22538 21967
22539 #define HANDLE_IOCTL(cmd,handler) \ 21968 #define HANDLE_IOCTL(cmd,handler) \
@@ -22552,22 +21981,10 @@ diff -urNp linux-2.6.29.6/fs/compat_ioctl.c linux-2.6.29.6/fs/compat_ioctl.c
22552 21981
22553 /* ioctl should not be warned about even if it's not implemented. 21982 /* ioctl should not be warned about even if it's not implemented.
22554 Valid reasons to use this: 21983 Valid reasons to use this:
22555diff -urNp linux-2.6.29.6/fs/configfs/dir.c linux-2.6.29.6/fs/configfs/dir.c 21984diff -urNp linux-2.6.30.4/fs/debugfs/inode.c linux-2.6.30.4/fs/debugfs/inode.c
22556--- linux-2.6.29.6/fs/configfs/dir.c 2009-07-02 19:41:20.000000000 -0400 21985--- linux-2.6.30.4/fs/debugfs/inode.c 2009-07-24 17:47:51.000000000 -0400
22557+++ linux-2.6.29.6/fs/configfs/dir.c 2009-07-23 18:40:28.343404417 -0400 21986+++ linux-2.6.30.4/fs/debugfs/inode.c 2009-07-30 09:48:10.080909461 -0400
22558@@ -72,7 +72,7 @@ static int configfs_d_delete(struct dent 21987@@ -118,7 +118,7 @@ static inline int debugfs_positive(struc
22559 return 1;
22560 }
22561
22562-static struct dentry_operations configfs_dentry_ops = {
22563+static const struct dentry_operations configfs_dentry_ops = {
22564 .d_iput = configfs_d_iput,
22565 /* simple_delete_dentry() isn't exported */
22566 .d_delete = configfs_d_delete,
22567diff -urNp linux-2.6.29.6/fs/debugfs/inode.c linux-2.6.29.6/fs/debugfs/inode.c
22568--- linux-2.6.29.6/fs/debugfs/inode.c 2009-07-02 19:41:20.000000000 -0400
22569+++ linux-2.6.29.6/fs/debugfs/inode.c 2009-07-23 17:34:32.151817730 -0400
22570@@ -117,7 +117,7 @@ static inline int debugfs_positive(struc
22571 21988
22572 static int debug_fill_super(struct super_block *sb, void *data, int silent) 21989 static int debug_fill_super(struct super_block *sb, void *data, int silent)
22573 { 21990 {
@@ -22576,9 +21993,9 @@ diff -urNp linux-2.6.29.6/fs/debugfs/inode.c linux-2.6.29.6/fs/debugfs/inode.c
22576 21993
22577 return simple_fill_super(sb, DEBUGFS_MAGIC, debug_files); 21994 return simple_fill_super(sb, DEBUGFS_MAGIC, debug_files);
22578 } 21995 }
22579diff -urNp linux-2.6.29.6/fs/dlm/debug_fs.c linux-2.6.29.6/fs/dlm/debug_fs.c 21996diff -urNp linux-2.6.30.4/fs/dlm/debug_fs.c linux-2.6.30.4/fs/dlm/debug_fs.c
22580--- linux-2.6.29.6/fs/dlm/debug_fs.c 2009-07-02 19:41:20.000000000 -0400 21997--- linux-2.6.30.4/fs/dlm/debug_fs.c 2009-07-24 17:47:51.000000000 -0400
22581+++ linux-2.6.29.6/fs/dlm/debug_fs.c 2009-07-23 18:40:28.344280728 -0400 21998+++ linux-2.6.30.4/fs/dlm/debug_fs.c 2009-07-30 09:48:10.080909461 -0400
22582@@ -386,9 +386,9 @@ static int table_seq_show(struct seq_fil 21999@@ -386,9 +386,9 @@ static int table_seq_show(struct seq_fil
22583 return rv; 22000 return rv;
22584 } 22001 }
@@ -22617,36 +22034,22 @@ diff -urNp linux-2.6.29.6/fs/dlm/debug_fs.c linux-2.6.29.6/fs/dlm/debug_fs.c
22617 .start = table_seq_start, 22034 .start = table_seq_start,
22618 .next = table_seq_next, 22035 .next = table_seq_next,
22619 .stop = table_seq_stop, 22036 .stop = table_seq_stop,
22620diff -urNp linux-2.6.29.6/fs/ecryptfs/dentry.c linux-2.6.29.6/fs/ecryptfs/dentry.c 22037diff -urNp linux-2.6.30.4/fs/ecryptfs/ecryptfs_kernel.h linux-2.6.30.4/fs/ecryptfs/ecryptfs_kernel.h
22621--- linux-2.6.29.6/fs/ecryptfs/dentry.c 2009-07-02 19:41:20.000000000 -0400 22038--- linux-2.6.30.4/fs/ecryptfs/ecryptfs_kernel.h 2009-07-24 17:47:51.000000000 -0400
22622+++ linux-2.6.29.6/fs/ecryptfs/dentry.c 2009-07-23 18:40:28.358643960 -0400 22039+++ linux-2.6.30.4/fs/ecryptfs/ecryptfs_kernel.h 2009-07-30 12:43:20.416601232 -0400
22623@@ -89,7 +89,7 @@ static void ecryptfs_d_release(struct de 22040@@ -582,7 +582,7 @@ extern const struct inode_operations ecr
22624 return;
22625 }
22626
22627-struct dentry_operations ecryptfs_dops = {
22628+const struct dentry_operations ecryptfs_dops = {
22629 .d_revalidate = ecryptfs_d_revalidate,
22630 .d_release = ecryptfs_d_release,
22631 };
22632diff -urNp linux-2.6.29.6/fs/ecryptfs/ecryptfs_kernel.h linux-2.6.29.6/fs/ecryptfs/ecryptfs_kernel.h
22633--- linux-2.6.29.6/fs/ecryptfs/ecryptfs_kernel.h 2009-07-02 19:41:20.000000000 -0400
22634+++ linux-2.6.29.6/fs/ecryptfs/ecryptfs_kernel.h 2009-07-23 18:40:28.368274094 -0400
22635@@ -580,8 +580,8 @@ extern const struct inode_operations ecr
22636 extern const struct inode_operations ecryptfs_dir_iops;
22637 extern const struct inode_operations ecryptfs_symlink_iops; 22041 extern const struct inode_operations ecryptfs_symlink_iops;
22638 extern const struct super_operations ecryptfs_sops; 22042 extern const struct super_operations ecryptfs_sops;
22639-extern struct dentry_operations ecryptfs_dops; 22043 extern const struct dentry_operations ecryptfs_dops;
22640-extern struct address_space_operations ecryptfs_aops; 22044-extern struct address_space_operations ecryptfs_aops;
22641+extern const struct dentry_operations ecryptfs_dops;
22642+extern const struct address_space_operations ecryptfs_aops; 22045+extern const struct address_space_operations ecryptfs_aops;
22643 extern int ecryptfs_verbosity; 22046 extern int ecryptfs_verbosity;
22644 extern unsigned int ecryptfs_message_buf_len; 22047 extern unsigned int ecryptfs_message_buf_len;
22645 extern signed long ecryptfs_message_wait_timeout; 22048 extern signed long ecryptfs_message_wait_timeout;
22646diff -urNp linux-2.6.29.6/fs/ecryptfs/mmap.c linux-2.6.29.6/fs/ecryptfs/mmap.c 22049diff -urNp linux-2.6.30.4/fs/ecryptfs/mmap.c linux-2.6.30.4/fs/ecryptfs/mmap.c
22647--- linux-2.6.29.6/fs/ecryptfs/mmap.c 2009-07-02 19:41:20.000000000 -0400 22050--- linux-2.6.30.4/fs/ecryptfs/mmap.c 2009-07-24 17:47:51.000000000 -0400
22648+++ linux-2.6.29.6/fs/ecryptfs/mmap.c 2009-07-23 18:40:28.369285541 -0400 22051+++ linux-2.6.30.4/fs/ecryptfs/mmap.c 2009-07-30 09:48:10.080909461 -0400
22649@@ -534,7 +534,7 @@ static sector_t ecryptfs_bmap(struct add 22052@@ -545,7 +545,7 @@ static sector_t ecryptfs_bmap(struct add
22650 return rc; 22053 return rc;
22651 } 22054 }
22652 22055
@@ -22655,13 +22058,13 @@ diff -urNp linux-2.6.29.6/fs/ecryptfs/mmap.c linux-2.6.29.6/fs/ecryptfs/mmap.c
22655 .writepage = ecryptfs_writepage, 22058 .writepage = ecryptfs_writepage,
22656 .readpage = ecryptfs_readpage, 22059 .readpage = ecryptfs_readpage,
22657 .write_begin = ecryptfs_write_begin, 22060 .write_begin = ecryptfs_write_begin,
22658diff -urNp linux-2.6.29.6/fs/exec.c linux-2.6.29.6/fs/exec.c 22061diff -urNp linux-2.6.30.4/fs/exec.c linux-2.6.30.4/fs/exec.c
22659--- linux-2.6.29.6/fs/exec.c 2009-07-02 19:41:20.000000000 -0400 22062--- linux-2.6.30.4/fs/exec.c 2009-07-24 17:47:51.000000000 -0400
22660+++ linux-2.6.29.6/fs/exec.c 2009-07-23 17:34:32.152780047 -0400 22063+++ linux-2.6.30.4/fs/exec.c 2009-08-01 14:58:11.881121157 -0400
22661@@ -52,12 +52,24 @@ 22064@@ -54,12 +54,24 @@
22662 #include <linux/tracehook.h>
22663 #include <linux/kmod.h> 22065 #include <linux/kmod.h>
22664 #include <linux/fsnotify.h> 22066 #include <linux/fsnotify.h>
22067 #include <linux/fs_struct.h>
22665+#include <linux/random.h> 22068+#include <linux/random.h>
22666+#include <linux/seq_file.h> 22069+#include <linux/seq_file.h>
22667+ 22070+
@@ -22683,7 +22086,16 @@ diff -urNp linux-2.6.29.6/fs/exec.c linux-2.6.29.6/fs/exec.c
22683 int core_uses_pid; 22086 int core_uses_pid;
22684 char core_pattern[CORENAME_MAX_SIZE] = "core"; 22087 char core_pattern[CORENAME_MAX_SIZE] = "core";
22685 int suid_dumpable = 0; 22088 int suid_dumpable = 0;
22686@@ -169,18 +181,10 @@ static struct page *get_arg_page(struct 22089@@ -112,7 +124,7 @@ SYSCALL_DEFINE1(uselib, const char __use
22090 goto out;
22091
22092 file = do_filp_open(AT_FDCWD, tmp,
22093- O_LARGEFILE | O_RDONLY | FMODE_EXEC, 0,
22094+ O_LARGEFILE | O_RDONLY | FMODE_EXEC | FMODE_GREXEC, 0,
22095 MAY_READ | MAY_EXEC | MAY_OPEN);
22096 putname(tmp);
22097 error = PTR_ERR(file);
22098@@ -160,18 +172,10 @@ static struct page *get_arg_page(struct
22687 int write) 22099 int write)
22688 { 22100 {
22689 struct page *page; 22101 struct page *page;
@@ -22705,7 +22117,7 @@ diff -urNp linux-2.6.29.6/fs/exec.c linux-2.6.29.6/fs/exec.c
22705 return NULL; 22117 return NULL;
22706 22118
22707 if (write) { 22119 if (write) {
22708@@ -252,6 +256,11 @@ static int __bprm_mm_init(struct linux_b 22120@@ -243,6 +247,11 @@ static int __bprm_mm_init(struct linux_b
22709 vma->vm_end = STACK_TOP_MAX; 22121 vma->vm_end = STACK_TOP_MAX;
22710 vma->vm_start = vma->vm_end - PAGE_SIZE; 22122 vma->vm_start = vma->vm_end - PAGE_SIZE;
22711 vma->vm_flags = VM_STACK_FLAGS; 22123 vma->vm_flags = VM_STACK_FLAGS;
@@ -22717,7 +22129,7 @@ diff -urNp linux-2.6.29.6/fs/exec.c linux-2.6.29.6/fs/exec.c
22717 vma->vm_page_prot = vm_get_page_prot(vma->vm_flags); 22129 vma->vm_page_prot = vm_get_page_prot(vma->vm_flags);
22718 err = insert_vm_struct(mm, vma); 22130 err = insert_vm_struct(mm, vma);
22719 if (err) 22131 if (err)
22720@@ -260,6 +269,12 @@ static int __bprm_mm_init(struct linux_b 22132@@ -251,6 +260,12 @@ static int __bprm_mm_init(struct linux_b
22721 mm->stack_vm = mm->total_vm = 1; 22133 mm->stack_vm = mm->total_vm = 1;
22722 up_write(&mm->mmap_sem); 22134 up_write(&mm->mmap_sem);
22723 bprm->p = vma->vm_end - sizeof(void *); 22135 bprm->p = vma->vm_end - sizeof(void *);
@@ -22730,7 +22142,7 @@ diff -urNp linux-2.6.29.6/fs/exec.c linux-2.6.29.6/fs/exec.c
22730 return 0; 22142 return 0;
22731 err: 22143 err:
22732 up_write(&mm->mmap_sem); 22144 up_write(&mm->mmap_sem);
22733@@ -520,6 +535,10 @@ static int shift_arg_pages(struct vm_are 22145@@ -511,6 +526,10 @@ static int shift_arg_pages(struct vm_are
22734 if (vma != find_vma(mm, new_start)) 22146 if (vma != find_vma(mm, new_start))
22735 return -EFAULT; 22147 return -EFAULT;
22736 22148
@@ -22741,7 +22153,7 @@ diff -urNp linux-2.6.29.6/fs/exec.c linux-2.6.29.6/fs/exec.c
22741 /* 22153 /*
22742 * cover the whole range: [new_start, old_end) 22154 * cover the whole range: [new_start, old_end)
22743 */ 22155 */
22744@@ -608,6 +627,14 @@ int setup_arg_pages(struct linux_binprm 22156@@ -599,6 +618,14 @@ int setup_arg_pages(struct linux_binprm
22745 bprm->exec -= stack_shift; 22157 bprm->exec -= stack_shift;
22746 22158
22747 down_write(&mm->mmap_sem); 22159 down_write(&mm->mmap_sem);
@@ -22756,7 +22168,7 @@ diff -urNp linux-2.6.29.6/fs/exec.c linux-2.6.29.6/fs/exec.c
22756 vm_flags = VM_STACK_FLAGS; 22168 vm_flags = VM_STACK_FLAGS;
22757 22169
22758 /* 22170 /*
22759@@ -621,21 +648,24 @@ int setup_arg_pages(struct linux_binprm 22171@@ -612,21 +639,24 @@ int setup_arg_pages(struct linux_binprm
22760 vm_flags &= ~VM_EXEC; 22172 vm_flags &= ~VM_EXEC;
22761 vm_flags |= mm->def_flags; 22173 vm_flags |= mm->def_flags;
22762 22174
@@ -22790,7 +22202,7 @@ diff -urNp linux-2.6.29.6/fs/exec.c linux-2.6.29.6/fs/exec.c
22790 #ifdef CONFIG_STACK_GROWSUP 22202 #ifdef CONFIG_STACK_GROWSUP
22791 stack_base = vma->vm_end + EXTRA_STACK_VM_PAGES * PAGE_SIZE; 22203 stack_base = vma->vm_end + EXTRA_STACK_VM_PAGES * PAGE_SIZE;
22792 #else 22204 #else
22793@@ -647,7 +677,7 @@ int setup_arg_pages(struct linux_binprm 22205@@ -638,7 +668,7 @@ int setup_arg_pages(struct linux_binprm
22794 22206
22795 out_unlock: 22207 out_unlock:
22796 up_write(&mm->mmap_sem); 22208 up_write(&mm->mmap_sem);
@@ -22799,7 +22211,16 @@ diff -urNp linux-2.6.29.6/fs/exec.c linux-2.6.29.6/fs/exec.c
22799 } 22211 }
22800 EXPORT_SYMBOL(setup_arg_pages); 22212 EXPORT_SYMBOL(setup_arg_pages);
22801 22213
22802@@ -1066,7 +1096,7 @@ int check_unsafe_exec(struct linux_binpr 22214@@ -650,7 +680,7 @@ struct file *open_exec(const char *name)
22215 int err;
22216
22217 file = do_filp_open(AT_FDCWD, name,
22218- O_LARGEFILE | O_RDONLY | FMODE_EXEC, 0,
22219+ O_LARGEFILE | O_RDONLY | FMODE_EXEC | FMODE_GREXEC, 0,
22220 MAY_EXEC | MAY_OPEN);
22221 if (IS_ERR(file))
22222 goto out;
22223@@ -1046,7 +1076,7 @@ int check_unsafe_exec(struct linux_binpr
22803 } 22224 }
22804 rcu_read_unlock(); 22225 rcu_read_unlock();
22805 22226
@@ -22808,7 +22229,7 @@ diff -urNp linux-2.6.29.6/fs/exec.c linux-2.6.29.6/fs/exec.c
22808 bprm->unsafe |= LSM_UNSAFE_SHARE; 22229 bprm->unsafe |= LSM_UNSAFE_SHARE;
22809 } else { 22230 } else {
22810 res = -EAGAIN; 22231 res = -EAGAIN;
22811@@ -1270,6 +1300,11 @@ int do_execve(char * filename, 22232@@ -1253,6 +1283,11 @@ int do_execve(char * filename,
22812 char __user *__user *envp, 22233 char __user *__user *envp,
22813 struct pt_regs * regs) 22234 struct pt_regs * regs)
22814 { 22235 {
@@ -22820,7 +22241,7 @@ diff -urNp linux-2.6.29.6/fs/exec.c linux-2.6.29.6/fs/exec.c
22820 struct linux_binprm *bprm; 22241 struct linux_binprm *bprm;
22821 struct file *file; 22242 struct file *file;
22822 struct files_struct *displaced; 22243 struct files_struct *displaced;
22823@@ -1310,6 +1345,18 @@ int do_execve(char * filename, 22244@@ -1294,6 +1329,18 @@ int do_execve(char * filename,
22824 bprm->filename = filename; 22245 bprm->filename = filename;
22825 bprm->interp = filename; 22246 bprm->interp = filename;
22826 22247
@@ -22839,7 +22260,7 @@ diff -urNp linux-2.6.29.6/fs/exec.c linux-2.6.29.6/fs/exec.c
22839 retval = bprm_mm_init(bprm); 22260 retval = bprm_mm_init(bprm);
22840 if (retval) 22261 if (retval)
22841 goto out_file; 22262 goto out_file;
22842@@ -1339,10 +1386,41 @@ int do_execve(char * filename, 22263@@ -1323,10 +1370,41 @@ int do_execve(char * filename,
22843 if (retval < 0) 22264 if (retval < 0)
22844 goto out; 22265 goto out;
22845 22266
@@ -22882,7 +22303,7 @@ diff -urNp linux-2.6.29.6/fs/exec.c linux-2.6.29.6/fs/exec.c
22882 22303
22883 /* execve succeeded */ 22304 /* execve succeeded */
22884 current->fs->in_exec = 0; 22305 current->fs->in_exec = 0;
22885@@ -1353,6 +1431,14 @@ int do_execve(char * filename, 22306@@ -1338,6 +1416,14 @@ int do_execve(char * filename,
22886 put_files_struct(displaced); 22307 put_files_struct(displaced);
22887 return retval; 22308 return retval;
22888 22309
@@ -22897,7 +22318,7 @@ diff -urNp linux-2.6.29.6/fs/exec.c linux-2.6.29.6/fs/exec.c
22897 out: 22318 out:
22898 if (bprm->mm) 22319 if (bprm->mm)
22899 mmput (bprm->mm); 22320 mmput (bprm->mm);
22900@@ -1520,6 +1606,164 @@ out: 22321@@ -1506,6 +1592,164 @@ out:
22901 return ispipe; 22322 return ispipe;
22902 } 22323 }
22903 22324
@@ -23062,7 +22483,7 @@ diff -urNp linux-2.6.29.6/fs/exec.c linux-2.6.29.6/fs/exec.c
23062 static int zap_process(struct task_struct *start) 22483 static int zap_process(struct task_struct *start)
23063 { 22484 {
23064 struct task_struct *t; 22485 struct task_struct *t;
23065@@ -1779,6 +2023,10 @@ void do_coredump(long signr, int exit_co 22486@@ -1765,6 +2009,10 @@ void do_coredump(long signr, int exit_co
23066 */ 22487 */
23067 clear_thread_flag(TIF_SIGPENDING); 22488 clear_thread_flag(TIF_SIGPENDING);
23068 22489
@@ -23073,9 +22494,9 @@ diff -urNp linux-2.6.29.6/fs/exec.c linux-2.6.29.6/fs/exec.c
23073 /* 22494 /*
23074 * lock_kernel() because format_corename() is controlled by sysctl, which 22495 * lock_kernel() because format_corename() is controlled by sysctl, which
23075 * uses lock_kernel() 22496 * uses lock_kernel()
23076diff -urNp linux-2.6.29.6/fs/ext2/balloc.c linux-2.6.29.6/fs/ext2/balloc.c 22497diff -urNp linux-2.6.30.4/fs/ext2/balloc.c linux-2.6.30.4/fs/ext2/balloc.c
23077--- linux-2.6.29.6/fs/ext2/balloc.c 2009-07-02 19:41:20.000000000 -0400 22498--- linux-2.6.30.4/fs/ext2/balloc.c 2009-07-24 17:47:51.000000000 -0400
23078+++ linux-2.6.29.6/fs/ext2/balloc.c 2009-07-23 17:34:32.152780047 -0400 22499+++ linux-2.6.30.4/fs/ext2/balloc.c 2009-07-30 11:10:49.161377797 -0400
23079@@ -1192,7 +1192,7 @@ static int ext2_has_free_blocks(struct e 22500@@ -1192,7 +1192,7 @@ static int ext2_has_free_blocks(struct e
23080 22501
23081 free_blocks = percpu_counter_read_positive(&sbi->s_freeblocks_counter); 22502 free_blocks = percpu_counter_read_positive(&sbi->s_freeblocks_counter);
@@ -23085,9 +22506,9 @@ diff -urNp linux-2.6.29.6/fs/ext2/balloc.c linux-2.6.29.6/fs/ext2/balloc.c
23085 sbi->s_resuid != current_fsuid() && 22506 sbi->s_resuid != current_fsuid() &&
23086 (sbi->s_resgid == 0 || !in_group_p (sbi->s_resgid))) { 22507 (sbi->s_resgid == 0 || !in_group_p (sbi->s_resgid))) {
23087 return 0; 22508 return 0;
23088diff -urNp linux-2.6.29.6/fs/ext3/balloc.c linux-2.6.29.6/fs/ext3/balloc.c 22509diff -urNp linux-2.6.30.4/fs/ext3/balloc.c linux-2.6.30.4/fs/ext3/balloc.c
23089--- linux-2.6.29.6/fs/ext3/balloc.c 2009-07-02 19:41:20.000000000 -0400 22510--- linux-2.6.30.4/fs/ext3/balloc.c 2009-07-24 17:47:51.000000000 -0400
23090+++ linux-2.6.29.6/fs/ext3/balloc.c 2009-07-23 17:34:32.153715921 -0400 22511+++ linux-2.6.30.4/fs/ext3/balloc.c 2009-07-30 11:10:49.178426808 -0400
23091@@ -1421,7 +1421,7 @@ static int ext3_has_free_blocks(struct e 22512@@ -1421,7 +1421,7 @@ static int ext3_has_free_blocks(struct e
23092 22513
23093 free_blocks = percpu_counter_read_positive(&sbi->s_freeblocks_counter); 22514 free_blocks = percpu_counter_read_positive(&sbi->s_freeblocks_counter);
@@ -23097,10 +22518,10 @@ diff -urNp linux-2.6.29.6/fs/ext3/balloc.c linux-2.6.29.6/fs/ext3/balloc.c
23097 sbi->s_resuid != current_fsuid() && 22518 sbi->s_resuid != current_fsuid() &&
23098 (sbi->s_resgid == 0 || !in_group_p (sbi->s_resgid))) { 22519 (sbi->s_resgid == 0 || !in_group_p (sbi->s_resgid))) {
23099 return 0; 22520 return 0;
23100diff -urNp linux-2.6.29.6/fs/ext3/namei.c linux-2.6.29.6/fs/ext3/namei.c 22521diff -urNp linux-2.6.30.4/fs/ext3/namei.c linux-2.6.30.4/fs/ext3/namei.c
23101--- linux-2.6.29.6/fs/ext3/namei.c 2009-07-02 19:41:20.000000000 -0400 22522--- linux-2.6.30.4/fs/ext3/namei.c 2009-07-24 17:47:51.000000000 -0400
23102+++ linux-2.6.29.6/fs/ext3/namei.c 2009-07-23 17:34:32.153715921 -0400 22523+++ linux-2.6.30.4/fs/ext3/namei.c 2009-07-30 09:48:10.082882469 -0400
23103@@ -1159,7 +1159,7 @@ static struct ext3_dir_entry_2 *do_split 22524@@ -1168,7 +1168,7 @@ static struct ext3_dir_entry_2 *do_split
23104 char *data1 = (*bh)->b_data, *data2; 22525 char *data1 = (*bh)->b_data, *data2;
23105 unsigned split, move, size; 22526 unsigned split, move, size;
23106 struct ext3_dir_entry_2 *de = NULL, *de2; 22527 struct ext3_dir_entry_2 *de = NULL, *de2;
@@ -23109,9 +22530,9 @@ diff -urNp linux-2.6.29.6/fs/ext3/namei.c linux-2.6.29.6/fs/ext3/namei.c
23109 22530
23110 bh2 = ext3_append (handle, dir, &newblock, &err); 22531 bh2 = ext3_append (handle, dir, &newblock, &err);
23111 if (!(bh2)) { 22532 if (!(bh2)) {
23112diff -urNp linux-2.6.29.6/fs/ext3/xattr.c linux-2.6.29.6/fs/ext3/xattr.c 22533diff -urNp linux-2.6.30.4/fs/ext3/xattr.c linux-2.6.30.4/fs/ext3/xattr.c
23113--- linux-2.6.29.6/fs/ext3/xattr.c 2009-07-02 19:41:20.000000000 -0400 22534--- linux-2.6.30.4/fs/ext3/xattr.c 2009-07-24 17:47:51.000000000 -0400
23114+++ linux-2.6.29.6/fs/ext3/xattr.c 2009-07-23 17:34:32.154747281 -0400 22535+++ linux-2.6.30.4/fs/ext3/xattr.c 2009-07-30 09:48:10.082882469 -0400
23115@@ -89,8 +89,8 @@ 22536@@ -89,8 +89,8 @@
23116 printk("\n"); \ 22537 printk("\n"); \
23117 } while (0) 22538 } while (0)
@@ -23123,10 +22544,10 @@ diff -urNp linux-2.6.29.6/fs/ext3/xattr.c linux-2.6.29.6/fs/ext3/xattr.c
23123 #endif 22544 #endif
23124 22545
23125 static void ext3_xattr_cache_insert(struct buffer_head *); 22546 static void ext3_xattr_cache_insert(struct buffer_head *);
23126diff -urNp linux-2.6.29.6/fs/ext4/balloc.c linux-2.6.29.6/fs/ext4/balloc.c 22547diff -urNp linux-2.6.30.4/fs/ext4/balloc.c linux-2.6.30.4/fs/ext4/balloc.c
23127--- linux-2.6.29.6/fs/ext4/balloc.c 2009-07-02 19:41:20.000000000 -0400 22548--- linux-2.6.30.4/fs/ext4/balloc.c 2009-07-24 17:47:51.000000000 -0400
23128+++ linux-2.6.29.6/fs/ext4/balloc.c 2009-07-23 17:34:32.154747281 -0400 22549+++ linux-2.6.30.4/fs/ext4/balloc.c 2009-07-30 11:10:49.209900020 -0400
23129@@ -577,7 +577,7 @@ int ext4_has_free_blocks(struct ext4_sb_ 22550@@ -573,7 +573,7 @@ int ext4_has_free_blocks(struct ext4_sb_
23130 /* Hm, nope. Are (enough) root reserved blocks available? */ 22551 /* Hm, nope. Are (enough) root reserved blocks available? */
23131 if (sbi->s_resuid == current_fsuid() || 22552 if (sbi->s_resuid == current_fsuid() ||
23132 ((sbi->s_resgid != 0) && in_group_p(sbi->s_resgid)) || 22553 ((sbi->s_resgid != 0) && in_group_p(sbi->s_resgid)) ||
@@ -23135,9 +22556,9 @@ diff -urNp linux-2.6.29.6/fs/ext4/balloc.c linux-2.6.29.6/fs/ext4/balloc.c
23135 if (free_blocks >= (nblocks + dirty_blocks)) 22556 if (free_blocks >= (nblocks + dirty_blocks))
23136 return 1; 22557 return 1;
23137 } 22558 }
23138diff -urNp linux-2.6.29.6/fs/ext4/file.c linux-2.6.29.6/fs/ext4/file.c 22559diff -urNp linux-2.6.30.4/fs/ext4/file.c linux-2.6.30.4/fs/ext4/file.c
23139--- linux-2.6.29.6/fs/ext4/file.c 2009-07-02 19:41:20.000000000 -0400 22560--- linux-2.6.30.4/fs/ext4/file.c 2009-07-24 17:47:51.000000000 -0400
23140+++ linux-2.6.29.6/fs/ext4/file.c 2009-07-23 18:40:28.377699187 -0400 22561+++ linux-2.6.30.4/fs/ext4/file.c 2009-07-30 09:48:10.082882469 -0400
23141@@ -128,7 +128,7 @@ force_commit: 22562@@ -128,7 +128,7 @@ force_commit:
23142 return ret; 22563 return ret;
23143 } 22564 }
@@ -23147,10 +22568,10 @@ diff -urNp linux-2.6.29.6/fs/ext4/file.c linux-2.6.29.6/fs/ext4/file.c
23147 .fault = filemap_fault, 22568 .fault = filemap_fault,
23148 .page_mkwrite = ext4_page_mkwrite, 22569 .page_mkwrite = ext4_page_mkwrite,
23149 }; 22570 };
23150diff -urNp linux-2.6.29.6/fs/ext4/mballoc.c linux-2.6.29.6/fs/ext4/mballoc.c 22571diff -urNp linux-2.6.30.4/fs/ext4/mballoc.c linux-2.6.30.4/fs/ext4/mballoc.c
23151--- linux-2.6.29.6/fs/ext4/mballoc.c 2009-07-02 19:41:20.000000000 -0400 22572--- linux-2.6.30.4/fs/ext4/mballoc.c 2009-07-24 17:47:51.000000000 -0400
23152+++ linux-2.6.29.6/fs/ext4/mballoc.c 2009-07-23 18:40:28.389509253 -0400 22573+++ linux-2.6.30.4/fs/ext4/mballoc.c 2009-07-30 09:48:10.083824497 -0400
23153@@ -2215,7 +2215,7 @@ static void ext4_mb_seq_history_stop(str 22574@@ -2221,7 +2221,7 @@ static void ext4_mb_seq_history_stop(str
23154 { 22575 {
23155 } 22576 }
23156 22577
@@ -23159,7 +22580,7 @@ diff -urNp linux-2.6.29.6/fs/ext4/mballoc.c linux-2.6.29.6/fs/ext4/mballoc.c
23159 .start = ext4_mb_seq_history_start, 22580 .start = ext4_mb_seq_history_start,
23160 .next = ext4_mb_seq_history_next, 22581 .next = ext4_mb_seq_history_next,
23161 .stop = ext4_mb_seq_history_stop, 22582 .stop = ext4_mb_seq_history_stop,
23162@@ -2297,7 +2297,7 @@ static ssize_t ext4_mb_seq_history_write 22583@@ -2303,7 +2303,7 @@ static ssize_t ext4_mb_seq_history_write
23163 return count; 22584 return count;
23164 } 22585 }
23165 22586
@@ -23168,7 +22589,7 @@ diff -urNp linux-2.6.29.6/fs/ext4/mballoc.c linux-2.6.29.6/fs/ext4/mballoc.c
23168 .owner = THIS_MODULE, 22589 .owner = THIS_MODULE,
23169 .open = ext4_mb_seq_history_open, 22590 .open = ext4_mb_seq_history_open,
23170 .read = seq_read, 22591 .read = seq_read,
23171@@ -2379,7 +2379,7 @@ static void ext4_mb_seq_groups_stop(stru 22592@@ -2385,7 +2385,7 @@ static void ext4_mb_seq_groups_stop(stru
23172 { 22593 {
23173 } 22594 }
23174 22595
@@ -23177,7 +22598,7 @@ diff -urNp linux-2.6.29.6/fs/ext4/mballoc.c linux-2.6.29.6/fs/ext4/mballoc.c
23177 .start = ext4_mb_seq_groups_start, 22598 .start = ext4_mb_seq_groups_start,
23178 .next = ext4_mb_seq_groups_next, 22599 .next = ext4_mb_seq_groups_next,
23179 .stop = ext4_mb_seq_groups_stop, 22600 .stop = ext4_mb_seq_groups_stop,
23180@@ -2400,7 +2400,7 @@ static int ext4_mb_seq_groups_open(struc 22601@@ -2406,7 +2406,7 @@ static int ext4_mb_seq_groups_open(struc
23181 22602
23182 } 22603 }
23183 22604
@@ -23186,10 +22607,10 @@ diff -urNp linux-2.6.29.6/fs/ext4/mballoc.c linux-2.6.29.6/fs/ext4/mballoc.c
23186 .owner = THIS_MODULE, 22607 .owner = THIS_MODULE,
23187 .open = ext4_mb_seq_groups_open, 22608 .open = ext4_mb_seq_groups_open,
23188 .read = seq_read, 22609 .read = seq_read,
23189diff -urNp linux-2.6.29.6/fs/ext4/namei.c linux-2.6.29.6/fs/ext4/namei.c 22610diff -urNp linux-2.6.30.4/fs/ext4/namei.c linux-2.6.30.4/fs/ext4/namei.c
23190--- linux-2.6.29.6/fs/ext4/namei.c 2009-07-02 19:41:20.000000000 -0400 22611--- linux-2.6.30.4/fs/ext4/namei.c 2009-07-24 17:47:51.000000000 -0400
23191+++ linux-2.6.29.6/fs/ext4/namei.c 2009-07-23 17:34:32.154747281 -0400 22612+++ linux-2.6.30.4/fs/ext4/namei.c 2009-07-30 09:48:10.084769862 -0400
23192@@ -1177,7 +1177,7 @@ static struct ext4_dir_entry_2 *do_split 22613@@ -1203,7 +1203,7 @@ static struct ext4_dir_entry_2 *do_split
23193 char *data1 = (*bh)->b_data, *data2; 22614 char *data1 = (*bh)->b_data, *data2;
23194 unsigned split, move, size; 22615 unsigned split, move, size;
23195 struct ext4_dir_entry_2 *de = NULL, *de2; 22616 struct ext4_dir_entry_2 *de = NULL, *de2;
@@ -23198,40 +22619,9 @@ diff -urNp linux-2.6.29.6/fs/ext4/namei.c linux-2.6.29.6/fs/ext4/namei.c
23198 22619
23199 bh2 = ext4_append (handle, dir, &newblock, &err); 22620 bh2 = ext4_append (handle, dir, &newblock, &err);
23200 if (!(bh2)) { 22621 if (!(bh2)) {
23201diff -urNp linux-2.6.29.6/fs/fat/namei_msdos.c linux-2.6.29.6/fs/fat/namei_msdos.c 22622diff -urNp linux-2.6.30.4/fs/fcntl.c linux-2.6.30.4/fs/fcntl.c
23202--- linux-2.6.29.6/fs/fat/namei_msdos.c 2009-07-02 19:41:20.000000000 -0400 22623--- linux-2.6.30.4/fs/fcntl.c 2009-07-24 17:47:51.000000000 -0400
23203+++ linux-2.6.29.6/fs/fat/namei_msdos.c 2009-07-23 18:40:28.403484970 -0400 22624+++ linux-2.6.30.4/fs/fcntl.c 2009-07-30 11:10:49.218051199 -0400
23204@@ -188,7 +188,7 @@ old_compare:
23205 goto out;
23206 }
23207
23208-static struct dentry_operations msdos_dentry_operations = {
23209+static const struct dentry_operations msdos_dentry_operations = {
23210 .d_hash = msdos_hash,
23211 .d_compare = msdos_cmp,
23212 };
23213diff -urNp linux-2.6.29.6/fs/fat/namei_vfat.c linux-2.6.29.6/fs/fat/namei_vfat.c
23214--- linux-2.6.29.6/fs/fat/namei_vfat.c 2009-07-02 19:41:20.000000000 -0400
23215+++ linux-2.6.29.6/fs/fat/namei_vfat.c 2009-07-23 18:40:28.405445251 -0400
23216@@ -166,13 +166,13 @@ static int vfat_cmp(struct dentry *dentr
23217 return 1;
23218 }
23219
23220-static struct dentry_operations vfat_ci_dentry_ops = {
23221+static const struct dentry_operations vfat_ci_dentry_ops = {
23222 .d_revalidate = vfat_revalidate_ci,
23223 .d_hash = vfat_hashi,
23224 .d_compare = vfat_cmpi,
23225 };
23226
23227-static struct dentry_operations vfat_dentry_ops = {
23228+static const struct dentry_operations vfat_dentry_ops = {
23229 .d_revalidate = vfat_revalidate,
23230 .d_hash = vfat_hash,
23231 .d_compare = vfat_cmp,
23232diff -urNp linux-2.6.29.6/fs/fcntl.c linux-2.6.29.6/fs/fcntl.c
23233--- linux-2.6.29.6/fs/fcntl.c 2009-07-02 19:41:20.000000000 -0400
23234+++ linux-2.6.29.6/fs/fcntl.c 2009-07-23 17:34:32.155702568 -0400
23235@@ -269,6 +269,7 @@ static long do_fcntl(int fd, unsigned in 22625@@ -269,6 +269,7 @@ static long do_fcntl(int fd, unsigned in
23236 switch (cmd) { 22626 switch (cmd) {
23237 case F_DUPFD: 22627 case F_DUPFD:
@@ -23250,9 +22640,9 @@ diff -urNp linux-2.6.29.6/fs/fcntl.c linux-2.6.29.6/fs/fcntl.c
23250 rcu_read_unlock(); 22640 rcu_read_unlock();
23251 return ret; 22641 return ret;
23252 } 22642 }
23253diff -urNp linux-2.6.29.6/fs/file.c linux-2.6.29.6/fs/file.c 22643diff -urNp linux-2.6.30.4/fs/file.c linux-2.6.30.4/fs/file.c
23254--- linux-2.6.29.6/fs/file.c 2009-07-02 19:41:20.000000000 -0400 22644--- linux-2.6.30.4/fs/file.c 2009-07-24 17:47:51.000000000 -0400
23255+++ linux-2.6.29.6/fs/file.c 2009-07-23 17:34:32.155702568 -0400 22645+++ linux-2.6.30.4/fs/file.c 2009-07-30 11:10:49.226664348 -0400
23256@@ -13,6 +13,7 @@ 22646@@ -13,6 +13,7 @@
23257 #include <linux/slab.h> 22647 #include <linux/slab.h>
23258 #include <linux/vmalloc.h> 22648 #include <linux/vmalloc.h>
@@ -23270,10 +22660,10 @@ diff -urNp linux-2.6.29.6/fs/file.c linux-2.6.29.6/fs/file.c
23270 if (nr >= current->signal->rlim[RLIMIT_NOFILE].rlim_cur) 22660 if (nr >= current->signal->rlim[RLIMIT_NOFILE].rlim_cur)
23271 return -EMFILE; 22661 return -EMFILE;
23272 22662
23273diff -urNp linux-2.6.29.6/fs/fs_struct.c linux-2.6.29.6/fs/fs_struct.c 22663diff -urNp linux-2.6.30.4/fs/fs_struct.c linux-2.6.30.4/fs/fs_struct.c
23274--- linux-2.6.29.6/fs/fs_struct.c 2009-07-02 19:41:20.000000000 -0400 22664--- linux-2.6.30.4/fs/fs_struct.c 2009-07-24 17:47:51.000000000 -0400
23275+++ linux-2.6.29.6/fs/fs_struct.c 2009-07-23 17:34:32.155702568 -0400 22665+++ linux-2.6.30.4/fs/fs_struct.c 2009-07-30 09:48:10.084769862 -0400
23276@@ -88,7 +88,7 @@ void exit_fs(struct task_struct *tsk) 22666@@ -89,7 +89,7 @@ void exit_fs(struct task_struct *tsk)
23277 task_lock(tsk); 22667 task_lock(tsk);
23278 write_lock(&fs->lock); 22668 write_lock(&fs->lock);
23279 tsk->fs = NULL; 22669 tsk->fs = NULL;
@@ -23282,7 +22672,7 @@ diff -urNp linux-2.6.29.6/fs/fs_struct.c linux-2.6.29.6/fs/fs_struct.c
23282 write_unlock(&fs->lock); 22672 write_unlock(&fs->lock);
23283 task_unlock(tsk); 22673 task_unlock(tsk);
23284 if (kill) 22674 if (kill)
23285@@ -101,7 +101,7 @@ struct fs_struct *copy_fs_struct(struct 22675@@ -102,7 +102,7 @@ struct fs_struct *copy_fs_struct(struct
23286 struct fs_struct *fs = kmem_cache_alloc(fs_cachep, GFP_KERNEL); 22676 struct fs_struct *fs = kmem_cache_alloc(fs_cachep, GFP_KERNEL);
23287 /* We don't need to lock fs - think why ;-) */ 22677 /* We don't need to lock fs - think why ;-) */
23288 if (fs) { 22678 if (fs) {
@@ -23291,7 +22681,7 @@ diff -urNp linux-2.6.29.6/fs/fs_struct.c linux-2.6.29.6/fs/fs_struct.c
23291 fs->in_exec = 0; 22681 fs->in_exec = 0;
23292 rwlock_init(&fs->lock); 22682 rwlock_init(&fs->lock);
23293 fs->umask = old->umask; 22683 fs->umask = old->umask;
23294@@ -126,7 +126,7 @@ int unshare_fs_struct(void) 22684@@ -127,7 +127,7 @@ int unshare_fs_struct(void)
23295 22685
23296 task_lock(current); 22686 task_lock(current);
23297 write_lock(&fs->lock); 22687 write_lock(&fs->lock);
@@ -23300,7 +22690,7 @@ diff -urNp linux-2.6.29.6/fs/fs_struct.c linux-2.6.29.6/fs/fs_struct.c
23300 current->fs = new_fs; 22690 current->fs = new_fs;
23301 write_unlock(&fs->lock); 22691 write_unlock(&fs->lock);
23302 task_unlock(current); 22692 task_unlock(current);
23303@@ -140,7 +140,7 @@ EXPORT_SYMBOL_GPL(unshare_fs_struct); 22693@@ -147,7 +147,7 @@ EXPORT_SYMBOL(current_umask);
23304 22694
23305 /* to be mentioned only in INIT_TASK */ 22695 /* to be mentioned only in INIT_TASK */
23306 struct fs_struct init_fs = { 22696 struct fs_struct init_fs = {
@@ -23309,7 +22699,7 @@ diff -urNp linux-2.6.29.6/fs/fs_struct.c linux-2.6.29.6/fs/fs_struct.c
23309 .lock = __RW_LOCK_UNLOCKED(init_fs.lock), 22699 .lock = __RW_LOCK_UNLOCKED(init_fs.lock),
23310 .umask = 0022, 22700 .umask = 0022,
23311 }; 22701 };
23312@@ -155,12 +155,12 @@ void daemonize_fs_struct(void) 22702@@ -162,12 +162,12 @@ void daemonize_fs_struct(void)
23313 task_lock(current); 22703 task_lock(current);
23314 22704
23315 write_lock(&init_fs.lock); 22705 write_lock(&init_fs.lock);
@@ -23324,9 +22714,9 @@ diff -urNp linux-2.6.29.6/fs/fs_struct.c linux-2.6.29.6/fs/fs_struct.c
23324 write_unlock(&fs->lock); 22714 write_unlock(&fs->lock);
23325 22715
23326 task_unlock(current); 22716 task_unlock(current);
23327diff -urNp linux-2.6.29.6/fs/fuse/control.c linux-2.6.29.6/fs/fuse/control.c 22717diff -urNp linux-2.6.30.4/fs/fuse/control.c linux-2.6.30.4/fs/fuse/control.c
23328--- linux-2.6.29.6/fs/fuse/control.c 2009-07-02 19:41:20.000000000 -0400 22718--- linux-2.6.30.4/fs/fuse/control.c 2009-07-24 17:47:51.000000000 -0400
23329+++ linux-2.6.29.6/fs/fuse/control.c 2009-07-23 17:34:32.155702568 -0400 22719+++ linux-2.6.30.4/fs/fuse/control.c 2009-07-30 09:48:10.084769862 -0400
23330@@ -161,7 +161,7 @@ void fuse_ctl_remove_conn(struct fuse_co 22720@@ -161,7 +161,7 @@ void fuse_ctl_remove_conn(struct fuse_co
23331 22721
23332 static int fuse_ctl_fill_super(struct super_block *sb, void *data, int silent) 22722 static int fuse_ctl_fill_super(struct super_block *sb, void *data, int silent)
@@ -23336,19 +22726,10 @@ diff -urNp linux-2.6.29.6/fs/fuse/control.c linux-2.6.29.6/fs/fuse/control.c
23336 struct fuse_conn *fc; 22726 struct fuse_conn *fc;
23337 int err; 22727 int err;
23338 22728
23339diff -urNp linux-2.6.29.6/fs/fuse/dir.c linux-2.6.29.6/fs/fuse/dir.c 22729diff -urNp linux-2.6.30.4/fs/fuse/dir.c linux-2.6.30.4/fs/fuse/dir.c
23340--- linux-2.6.29.6/fs/fuse/dir.c 2009-07-02 19:41:20.000000000 -0400 22730--- linux-2.6.30.4/fs/fuse/dir.c 2009-07-24 17:47:51.000000000 -0400
23341+++ linux-2.6.29.6/fs/fuse/dir.c 2009-07-23 18:40:27.470335769 -0400 22731+++ linux-2.6.30.4/fs/fuse/dir.c 2009-07-30 09:48:10.085789827 -0400
23342@@ -224,7 +224,7 @@ static int invalid_nodeid(u64 nodeid) 22732@@ -1082,7 +1082,7 @@ static char *read_link(struct dentry *de
23343 return !nodeid || nodeid == FUSE_ROOT_ID;
23344 }
23345
23346-struct dentry_operations fuse_dentry_operations = {
23347+const struct dentry_operations fuse_dentry_operations = {
23348 .d_revalidate = fuse_dentry_revalidate,
23349 };
23350
23351@@ -1081,7 +1081,7 @@ static char *read_link(struct dentry *de
23352 return link; 22733 return link;
23353 } 22734 }
23354 22735
@@ -23357,10 +22738,10 @@ diff -urNp linux-2.6.29.6/fs/fuse/dir.c linux-2.6.29.6/fs/fuse/dir.c
23357 { 22738 {
23358 if (!IS_ERR(link)) 22739 if (!IS_ERR(link))
23359 free_page((unsigned long) link); 22740 free_page((unsigned long) link);
23360diff -urNp linux-2.6.29.6/fs/fuse/file.c linux-2.6.29.6/fs/fuse/file.c 22741diff -urNp linux-2.6.30.4/fs/fuse/file.c linux-2.6.30.4/fs/fuse/file.c
23361--- linux-2.6.29.6/fs/fuse/file.c 2009-07-02 19:41:20.000000000 -0400 22742--- linux-2.6.30.4/fs/fuse/file.c 2009-07-24 17:47:51.000000000 -0400
23362+++ linux-2.6.29.6/fs/fuse/file.c 2009-07-23 18:40:28.411550599 -0400 22743+++ linux-2.6.30.4/fs/fuse/file.c 2009-07-30 09:48:10.085789827 -0400
23363@@ -1247,7 +1247,7 @@ static int fuse_page_mkwrite(struct vm_a 22744@@ -1265,7 +1265,7 @@ static int fuse_page_mkwrite(struct vm_a
23364 return 0; 22745 return 0;
23365 } 22746 }
23366 22747
@@ -23369,34 +22750,10 @@ diff -urNp linux-2.6.29.6/fs/fuse/file.c linux-2.6.29.6/fs/fuse/file.c
23369 .close = fuse_vma_close, 22750 .close = fuse_vma_close,
23370 .fault = filemap_fault, 22751 .fault = filemap_fault,
23371 .page_mkwrite = fuse_page_mkwrite, 22752 .page_mkwrite = fuse_page_mkwrite,
23372diff -urNp linux-2.6.29.6/fs/fuse/fuse_i.h linux-2.6.29.6/fs/fuse/fuse_i.h 22753diff -urNp linux-2.6.30.4/fs/gfs2/ops_file.c linux-2.6.30.4/fs/gfs2/ops_file.c
23373--- linux-2.6.29.6/fs/fuse/fuse_i.h 2009-07-02 19:41:20.000000000 -0400 22754--- linux-2.6.30.4/fs/gfs2/ops_file.c 2009-07-24 17:47:51.000000000 -0400
23374+++ linux-2.6.29.6/fs/fuse/fuse_i.h 2009-07-23 18:40:28.412448044 -0400 22755+++ linux-2.6.30.4/fs/gfs2/ops_file.c 2009-07-30 09:48:10.086770196 -0400
23375@@ -493,7 +493,7 @@ static inline u64 get_node_id(struct ino 22756@@ -420,7 +420,7 @@ out:
23376 /** Device operations */
23377 extern const struct file_operations fuse_dev_operations;
23378
23379-extern struct dentry_operations fuse_dentry_operations;
23380+extern const struct dentry_operations fuse_dentry_operations;
23381
23382 /**
23383 * Get a filled in inode
23384diff -urNp linux-2.6.29.6/fs/gfs2/ops_dentry.c linux-2.6.29.6/fs/gfs2/ops_dentry.c
23385--- linux-2.6.29.6/fs/gfs2/ops_dentry.c 2009-07-02 19:41:20.000000000 -0400
23386+++ linux-2.6.29.6/fs/gfs2/ops_dentry.c 2009-07-23 18:40:28.417529345 -0400
23387@@ -108,7 +108,7 @@ static int gfs2_dhash(struct dentry *den
23388 return 0;
23389 }
23390
23391-struct dentry_operations gfs2_dops = {
23392+const struct dentry_operations gfs2_dops = {
23393 .d_revalidate = gfs2_drevalidate,
23394 .d_hash = gfs2_dhash,
23395 };
23396diff -urNp linux-2.6.29.6/fs/gfs2/ops_file.c linux-2.6.29.6/fs/gfs2/ops_file.c
23397--- linux-2.6.29.6/fs/gfs2/ops_file.c 2009-07-02 19:41:20.000000000 -0400
23398+++ linux-2.6.29.6/fs/gfs2/ops_file.c 2009-07-23 18:40:28.423342085 -0400
23399@@ -417,7 +417,7 @@ out:
23400 return ret; 22757 return ret;
23401 } 22758 }
23402 22759
@@ -23405,22 +22762,10 @@ diff -urNp linux-2.6.29.6/fs/gfs2/ops_file.c linux-2.6.29.6/fs/gfs2/ops_file.c
23405 .fault = filemap_fault, 22762 .fault = filemap_fault,
23406 .page_mkwrite = gfs2_page_mkwrite, 22763 .page_mkwrite = gfs2_page_mkwrite,
23407 }; 22764 };
23408diff -urNp linux-2.6.29.6/fs/gfs2/super.h linux-2.6.29.6/fs/gfs2/super.h 22765diff -urNp linux-2.6.30.4/fs/hfs/inode.c linux-2.6.30.4/fs/hfs/inode.c
23409--- linux-2.6.29.6/fs/gfs2/super.h 2009-07-02 19:41:20.000000000 -0400 22766--- linux-2.6.30.4/fs/hfs/inode.c 2009-07-24 17:47:51.000000000 -0400
23410+++ linux-2.6.29.6/fs/gfs2/super.h 2009-07-23 18:40:28.431261400 -0400 22767+++ linux-2.6.30.4/fs/hfs/inode.c 2009-07-30 09:48:10.086770196 -0400
23411@@ -47,7 +47,7 @@ extern struct file_system_type gfs2_fs_t 22768@@ -423,7 +423,7 @@ int hfs_write_inode(struct inode *inode,
23412 extern struct file_system_type gfs2meta_fs_type;
23413 extern const struct export_operations gfs2_export_ops;
23414 extern const struct super_operations gfs2_super_ops;
23415-extern struct dentry_operations gfs2_dops;
23416+extern const struct dentry_operations gfs2_dops;
23417
23418 #endif /* __SUPER_DOT_H__ */
23419
23420diff -urNp linux-2.6.29.6/fs/hfs/inode.c linux-2.6.29.6/fs/hfs/inode.c
23421--- linux-2.6.29.6/fs/hfs/inode.c 2009-07-02 19:41:20.000000000 -0400
23422+++ linux-2.6.29.6/fs/hfs/inode.c 2009-07-23 17:34:32.156720374 -0400
23423@@ -419,7 +419,7 @@ int hfs_write_inode(struct inode *inode,
23424 22769
23425 if (S_ISDIR(main_inode->i_mode)) { 22770 if (S_ISDIR(main_inode->i_mode)) {
23426 if (fd.entrylength < sizeof(struct hfs_cat_dir)) 22771 if (fd.entrylength < sizeof(struct hfs_cat_dir))
@@ -23429,7 +22774,7 @@ diff -urNp linux-2.6.29.6/fs/hfs/inode.c linux-2.6.29.6/fs/hfs/inode.c
23429 hfs_bnode_read(fd.bnode, &rec, fd.entryoffset, 22774 hfs_bnode_read(fd.bnode, &rec, fd.entryoffset,
23430 sizeof(struct hfs_cat_dir)); 22775 sizeof(struct hfs_cat_dir));
23431 if (rec.type != HFS_CDR_DIR || 22776 if (rec.type != HFS_CDR_DIR ||
23432@@ -440,7 +440,7 @@ int hfs_write_inode(struct inode *inode, 22777@@ -444,7 +444,7 @@ int hfs_write_inode(struct inode *inode,
23433 sizeof(struct hfs_cat_file)); 22778 sizeof(struct hfs_cat_file));
23434 } else { 22779 } else {
23435 if (fd.entrylength < sizeof(struct hfs_cat_file)) 22780 if (fd.entrylength < sizeof(struct hfs_cat_file))
@@ -23438,30 +22783,9 @@ diff -urNp linux-2.6.29.6/fs/hfs/inode.c linux-2.6.29.6/fs/hfs/inode.c
23438 hfs_bnode_read(fd.bnode, &rec, fd.entryoffset, 22783 hfs_bnode_read(fd.bnode, &rec, fd.entryoffset,
23439 sizeof(struct hfs_cat_file)); 22784 sizeof(struct hfs_cat_file));
23440 if (rec.type != HFS_CDR_FIL || 22785 if (rec.type != HFS_CDR_FIL ||
23441diff -urNp linux-2.6.29.6/fs/hfsplus/hfsplus_fs.h linux-2.6.29.6/fs/hfsplus/hfsplus_fs.h 22786diff -urNp linux-2.6.30.4/fs/hfsplus/inode.c linux-2.6.30.4/fs/hfsplus/inode.c
23442--- linux-2.6.29.6/fs/hfsplus/hfsplus_fs.h 2009-07-02 19:41:20.000000000 -0400 22787--- linux-2.6.30.4/fs/hfsplus/inode.c 2009-07-24 17:47:51.000000000 -0400
23443+++ linux-2.6.29.6/fs/hfsplus/hfsplus_fs.h 2009-07-23 18:40:28.441324863 -0400 22788+++ linux-2.6.30.4/fs/hfsplus/inode.c 2009-07-30 09:48:10.086770196 -0400
23444@@ -327,7 +327,7 @@ void hfsplus_file_truncate(struct inode
23445 /* inode.c */
23446 extern const struct address_space_operations hfsplus_aops;
23447 extern const struct address_space_operations hfsplus_btree_aops;
23448-extern struct dentry_operations hfsplus_dentry_operations;
23449+extern const struct dentry_operations hfsplus_dentry_operations;
23450
23451 void hfsplus_inode_read_fork(struct inode *, struct hfsplus_fork_raw *);
23452 void hfsplus_inode_write_fork(struct inode *, struct hfsplus_fork_raw *);
23453diff -urNp linux-2.6.29.6/fs/hfsplus/inode.c linux-2.6.29.6/fs/hfsplus/inode.c
23454--- linux-2.6.29.6/fs/hfsplus/inode.c 2009-07-02 19:41:20.000000000 -0400
23455+++ linux-2.6.29.6/fs/hfsplus/inode.c 2009-07-23 18:40:27.470335769 -0400
23456@@ -137,7 +137,7 @@ const struct address_space_operations hf
23457 .writepages = hfsplus_writepages,
23458 };
23459
23460-struct dentry_operations hfsplus_dentry_operations = {
23461+const struct dentry_operations hfsplus_dentry_operations = {
23462 .d_hash = hfsplus_hash_dentry,
23463 .d_compare = hfsplus_compare_dentry,
23464 };
23465@@ -406,7 +406,7 @@ int hfsplus_cat_read_inode(struct inode 22789@@ -406,7 +406,7 @@ int hfsplus_cat_read_inode(struct inode
23466 struct hfsplus_cat_folder *folder = &entry.folder; 22790 struct hfsplus_cat_folder *folder = &entry.folder;
23467 22791
@@ -23498,45 +22822,9 @@ diff -urNp linux-2.6.29.6/fs/hfsplus/inode.c linux-2.6.29.6/fs/hfsplus/inode.c
23498 hfs_bnode_read(fd.bnode, &entry, fd.entryoffset, 22822 hfs_bnode_read(fd.bnode, &entry, fd.entryoffset,
23499 sizeof(struct hfsplus_cat_file)); 22823 sizeof(struct hfsplus_cat_file));
23500 hfsplus_inode_write_fork(inode, &file->data_fork); 22824 hfsplus_inode_write_fork(inode, &file->data_fork);
23501diff -urNp linux-2.6.29.6/fs/hostfs/hostfs_kern.c linux-2.6.29.6/fs/hostfs/hostfs_kern.c 22825diff -urNp linux-2.6.30.4/fs/jbd2/journal.c linux-2.6.30.4/fs/jbd2/journal.c
23502--- linux-2.6.29.6/fs/hostfs/hostfs_kern.c 2009-07-02 19:41:20.000000000 -0400 22826--- linux-2.6.30.4/fs/jbd2/journal.c 2009-07-24 17:47:51.000000000 -0400
23503+++ linux-2.6.29.6/fs/hostfs/hostfs_kern.c 2009-07-23 18:40:28.461464563 -0400 22827+++ linux-2.6.30.4/fs/jbd2/journal.c 2009-07-30 09:48:10.087743830 -0400
23504@@ -36,7 +36,7 @@ int hostfs_d_delete(struct dentry *dentr
23505 return 1;
23506 }
23507
23508-struct dentry_operations hostfs_dentry_ops = {
23509+const struct dentry_operations hostfs_dentry_ops = {
23510 .d_delete = hostfs_d_delete,
23511 };
23512
23513diff -urNp linux-2.6.29.6/fs/hpfs/dentry.c linux-2.6.29.6/fs/hpfs/dentry.c
23514--- linux-2.6.29.6/fs/hpfs/dentry.c 2009-07-02 19:41:20.000000000 -0400
23515+++ linux-2.6.29.6/fs/hpfs/dentry.c 2009-07-23 18:40:28.465659763 -0400
23516@@ -49,7 +49,7 @@ static int hpfs_compare_dentry(struct de
23517 return 0;
23518 }
23519
23520-static struct dentry_operations hpfs_dentry_operations = {
23521+static const struct dentry_operations hpfs_dentry_operations = {
23522 .d_hash = hpfs_hash_dentry,
23523 .d_compare = hpfs_compare_dentry,
23524 };
23525diff -urNp linux-2.6.29.6/fs/isofs/inode.c linux-2.6.29.6/fs/isofs/inode.c
23526--- linux-2.6.29.6/fs/isofs/inode.c 2009-07-02 19:41:20.000000000 -0400
23527+++ linux-2.6.29.6/fs/isofs/inode.c 2009-07-23 18:40:28.473700311 -0400
23528@@ -114,7 +114,7 @@ static const struct super_operations iso
23529 };
23530
23531
23532-static struct dentry_operations isofs_dentry_ops[] = {
23533+static const struct dentry_operations isofs_dentry_ops[] = {
23534 {
23535 .d_hash = isofs_hash,
23536 .d_compare = isofs_dentry_cmp,
23537diff -urNp linux-2.6.29.6/fs/jbd2/journal.c linux-2.6.29.6/fs/jbd2/journal.c
23538--- linux-2.6.29.6/fs/jbd2/journal.c 2009-07-02 19:41:20.000000000 -0400
23539+++ linux-2.6.29.6/fs/jbd2/journal.c 2009-07-23 18:40:28.491739581 -0400
23540@@ -762,7 +762,7 @@ static void jbd2_seq_history_stop(struct 22828@@ -762,7 +762,7 @@ static void jbd2_seq_history_stop(struct
23541 { 22829 {
23542 } 22830 }
@@ -23573,9 +22861,9 @@ diff -urNp linux-2.6.29.6/fs/jbd2/journal.c linux-2.6.29.6/fs/jbd2/journal.c
23573 .owner = THIS_MODULE, 22861 .owner = THIS_MODULE,
23574 .open = jbd2_seq_info_open, 22862 .open = jbd2_seq_info_open,
23575 .read = seq_read, 22863 .read = seq_read,
23576diff -urNp linux-2.6.29.6/fs/jffs2/debug.h linux-2.6.29.6/fs/jffs2/debug.h 22864diff -urNp linux-2.6.30.4/fs/jffs2/debug.h linux-2.6.30.4/fs/jffs2/debug.h
23577--- linux-2.6.29.6/fs/jffs2/debug.h 2009-07-02 19:41:20.000000000 -0400 22865--- linux-2.6.30.4/fs/jffs2/debug.h 2009-07-24 17:47:51.000000000 -0400
23578+++ linux-2.6.29.6/fs/jffs2/debug.h 2009-07-23 17:34:32.156720374 -0400 22866+++ linux-2.6.30.4/fs/jffs2/debug.h 2009-07-30 09:48:10.087743830 -0400
23579@@ -52,13 +52,13 @@ 22867@@ -52,13 +52,13 @@
23580 #if CONFIG_JFFS2_FS_DEBUG > 0 22868 #if CONFIG_JFFS2_FS_DEBUG > 0
23581 #define D1(x) x 22869 #define D1(x) x
@@ -23677,9 +22965,9 @@ diff -urNp linux-2.6.29.6/fs/jffs2/debug.h linux-2.6.29.6/fs/jffs2/debug.h
23677 #endif 22965 #endif
23678 22966
23679 /* "Sanity" checks */ 22967 /* "Sanity" checks */
23680diff -urNp linux-2.6.29.6/fs/jffs2/erase.c linux-2.6.29.6/fs/jffs2/erase.c 22968diff -urNp linux-2.6.30.4/fs/jffs2/erase.c linux-2.6.30.4/fs/jffs2/erase.c
23681--- linux-2.6.29.6/fs/jffs2/erase.c 2009-07-02 19:41:20.000000000 -0400 22969--- linux-2.6.30.4/fs/jffs2/erase.c 2009-07-24 17:47:51.000000000 -0400
23682+++ linux-2.6.29.6/fs/jffs2/erase.c 2009-07-23 17:34:32.157742760 -0400 22970+++ linux-2.6.30.4/fs/jffs2/erase.c 2009-07-30 09:48:10.087743830 -0400
23683@@ -432,7 +432,8 @@ static void jffs2_mark_erased_block(stru 22971@@ -432,7 +432,8 @@ static void jffs2_mark_erased_block(stru
23684 struct jffs2_unknown_node marker = { 22972 struct jffs2_unknown_node marker = {
23685 .magic = cpu_to_je16(JFFS2_MAGIC_BITMASK), 22973 .magic = cpu_to_je16(JFFS2_MAGIC_BITMASK),
@@ -23690,9 +22978,9 @@ diff -urNp linux-2.6.29.6/fs/jffs2/erase.c linux-2.6.29.6/fs/jffs2/erase.c
23690 }; 22978 };
23691 22979
23692 jffs2_prealloc_raw_node_refs(c, jeb, 1); 22980 jffs2_prealloc_raw_node_refs(c, jeb, 1);
23693diff -urNp linux-2.6.29.6/fs/jffs2/summary.h linux-2.6.29.6/fs/jffs2/summary.h 22981diff -urNp linux-2.6.30.4/fs/jffs2/summary.h linux-2.6.30.4/fs/jffs2/summary.h
23694--- linux-2.6.29.6/fs/jffs2/summary.h 2009-07-02 19:41:20.000000000 -0400 22982--- linux-2.6.30.4/fs/jffs2/summary.h 2009-07-24 17:47:51.000000000 -0400
23695+++ linux-2.6.29.6/fs/jffs2/summary.h 2009-07-23 17:34:32.157742760 -0400 22983+++ linux-2.6.30.4/fs/jffs2/summary.h 2009-07-30 09:48:10.088709552 -0400
23696@@ -194,18 +194,18 @@ int jffs2_sum_scan_sumnode(struct jffs2_ 22984@@ -194,18 +194,18 @@ int jffs2_sum_scan_sumnode(struct jffs2_
23697 22985
23698 #define jffs2_sum_active() (0) 22986 #define jffs2_sum_active() (0)
@@ -23721,9 +23009,9 @@ diff -urNp linux-2.6.29.6/fs/jffs2/summary.h linux-2.6.29.6/fs/jffs2/summary.h
23721 #define jffs2_sum_scan_sumnode(a,b,c,d,e) (0) 23009 #define jffs2_sum_scan_sumnode(a,b,c,d,e) (0)
23722 23010
23723 #endif /* CONFIG_JFFS2_SUMMARY */ 23011 #endif /* CONFIG_JFFS2_SUMMARY */
23724diff -urNp linux-2.6.29.6/fs/jffs2/wbuf.c linux-2.6.29.6/fs/jffs2/wbuf.c 23012diff -urNp linux-2.6.30.4/fs/jffs2/wbuf.c linux-2.6.30.4/fs/jffs2/wbuf.c
23725--- linux-2.6.29.6/fs/jffs2/wbuf.c 2009-07-02 19:41:20.000000000 -0400 23013--- linux-2.6.30.4/fs/jffs2/wbuf.c 2009-07-24 17:47:51.000000000 -0400
23726+++ linux-2.6.29.6/fs/jffs2/wbuf.c 2009-07-23 17:34:32.157742760 -0400 23014+++ linux-2.6.30.4/fs/jffs2/wbuf.c 2009-07-30 09:48:10.088709552 -0400
23727@@ -1012,7 +1012,8 @@ static const struct jffs2_unknown_node o 23015@@ -1012,7 +1012,8 @@ static const struct jffs2_unknown_node o
23728 { 23016 {
23729 .magic = constant_cpu_to_je16(JFFS2_MAGIC_BITMASK), 23017 .magic = constant_cpu_to_je16(JFFS2_MAGIC_BITMASK),
@@ -23734,9 +23022,9 @@ diff -urNp linux-2.6.29.6/fs/jffs2/wbuf.c linux-2.6.29.6/fs/jffs2/wbuf.c
23734 }; 23022 };
23735 23023
23736 /* 23024 /*
23737diff -urNp linux-2.6.29.6/fs/locks.c linux-2.6.29.6/fs/locks.c 23025diff -urNp linux-2.6.30.4/fs/locks.c linux-2.6.30.4/fs/locks.c
23738--- linux-2.6.29.6/fs/locks.c 2009-07-02 19:41:20.000000000 -0400 23026--- linux-2.6.30.4/fs/locks.c 2009-07-24 17:47:51.000000000 -0400
23739+++ linux-2.6.29.6/fs/locks.c 2009-07-23 17:34:32.158731356 -0400 23027+++ linux-2.6.30.4/fs/locks.c 2009-07-30 09:48:10.089659107 -0400
23740@@ -2006,16 +2006,16 @@ void locks_remove_flock(struct file *fil 23028@@ -2006,16 +2006,16 @@ void locks_remove_flock(struct file *fil
23741 return; 23029 return;
23742 23030
@@ -23758,10 +23046,10 @@ diff -urNp linux-2.6.29.6/fs/locks.c linux-2.6.29.6/fs/locks.c
23758 } 23046 }
23759 23047
23760 lock_kernel(); 23048 lock_kernel();
23761diff -urNp linux-2.6.29.6/fs/namei.c linux-2.6.29.6/fs/namei.c 23049diff -urNp linux-2.6.30.4/fs/namei.c linux-2.6.30.4/fs/namei.c
23762--- linux-2.6.29.6/fs/namei.c 2009-07-02 19:41:20.000000000 -0400 23050--- linux-2.6.30.4/fs/namei.c 2009-07-24 17:47:51.000000000 -0400
23763+++ linux-2.6.29.6/fs/namei.c 2009-07-23 17:34:32.158731356 -0400 23051+++ linux-2.6.30.4/fs/namei.c 2009-07-30 11:33:24.872476011 -0400
23764@@ -622,7 +622,7 @@ static __always_inline int __do_follow_l 23052@@ -624,7 +624,7 @@ static __always_inline int __do_follow_l
23765 cookie = dentry->d_inode->i_op->follow_link(dentry, nd); 23053 cookie = dentry->d_inode->i_op->follow_link(dentry, nd);
23766 error = PTR_ERR(cookie); 23054 error = PTR_ERR(cookie);
23767 if (!IS_ERR(cookie)) { 23055 if (!IS_ERR(cookie)) {
@@ -23770,7 +23058,7 @@ diff -urNp linux-2.6.29.6/fs/namei.c linux-2.6.29.6/fs/namei.c
23770 error = 0; 23058 error = 0;
23771 if (s) 23059 if (s)
23772 error = __vfs_follow_link(nd, s); 23060 error = __vfs_follow_link(nd, s);
23773@@ -653,6 +653,13 @@ static inline int do_follow_link(struct 23061@@ -655,6 +655,13 @@ static inline int do_follow_link(struct
23774 err = security_inode_follow_link(path->dentry, nd); 23062 err = security_inode_follow_link(path->dentry, nd);
23775 if (err) 23063 if (err)
23776 goto loop; 23064 goto loop;
@@ -23784,7 +23072,7 @@ diff -urNp linux-2.6.29.6/fs/namei.c linux-2.6.29.6/fs/namei.c
23784 current->link_count++; 23072 current->link_count++;
23785 current->total_link_count++; 23073 current->total_link_count++;
23786 nd->depth++; 23074 nd->depth++;
23787@@ -996,11 +1003,18 @@ return_reval: 23075@@ -1000,11 +1007,18 @@ return_reval:
23788 break; 23076 break;
23789 } 23077 }
23790 return_base: 23078 return_base:
@@ -23803,7 +23091,7 @@ diff -urNp linux-2.6.29.6/fs/namei.c linux-2.6.29.6/fs/namei.c
23803 path_put(&nd->path); 23091 path_put(&nd->path);
23804 return_err: 23092 return_err:
23805 return err; 23093 return err;
23806@@ -1571,12 +1585,19 @@ static int __open_namei_create(struct na 23094@@ -1580,12 +1594,19 @@ static int __open_namei_create(struct na
23807 int error; 23095 int error;
23808 struct dentry *dir = nd->path.dentry; 23096 struct dentry *dir = nd->path.dentry;
23809 23097
@@ -23813,7 +23101,7 @@ diff -urNp linux-2.6.29.6/fs/namei.c linux-2.6.29.6/fs/namei.c
23813+ } 23101+ }
23814+ 23102+
23815 if (!IS_POSIXACL(dir->d_inode)) 23103 if (!IS_POSIXACL(dir->d_inode))
23816 mode &= ~current->fs->umask; 23104 mode &= ~current_umask();
23817 error = security_path_mknod(&nd->path, path->dentry, mode, 0); 23105 error = security_path_mknod(&nd->path, path->dentry, mode, 0);
23818 if (error) 23106 if (error)
23819 goto out_unlock; 23107 goto out_unlock;
@@ -23823,7 +23111,7 @@ diff -urNp linux-2.6.29.6/fs/namei.c linux-2.6.29.6/fs/namei.c
23823 out_unlock: 23111 out_unlock:
23824 mutex_unlock(&dir->d_inode->i_mutex); 23112 mutex_unlock(&dir->d_inode->i_mutex);
23825 dput(nd->path.dentry); 23113 dput(nd->path.dentry);
23826@@ -1658,6 +1679,17 @@ struct file *do_filp_open(int dfd, const 23114@@ -1668,6 +1689,17 @@ struct file *do_filp_open(int dfd, const
23827 &nd, flag); 23115 &nd, flag);
23828 if (error) 23116 if (error)
23829 return ERR_PTR(error); 23117 return ERR_PTR(error);
@@ -23841,7 +23129,7 @@ diff -urNp linux-2.6.29.6/fs/namei.c linux-2.6.29.6/fs/namei.c
23841 goto ok; 23129 goto ok;
23842 } 23130 }
23843 23131
23844@@ -1730,6 +1762,20 @@ do_last: 23132@@ -1740,6 +1772,20 @@ do_last:
23845 /* 23133 /*
23846 * It already exists. 23134 * It already exists.
23847 */ 23135 */
@@ -23862,7 +23150,7 @@ diff -urNp linux-2.6.29.6/fs/namei.c linux-2.6.29.6/fs/namei.c
23862 mutex_unlock(&dir->d_inode->i_mutex); 23150 mutex_unlock(&dir->d_inode->i_mutex);
23863 audit_inode(pathname, path.dentry); 23151 audit_inode(pathname, path.dentry);
23864 23152
23865@@ -1815,6 +1861,13 @@ do_link: 23153@@ -1825,6 +1871,13 @@ do_link:
23866 error = security_inode_follow_link(path.dentry, &nd); 23154 error = security_inode_follow_link(path.dentry, &nd);
23867 if (error) 23155 if (error)
23868 goto exit_dput; 23156 goto exit_dput;
@@ -23876,7 +23164,7 @@ diff -urNp linux-2.6.29.6/fs/namei.c linux-2.6.29.6/fs/namei.c
23876 error = __do_follow_link(&path, &nd); 23164 error = __do_follow_link(&path, &nd);
23877 if (error) { 23165 if (error) {
23878 /* Does someone understand code flow here? Or it is only 23166 /* Does someone understand code flow here? Or it is only
23879@@ -1987,6 +2040,17 @@ SYSCALL_DEFINE4(mknodat, int, dfd, const 23167@@ -1997,6 +2050,17 @@ SYSCALL_DEFINE4(mknodat, int, dfd, const
23880 error = may_mknod(mode); 23168 error = may_mknod(mode);
23881 if (error) 23169 if (error)
23882 goto out_dput; 23170 goto out_dput;
@@ -23894,7 +23182,7 @@ diff -urNp linux-2.6.29.6/fs/namei.c linux-2.6.29.6/fs/namei.c
23894 error = mnt_want_write(nd.path.mnt); 23182 error = mnt_want_write(nd.path.mnt);
23895 if (error) 23183 if (error)
23896 goto out_dput; 23184 goto out_dput;
23897@@ -2007,6 +2071,9 @@ SYSCALL_DEFINE4(mknodat, int, dfd, const 23185@@ -2017,6 +2081,9 @@ SYSCALL_DEFINE4(mknodat, int, dfd, const
23898 } 23186 }
23899 out_drop_write: 23187 out_drop_write:
23900 mnt_drop_write(nd.path.mnt); 23188 mnt_drop_write(nd.path.mnt);
@@ -23904,7 +23192,7 @@ diff -urNp linux-2.6.29.6/fs/namei.c linux-2.6.29.6/fs/namei.c
23904 out_dput: 23192 out_dput:
23905 dput(dentry); 23193 dput(dentry);
23906 out_unlock: 23194 out_unlock:
23907@@ -2060,6 +2127,11 @@ SYSCALL_DEFINE3(mkdirat, int, dfd, const 23195@@ -2070,6 +2137,11 @@ SYSCALL_DEFINE3(mkdirat, int, dfd, const
23908 if (IS_ERR(dentry)) 23196 if (IS_ERR(dentry))
23909 goto out_unlock; 23197 goto out_unlock;
23910 23198
@@ -23914,9 +23202,9 @@ diff -urNp linux-2.6.29.6/fs/namei.c linux-2.6.29.6/fs/namei.c
23914+ } 23202+ }
23915+ 23203+
23916 if (!IS_POSIXACL(nd.path.dentry->d_inode)) 23204 if (!IS_POSIXACL(nd.path.dentry->d_inode))
23917 mode &= ~current->fs->umask; 23205 mode &= ~current_umask();
23918 error = mnt_want_write(nd.path.mnt); 23206 error = mnt_want_write(nd.path.mnt);
23919@@ -2071,6 +2143,10 @@ SYSCALL_DEFINE3(mkdirat, int, dfd, const 23207@@ -2081,6 +2153,10 @@ SYSCALL_DEFINE3(mkdirat, int, dfd, const
23920 error = vfs_mkdir(nd.path.dentry->d_inode, dentry, mode); 23208 error = vfs_mkdir(nd.path.dentry->d_inode, dentry, mode);
23921 out_drop_write: 23209 out_drop_write:
23922 mnt_drop_write(nd.path.mnt); 23210 mnt_drop_write(nd.path.mnt);
@@ -23927,7 +23215,7 @@ diff -urNp linux-2.6.29.6/fs/namei.c linux-2.6.29.6/fs/namei.c
23927 out_dput: 23215 out_dput:
23928 dput(dentry); 23216 dput(dentry);
23929 out_unlock: 23217 out_unlock:
23930@@ -2152,6 +2228,8 @@ static long do_rmdir(int dfd, const char 23218@@ -2162,6 +2238,8 @@ static long do_rmdir(int dfd, const char
23931 char * name; 23219 char * name;
23932 struct dentry *dentry; 23220 struct dentry *dentry;
23933 struct nameidata nd; 23221 struct nameidata nd;
@@ -23936,7 +23224,7 @@ diff -urNp linux-2.6.29.6/fs/namei.c linux-2.6.29.6/fs/namei.c
23936 23224
23937 error = user_path_parent(dfd, pathname, &nd, &name); 23225 error = user_path_parent(dfd, pathname, &nd, &name);
23938 if (error) 23226 if (error)
23939@@ -2176,6 +2254,19 @@ static long do_rmdir(int dfd, const char 23227@@ -2186,6 +2264,19 @@ static long do_rmdir(int dfd, const char
23940 error = PTR_ERR(dentry); 23228 error = PTR_ERR(dentry);
23941 if (IS_ERR(dentry)) 23229 if (IS_ERR(dentry))
23942 goto exit2; 23230 goto exit2;
@@ -23956,7 +23244,7 @@ diff -urNp linux-2.6.29.6/fs/namei.c linux-2.6.29.6/fs/namei.c
23956 error = mnt_want_write(nd.path.mnt); 23244 error = mnt_want_write(nd.path.mnt);
23957 if (error) 23245 if (error)
23958 goto exit3; 23246 goto exit3;
23959@@ -2183,6 +2274,8 @@ static long do_rmdir(int dfd, const char 23247@@ -2193,6 +2284,8 @@ static long do_rmdir(int dfd, const char
23960 if (error) 23248 if (error)
23961 goto exit4; 23249 goto exit4;
23962 error = vfs_rmdir(nd.path.dentry->d_inode, dentry); 23250 error = vfs_rmdir(nd.path.dentry->d_inode, dentry);
@@ -23965,7 +23253,7 @@ diff -urNp linux-2.6.29.6/fs/namei.c linux-2.6.29.6/fs/namei.c
23965 exit4: 23253 exit4:
23966 mnt_drop_write(nd.path.mnt); 23254 mnt_drop_write(nd.path.mnt);
23967 exit3: 23255 exit3:
23968@@ -2244,6 +2337,8 @@ static long do_unlinkat(int dfd, const c 23256@@ -2254,6 +2347,8 @@ static long do_unlinkat(int dfd, const c
23969 struct dentry *dentry; 23257 struct dentry *dentry;
23970 struct nameidata nd; 23258 struct nameidata nd;
23971 struct inode *inode = NULL; 23259 struct inode *inode = NULL;
@@ -23974,7 +23262,7 @@ diff -urNp linux-2.6.29.6/fs/namei.c linux-2.6.29.6/fs/namei.c
23974 23262
23975 error = user_path_parent(dfd, pathname, &nd, &name); 23263 error = user_path_parent(dfd, pathname, &nd, &name);
23976 if (error) 23264 if (error)
23977@@ -2263,8 +2358,19 @@ static long do_unlinkat(int dfd, const c 23265@@ -2273,8 +2368,19 @@ static long do_unlinkat(int dfd, const c
23978 if (nd.last.name[nd.last.len]) 23266 if (nd.last.name[nd.last.len])
23979 goto slashes; 23267 goto slashes;
23980 inode = dentry->d_inode; 23268 inode = dentry->d_inode;
@@ -23995,7 +23283,7 @@ diff -urNp linux-2.6.29.6/fs/namei.c linux-2.6.29.6/fs/namei.c
23995 error = mnt_want_write(nd.path.mnt); 23283 error = mnt_want_write(nd.path.mnt);
23996 if (error) 23284 if (error)
23997 goto exit2; 23285 goto exit2;
23998@@ -2272,6 +2378,8 @@ static long do_unlinkat(int dfd, const c 23286@@ -2282,6 +2388,8 @@ static long do_unlinkat(int dfd, const c
23999 if (error) 23287 if (error)
24000 goto exit3; 23288 goto exit3;
24001 error = vfs_unlink(nd.path.dentry->d_inode, dentry); 23289 error = vfs_unlink(nd.path.dentry->d_inode, dentry);
@@ -24004,7 +23292,7 @@ diff -urNp linux-2.6.29.6/fs/namei.c linux-2.6.29.6/fs/namei.c
24004 exit3: 23292 exit3:
24005 mnt_drop_write(nd.path.mnt); 23293 mnt_drop_write(nd.path.mnt);
24006 exit2: 23294 exit2:
24007@@ -2350,6 +2458,11 @@ SYSCALL_DEFINE3(symlinkat, const char __ 23295@@ -2360,6 +2468,11 @@ SYSCALL_DEFINE3(symlinkat, const char __
24008 if (IS_ERR(dentry)) 23296 if (IS_ERR(dentry))
24009 goto out_unlock; 23297 goto out_unlock;
24010 23298
@@ -24016,7 +23304,7 @@ diff -urNp linux-2.6.29.6/fs/namei.c linux-2.6.29.6/fs/namei.c
24016 error = mnt_want_write(nd.path.mnt); 23304 error = mnt_want_write(nd.path.mnt);
24017 if (error) 23305 if (error)
24018 goto out_dput; 23306 goto out_dput;
24019@@ -2357,6 +2470,8 @@ SYSCALL_DEFINE3(symlinkat, const char __ 23307@@ -2367,6 +2480,8 @@ SYSCALL_DEFINE3(symlinkat, const char __
24020 if (error) 23308 if (error)
24021 goto out_drop_write; 23309 goto out_drop_write;
24022 error = vfs_symlink(nd.path.dentry->d_inode, dentry, from); 23310 error = vfs_symlink(nd.path.dentry->d_inode, dentry, from);
@@ -24025,7 +23313,7 @@ diff -urNp linux-2.6.29.6/fs/namei.c linux-2.6.29.6/fs/namei.c
24025 out_drop_write: 23313 out_drop_write:
24026 mnt_drop_write(nd.path.mnt); 23314 mnt_drop_write(nd.path.mnt);
24027 out_dput: 23315 out_dput:
24028@@ -2450,6 +2565,20 @@ SYSCALL_DEFINE5(linkat, int, olddfd, con 23316@@ -2460,6 +2575,20 @@ SYSCALL_DEFINE5(linkat, int, olddfd, con
24029 error = PTR_ERR(new_dentry); 23317 error = PTR_ERR(new_dentry);
24030 if (IS_ERR(new_dentry)) 23318 if (IS_ERR(new_dentry))
24031 goto out_unlock; 23319 goto out_unlock;
@@ -24046,7 +23334,7 @@ diff -urNp linux-2.6.29.6/fs/namei.c linux-2.6.29.6/fs/namei.c
24046 error = mnt_want_write(nd.path.mnt); 23334 error = mnt_want_write(nd.path.mnt);
24047 if (error) 23335 if (error)
24048 goto out_dput; 23336 goto out_dput;
24049@@ -2457,6 +2586,8 @@ SYSCALL_DEFINE5(linkat, int, olddfd, con 23337@@ -2467,6 +2596,8 @@ SYSCALL_DEFINE5(linkat, int, olddfd, con
24050 if (error) 23338 if (error)
24051 goto out_drop_write; 23339 goto out_drop_write;
24052 error = vfs_link(old_path.dentry, nd.path.dentry->d_inode, new_dentry); 23340 error = vfs_link(old_path.dentry, nd.path.dentry->d_inode, new_dentry);
@@ -24055,7 +23343,7 @@ diff -urNp linux-2.6.29.6/fs/namei.c linux-2.6.29.6/fs/namei.c
24055 out_drop_write: 23343 out_drop_write:
24056 mnt_drop_write(nd.path.mnt); 23344 mnt_drop_write(nd.path.mnt);
24057 out_dput: 23345 out_dput:
24058@@ -2690,6 +2821,12 @@ SYSCALL_DEFINE4(renameat, int, olddfd, c 23346@@ -2700,6 +2831,12 @@ SYSCALL_DEFINE4(renameat, int, olddfd, c
24059 if (new_dentry == trap) 23347 if (new_dentry == trap)
24060 goto exit5; 23348 goto exit5;
24061 23349
@@ -24068,7 +23356,7 @@ diff -urNp linux-2.6.29.6/fs/namei.c linux-2.6.29.6/fs/namei.c
24068 error = mnt_want_write(oldnd.path.mnt); 23356 error = mnt_want_write(oldnd.path.mnt);
24069 if (error) 23357 if (error)
24070 goto exit5; 23358 goto exit5;
24071@@ -2699,6 +2836,9 @@ SYSCALL_DEFINE4(renameat, int, olddfd, c 23359@@ -2709,6 +2846,9 @@ SYSCALL_DEFINE4(renameat, int, olddfd, c
24072 goto exit6; 23360 goto exit6;
24073 error = vfs_rename(old_dir->d_inode, old_dentry, 23361 error = vfs_rename(old_dir->d_inode, old_dentry,
24074 new_dir->d_inode, new_dentry); 23362 new_dir->d_inode, new_dentry);
@@ -24078,10 +23366,10 @@ diff -urNp linux-2.6.29.6/fs/namei.c linux-2.6.29.6/fs/namei.c
24078 exit6: 23366 exit6:
24079 mnt_drop_write(oldnd.path.mnt); 23367 mnt_drop_write(oldnd.path.mnt);
24080 exit5: 23368 exit5:
24081diff -urNp linux-2.6.29.6/fs/namespace.c linux-2.6.29.6/fs/namespace.c 23369diff -urNp linux-2.6.30.4/fs/namespace.c linux-2.6.30.4/fs/namespace.c
24082--- linux-2.6.29.6/fs/namespace.c 2009-07-02 19:41:20.000000000 -0400 23370--- linux-2.6.30.4/fs/namespace.c 2009-07-24 17:47:51.000000000 -0400
24083+++ linux-2.6.29.6/fs/namespace.c 2009-07-23 17:34:32.159721739 -0400 23371+++ linux-2.6.30.4/fs/namespace.c 2009-07-30 11:10:49.247492786 -0400
24084@@ -1096,6 +1096,8 @@ static int do_umount(struct vfsmount *mn 23372@@ -1110,6 +1110,8 @@ static int do_umount(struct vfsmount *mn
24085 lock_kernel(); 23373 lock_kernel();
24086 retval = do_remount_sb(sb, MS_RDONLY, NULL, 0); 23374 retval = do_remount_sb(sb, MS_RDONLY, NULL, 0);
24087 unlock_kernel(); 23375 unlock_kernel();
@@ -24090,7 +23378,7 @@ diff -urNp linux-2.6.29.6/fs/namespace.c linux-2.6.29.6/fs/namespace.c
24090 } 23378 }
24091 up_write(&sb->s_umount); 23379 up_write(&sb->s_umount);
24092 return retval; 23380 return retval;
24093@@ -1119,6 +1121,9 @@ static int do_umount(struct vfsmount *mn 23381@@ -1133,6 +1135,9 @@ static int do_umount(struct vfsmount *mn
24094 security_sb_umount_busy(mnt); 23382 security_sb_umount_busy(mnt);
24095 up_write(&namespace_sem); 23383 up_write(&namespace_sem);
24096 release_mounts(&umount_list); 23384 release_mounts(&umount_list);
@@ -24100,7 +23388,7 @@ diff -urNp linux-2.6.29.6/fs/namespace.c linux-2.6.29.6/fs/namespace.c
24100 return retval; 23388 return retval;
24101 } 23389 }
24102 23390
24103@@ -1948,6 +1953,11 @@ long do_mount(char *dev_name, char *dir_ 23391@@ -1967,6 +1972,11 @@ long do_mount(char *dev_name, char *dir_
24104 if (retval) 23392 if (retval)
24105 goto dput_out; 23393 goto dput_out;
24106 23394
@@ -24112,7 +23400,7 @@ diff -urNp linux-2.6.29.6/fs/namespace.c linux-2.6.29.6/fs/namespace.c
24112 if (flags & MS_REMOUNT) 23400 if (flags & MS_REMOUNT)
24113 retval = do_remount(&path, flags & ~MS_REMOUNT, mnt_flags, 23401 retval = do_remount(&path, flags & ~MS_REMOUNT, mnt_flags,
24114 data_page); 23402 data_page);
24115@@ -1962,6 +1972,9 @@ long do_mount(char *dev_name, char *dir_ 23403@@ -1981,6 +1991,9 @@ long do_mount(char *dev_name, char *dir_
24116 dev_name, data_page); 23404 dev_name, data_page);
24117 dput_out: 23405 dput_out:
24118 path_put(&path); 23406 path_put(&path);
@@ -24122,7 +23410,7 @@ diff -urNp linux-2.6.29.6/fs/namespace.c linux-2.6.29.6/fs/namespace.c
24122 return retval; 23410 return retval;
24123 } 23411 }
24124 23412
24125@@ -2073,6 +2086,9 @@ SYSCALL_DEFINE5(mount, char __user *, de 23413@@ -2092,6 +2105,9 @@ SYSCALL_DEFINE5(mount, char __user *, de
24126 if (retval < 0) 23414 if (retval < 0)
24127 goto out3; 23415 goto out3;
24128 23416
@@ -24132,10 +23420,10 @@ diff -urNp linux-2.6.29.6/fs/namespace.c linux-2.6.29.6/fs/namespace.c
24132 lock_kernel(); 23420 lock_kernel();
24133 retval = do_mount((char *)dev_page, dir_page, (char *)type_page, 23421 retval = do_mount((char *)dev_page, dir_page, (char *)type_page,
24134 flags, (void *)data_page); 23422 flags, (void *)data_page);
24135diff -urNp linux-2.6.29.6/fs/nfs/client.c linux-2.6.29.6/fs/nfs/client.c 23423diff -urNp linux-2.6.30.4/fs/nfs/client.c linux-2.6.30.4/fs/nfs/client.c
24136--- linux-2.6.29.6/fs/nfs/client.c 2009-07-02 19:41:20.000000000 -0400 23424--- linux-2.6.30.4/fs/nfs/client.c 2009-07-24 17:47:51.000000000 -0400
24137+++ linux-2.6.29.6/fs/nfs/client.c 2009-07-23 18:40:28.513673349 -0400 23425+++ linux-2.6.30.4/fs/nfs/client.c 2009-07-30 09:48:10.090670547 -0400
24138@@ -1409,7 +1409,7 @@ static void *nfs_server_list_next(struct 23426@@ -1404,7 +1404,7 @@ static void *nfs_server_list_next(struct
24139 static void nfs_server_list_stop(struct seq_file *p, void *v); 23427 static void nfs_server_list_stop(struct seq_file *p, void *v);
24140 static int nfs_server_list_show(struct seq_file *m, void *v); 23428 static int nfs_server_list_show(struct seq_file *m, void *v);
24141 23429
@@ -24144,7 +23432,7 @@ diff -urNp linux-2.6.29.6/fs/nfs/client.c linux-2.6.29.6/fs/nfs/client.c
24144 .start = nfs_server_list_start, 23432 .start = nfs_server_list_start,
24145 .next = nfs_server_list_next, 23433 .next = nfs_server_list_next,
24146 .stop = nfs_server_list_stop, 23434 .stop = nfs_server_list_stop,
24147@@ -1430,7 +1430,7 @@ static void *nfs_volume_list_next(struct 23435@@ -1425,7 +1425,7 @@ static void *nfs_volume_list_next(struct
24148 static void nfs_volume_list_stop(struct seq_file *p, void *v); 23436 static void nfs_volume_list_stop(struct seq_file *p, void *v);
24149 static int nfs_volume_list_show(struct seq_file *m, void *v); 23437 static int nfs_volume_list_show(struct seq_file *m, void *v);
24150 23438
@@ -24153,31 +23441,10 @@ diff -urNp linux-2.6.29.6/fs/nfs/client.c linux-2.6.29.6/fs/nfs/client.c
24153 .start = nfs_volume_list_start, 23441 .start = nfs_volume_list_start,
24154 .next = nfs_volume_list_next, 23442 .next = nfs_volume_list_next,
24155 .stop = nfs_volume_list_stop, 23443 .stop = nfs_volume_list_stop,
24156diff -urNp linux-2.6.29.6/fs/nfs/dir.c linux-2.6.29.6/fs/nfs/dir.c 23444diff -urNp linux-2.6.30.4/fs/nfs/file.c linux-2.6.30.4/fs/nfs/file.c
24157--- linux-2.6.29.6/fs/nfs/dir.c 2009-07-02 19:41:20.000000000 -0400 23445--- linux-2.6.30.4/fs/nfs/file.c 2009-07-24 17:47:51.000000000 -0400
24158+++ linux-2.6.29.6/fs/nfs/dir.c 2009-07-23 18:40:28.514291879 -0400 23446+++ linux-2.6.30.4/fs/nfs/file.c 2009-07-30 09:48:10.090670547 -0400
24159@@ -899,7 +899,7 @@ static void nfs_dentry_iput(struct dentr 23447@@ -57,7 +57,7 @@ static int nfs_lock(struct file *filp, i
24160 iput(inode);
24161 }
24162
24163-struct dentry_operations nfs_dentry_operations = {
24164+const struct dentry_operations nfs_dentry_operations = {
24165 .d_revalidate = nfs_lookup_revalidate,
24166 .d_delete = nfs_dentry_delete,
24167 .d_iput = nfs_dentry_iput,
24168@@ -967,7 +967,7 @@ out:
24169 #ifdef CONFIG_NFS_V4
24170 static int nfs_open_revalidate(struct dentry *, struct nameidata *);
24171
24172-struct dentry_operations nfs4_dentry_operations = {
24173+const struct dentry_operations nfs4_dentry_operations = {
24174 .d_revalidate = nfs_open_revalidate,
24175 .d_delete = nfs_dentry_delete,
24176 .d_iput = nfs_dentry_iput,
24177diff -urNp linux-2.6.29.6/fs/nfs/file.c linux-2.6.29.6/fs/nfs/file.c
24178--- linux-2.6.29.6/fs/nfs/file.c 2009-07-02 19:41:20.000000000 -0400
24179+++ linux-2.6.29.6/fs/nfs/file.c 2009-07-23 18:40:28.515401169 -0400
24180@@ -56,7 +56,7 @@ static int nfs_lock(struct file *filp, i
24181 static int nfs_flock(struct file *filp, int cmd, struct file_lock *fl); 23448 static int nfs_flock(struct file *filp, int cmd, struct file_lock *fl);
24182 static int nfs_setlease(struct file *file, long arg, struct file_lock **fl); 23449 static int nfs_setlease(struct file *file, long arg, struct file_lock **fl);
24183 23450
@@ -24186,7 +23453,7 @@ diff -urNp linux-2.6.29.6/fs/nfs/file.c linux-2.6.29.6/fs/nfs/file.c
24186 23453
24187 const struct file_operations nfs_file_operations = { 23454 const struct file_operations nfs_file_operations = {
24188 .llseek = nfs_file_llseek, 23455 .llseek = nfs_file_llseek,
24189@@ -487,7 +487,7 @@ out_unlock: 23456@@ -523,7 +523,7 @@ out_unlock:
24190 return VM_FAULT_SIGBUS; 23457 return VM_FAULT_SIGBUS;
24191 } 23458 }
24192 23459
@@ -24195,22 +23462,10 @@ diff -urNp linux-2.6.29.6/fs/nfs/file.c linux-2.6.29.6/fs/nfs/file.c
24195 .fault = filemap_fault, 23462 .fault = filemap_fault,
24196 .page_mkwrite = nfs_vm_page_mkwrite, 23463 .page_mkwrite = nfs_vm_page_mkwrite,
24197 }; 23464 };
24198diff -urNp linux-2.6.29.6/fs/nfs/nfs4_fs.h linux-2.6.29.6/fs/nfs/nfs4_fs.h 23465diff -urNp linux-2.6.30.4/fs/nfs/nfs4proc.c linux-2.6.30.4/fs/nfs/nfs4proc.c
24199--- linux-2.6.29.6/fs/nfs/nfs4_fs.h 2009-07-02 19:41:20.000000000 -0400 23466--- linux-2.6.30.4/fs/nfs/nfs4proc.c 2009-07-24 17:47:51.000000000 -0400
24200+++ linux-2.6.29.6/fs/nfs/nfs4_fs.h 2009-07-23 18:40:28.516258510 -0400 23467+++ linux-2.6.30.4/fs/nfs/nfs4proc.c 2009-07-30 09:48:10.091839047 -0400
24201@@ -179,7 +179,7 @@ struct nfs4_state_recovery_ops { 23468@@ -755,7 +755,7 @@ static int _nfs4_do_open_reclaim(struct
24202 int (*recover_lock)(struct nfs4_state *, struct file_lock *);
24203 };
24204
24205-extern struct dentry_operations nfs4_dentry_operations;
24206+extern const struct dentry_operations nfs4_dentry_operations;
24207 extern const struct inode_operations nfs4_dir_inode_operations;
24208
24209 /* inode.c */
24210diff -urNp linux-2.6.29.6/fs/nfs/nfs4proc.c linux-2.6.29.6/fs/nfs/nfs4proc.c
24211--- linux-2.6.29.6/fs/nfs/nfs4proc.c 2009-07-02 19:41:20.000000000 -0400
24212+++ linux-2.6.29.6/fs/nfs/nfs4proc.c 2009-07-23 17:34:32.161096484 -0400
24213@@ -763,7 +763,7 @@ static int _nfs4_do_open_reclaim(struct
24214 static int nfs4_do_open_reclaim(struct nfs_open_context *ctx, struct nfs4_state *state) 23469 static int nfs4_do_open_reclaim(struct nfs_open_context *ctx, struct nfs4_state *state)
24215 { 23470 {
24216 struct nfs_server *server = NFS_SERVER(state->inode); 23471 struct nfs_server *server = NFS_SERVER(state->inode);
@@ -24219,7 +23474,7 @@ diff -urNp linux-2.6.29.6/fs/nfs/nfs4proc.c linux-2.6.29.6/fs/nfs/nfs4proc.c
24219 int err; 23474 int err;
24220 do { 23475 do {
24221 err = _nfs4_do_open_reclaim(ctx, state); 23476 err = _nfs4_do_open_reclaim(ctx, state);
24222@@ -805,7 +805,7 @@ static int _nfs4_open_delegation_recall( 23477@@ -797,7 +797,7 @@ static int _nfs4_open_delegation_recall(
24223 23478
24224 int nfs4_open_delegation_recall(struct nfs_open_context *ctx, struct nfs4_state *state, const nfs4_stateid *stateid) 23479 int nfs4_open_delegation_recall(struct nfs_open_context *ctx, struct nfs4_state *state, const nfs4_stateid *stateid)
24225 { 23480 {
@@ -24228,7 +23483,7 @@ diff -urNp linux-2.6.29.6/fs/nfs/nfs4proc.c linux-2.6.29.6/fs/nfs/nfs4proc.c
24228 struct nfs_server *server = NFS_SERVER(state->inode); 23483 struct nfs_server *server = NFS_SERVER(state->inode);
24229 int err; 23484 int err;
24230 do { 23485 do {
24231@@ -1099,7 +1099,7 @@ static int _nfs4_open_expired(struct nfs 23486@@ -1091,7 +1091,7 @@ static int _nfs4_open_expired(struct nfs
24232 static inline int nfs4_do_open_expired(struct nfs_open_context *ctx, struct nfs4_state *state) 23487 static inline int nfs4_do_open_expired(struct nfs_open_context *ctx, struct nfs4_state *state)
24233 { 23488 {
24234 struct nfs_server *server = NFS_SERVER(state->inode); 23489 struct nfs_server *server = NFS_SERVER(state->inode);
@@ -24237,7 +23492,7 @@ diff -urNp linux-2.6.29.6/fs/nfs/nfs4proc.c linux-2.6.29.6/fs/nfs/nfs4proc.c
24237 int err; 23492 int err;
24238 23493
24239 do { 23494 do {
24240@@ -1197,7 +1197,7 @@ out_err: 23495@@ -1189,7 +1189,7 @@ out_err:
24241 23496
24242 static struct nfs4_state *nfs4_do_open(struct inode *dir, struct path *path, fmode_t fmode, int flags, struct iattr *sattr, struct rpc_cred *cred) 23497 static struct nfs4_state *nfs4_do_open(struct inode *dir, struct path *path, fmode_t fmode, int flags, struct iattr *sattr, struct rpc_cred *cred)
24243 { 23498 {
@@ -24246,7 +23501,7 @@ diff -urNp linux-2.6.29.6/fs/nfs/nfs4proc.c linux-2.6.29.6/fs/nfs/nfs4proc.c
24246 struct nfs4_state *res; 23501 struct nfs4_state *res;
24247 int status; 23502 int status;
24248 23503
24249@@ -1288,7 +1288,7 @@ static int nfs4_do_setattr(struct inode 23504@@ -1280,7 +1280,7 @@ static int nfs4_do_setattr(struct inode
24250 struct nfs4_state *state) 23505 struct nfs4_state *state)
24251 { 23506 {
24252 struct nfs_server *server = NFS_SERVER(inode); 23507 struct nfs_server *server = NFS_SERVER(inode);
@@ -24255,7 +23510,7 @@ diff -urNp linux-2.6.29.6/fs/nfs/nfs4proc.c linux-2.6.29.6/fs/nfs/nfs4proc.c
24255 int err; 23510 int err;
24256 do { 23511 do {
24257 err = nfs4_handle_exception(server, 23512 err = nfs4_handle_exception(server,
24258@@ -1607,7 +1607,7 @@ static int _nfs4_server_capabilities(str 23513@@ -1611,7 +1611,7 @@ static int _nfs4_server_capabilities(str
24259 23514
24260 int nfs4_server_capabilities(struct nfs_server *server, struct nfs_fh *fhandle) 23515 int nfs4_server_capabilities(struct nfs_server *server, struct nfs_fh *fhandle)
24261 { 23516 {
@@ -24264,7 +23519,7 @@ diff -urNp linux-2.6.29.6/fs/nfs/nfs4proc.c linux-2.6.29.6/fs/nfs/nfs4proc.c
24264 int err; 23519 int err;
24265 do { 23520 do {
24266 err = nfs4_handle_exception(server, 23521 err = nfs4_handle_exception(server,
24267@@ -1640,7 +1640,7 @@ static int _nfs4_lookup_root(struct nfs_ 23522@@ -1644,7 +1644,7 @@ static int _nfs4_lookup_root(struct nfs_
24268 static int nfs4_lookup_root(struct nfs_server *server, struct nfs_fh *fhandle, 23523 static int nfs4_lookup_root(struct nfs_server *server, struct nfs_fh *fhandle,
24269 struct nfs_fsinfo *info) 23524 struct nfs_fsinfo *info)
24270 { 23525 {
@@ -24273,7 +23528,7 @@ diff -urNp linux-2.6.29.6/fs/nfs/nfs4proc.c linux-2.6.29.6/fs/nfs/nfs4proc.c
24273 int err; 23528 int err;
24274 do { 23529 do {
24275 err = nfs4_handle_exception(server, 23530 err = nfs4_handle_exception(server,
24276@@ -1729,7 +1729,7 @@ static int _nfs4_proc_getattr(struct nfs 23531@@ -1733,7 +1733,7 @@ static int _nfs4_proc_getattr(struct nfs
24277 23532
24278 static int nfs4_proc_getattr(struct nfs_server *server, struct nfs_fh *fhandle, struct nfs_fattr *fattr) 23533 static int nfs4_proc_getattr(struct nfs_server *server, struct nfs_fh *fhandle, struct nfs_fattr *fattr)
24279 { 23534 {
@@ -24282,7 +23537,7 @@ diff -urNp linux-2.6.29.6/fs/nfs/nfs4proc.c linux-2.6.29.6/fs/nfs/nfs4proc.c
24282 int err; 23537 int err;
24283 do { 23538 do {
24284 err = nfs4_handle_exception(server, 23539 err = nfs4_handle_exception(server,
24285@@ -1817,7 +1817,7 @@ static int nfs4_proc_lookupfh(struct nfs 23540@@ -1821,7 +1821,7 @@ static int nfs4_proc_lookupfh(struct nfs
24286 struct qstr *name, struct nfs_fh *fhandle, 23541 struct qstr *name, struct nfs_fh *fhandle,
24287 struct nfs_fattr *fattr) 23542 struct nfs_fattr *fattr)
24288 { 23543 {
@@ -24291,7 +23546,7 @@ diff -urNp linux-2.6.29.6/fs/nfs/nfs4proc.c linux-2.6.29.6/fs/nfs/nfs4proc.c
24291 int err; 23546 int err;
24292 do { 23547 do {
24293 err = _nfs4_proc_lookupfh(server, dirfh, name, fhandle, fattr); 23548 err = _nfs4_proc_lookupfh(server, dirfh, name, fhandle, fattr);
24294@@ -1846,7 +1846,7 @@ static int _nfs4_proc_lookup(struct inod 23549@@ -1850,7 +1850,7 @@ static int _nfs4_proc_lookup(struct inod
24295 23550
24296 static int nfs4_proc_lookup(struct inode *dir, struct qstr *name, struct nfs_fh *fhandle, struct nfs_fattr *fattr) 23551 static int nfs4_proc_lookup(struct inode *dir, struct qstr *name, struct nfs_fh *fhandle, struct nfs_fattr *fattr)
24297 { 23552 {
@@ -24300,7 +23555,7 @@ diff -urNp linux-2.6.29.6/fs/nfs/nfs4proc.c linux-2.6.29.6/fs/nfs/nfs4proc.c
24300 int err; 23555 int err;
24301 do { 23556 do {
24302 err = nfs4_handle_exception(NFS_SERVER(dir), 23557 err = nfs4_handle_exception(NFS_SERVER(dir),
24303@@ -1910,7 +1910,7 @@ static int _nfs4_proc_access(struct inod 23558@@ -1914,7 +1914,7 @@ static int _nfs4_proc_access(struct inod
24304 23559
24305 static int nfs4_proc_access(struct inode *inode, struct nfs_access_entry *entry) 23560 static int nfs4_proc_access(struct inode *inode, struct nfs_access_entry *entry)
24306 { 23561 {
@@ -24309,7 +23564,7 @@ diff -urNp linux-2.6.29.6/fs/nfs/nfs4proc.c linux-2.6.29.6/fs/nfs/nfs4proc.c
24309 int err; 23564 int err;
24310 do { 23565 do {
24311 err = nfs4_handle_exception(NFS_SERVER(inode), 23566 err = nfs4_handle_exception(NFS_SERVER(inode),
24312@@ -1965,7 +1965,7 @@ static int _nfs4_proc_readlink(struct in 23567@@ -1969,7 +1969,7 @@ static int _nfs4_proc_readlink(struct in
24313 static int nfs4_proc_readlink(struct inode *inode, struct page *page, 23568 static int nfs4_proc_readlink(struct inode *inode, struct page *page,
24314 unsigned int pgbase, unsigned int pglen) 23569 unsigned int pgbase, unsigned int pglen)
24315 { 23570 {
@@ -24318,7 +23573,7 @@ diff -urNp linux-2.6.29.6/fs/nfs/nfs4proc.c linux-2.6.29.6/fs/nfs/nfs4proc.c
24318 int err; 23573 int err;
24319 do { 23574 do {
24320 err = nfs4_handle_exception(NFS_SERVER(inode), 23575 err = nfs4_handle_exception(NFS_SERVER(inode),
24321@@ -2063,7 +2063,7 @@ static int _nfs4_proc_remove(struct inod 23576@@ -2067,7 +2067,7 @@ static int _nfs4_proc_remove(struct inod
24322 23577
24323 static int nfs4_proc_remove(struct inode *dir, struct qstr *name) 23578 static int nfs4_proc_remove(struct inode *dir, struct qstr *name)
24324 { 23579 {
@@ -24327,7 +23582,7 @@ diff -urNp linux-2.6.29.6/fs/nfs/nfs4proc.c linux-2.6.29.6/fs/nfs/nfs4proc.c
24327 int err; 23582 int err;
24328 do { 23583 do {
24329 err = nfs4_handle_exception(NFS_SERVER(dir), 23584 err = nfs4_handle_exception(NFS_SERVER(dir),
24330@@ -2135,7 +2135,7 @@ static int _nfs4_proc_rename(struct inod 23585@@ -2139,7 +2139,7 @@ static int _nfs4_proc_rename(struct inod
24331 static int nfs4_proc_rename(struct inode *old_dir, struct qstr *old_name, 23586 static int nfs4_proc_rename(struct inode *old_dir, struct qstr *old_name,
24332 struct inode *new_dir, struct qstr *new_name) 23587 struct inode *new_dir, struct qstr *new_name)
24333 { 23588 {
@@ -24336,7 +23591,7 @@ diff -urNp linux-2.6.29.6/fs/nfs/nfs4proc.c linux-2.6.29.6/fs/nfs/nfs4proc.c
24336 int err; 23591 int err;
24337 do { 23592 do {
24338 err = nfs4_handle_exception(NFS_SERVER(old_dir), 23593 err = nfs4_handle_exception(NFS_SERVER(old_dir),
24339@@ -2182,7 +2182,7 @@ static int _nfs4_proc_link(struct inode 23594@@ -2186,7 +2186,7 @@ static int _nfs4_proc_link(struct inode
24340 23595
24341 static int nfs4_proc_link(struct inode *inode, struct inode *dir, struct qstr *name) 23596 static int nfs4_proc_link(struct inode *inode, struct inode *dir, struct qstr *name)
24342 { 23597 {
@@ -24345,7 +23600,7 @@ diff -urNp linux-2.6.29.6/fs/nfs/nfs4proc.c linux-2.6.29.6/fs/nfs/nfs4proc.c
24345 int err; 23600 int err;
24346 do { 23601 do {
24347 err = nfs4_handle_exception(NFS_SERVER(inode), 23602 err = nfs4_handle_exception(NFS_SERVER(inode),
24348@@ -2273,7 +2273,7 @@ out: 23603@@ -2277,7 +2277,7 @@ out:
24349 static int nfs4_proc_symlink(struct inode *dir, struct dentry *dentry, 23604 static int nfs4_proc_symlink(struct inode *dir, struct dentry *dentry,
24350 struct page *page, unsigned int len, struct iattr *sattr) 23605 struct page *page, unsigned int len, struct iattr *sattr)
24351 { 23606 {
@@ -24354,7 +23609,7 @@ diff -urNp linux-2.6.29.6/fs/nfs/nfs4proc.c linux-2.6.29.6/fs/nfs/nfs4proc.c
24354 int err; 23609 int err;
24355 do { 23610 do {
24356 err = nfs4_handle_exception(NFS_SERVER(dir), 23611 err = nfs4_handle_exception(NFS_SERVER(dir),
24357@@ -2304,7 +2304,7 @@ out: 23612@@ -2308,7 +2308,7 @@ out:
24358 static int nfs4_proc_mkdir(struct inode *dir, struct dentry *dentry, 23613 static int nfs4_proc_mkdir(struct inode *dir, struct dentry *dentry,
24359 struct iattr *sattr) 23614 struct iattr *sattr)
24360 { 23615 {
@@ -24363,7 +23618,7 @@ diff -urNp linux-2.6.29.6/fs/nfs/nfs4proc.c linux-2.6.29.6/fs/nfs/nfs4proc.c
24363 int err; 23618 int err;
24364 do { 23619 do {
24365 err = nfs4_handle_exception(NFS_SERVER(dir), 23620 err = nfs4_handle_exception(NFS_SERVER(dir),
24366@@ -2353,7 +2353,7 @@ static int _nfs4_proc_readdir(struct den 23621@@ -2357,7 +2357,7 @@ static int _nfs4_proc_readdir(struct den
24367 static int nfs4_proc_readdir(struct dentry *dentry, struct rpc_cred *cred, 23622 static int nfs4_proc_readdir(struct dentry *dentry, struct rpc_cred *cred,
24368 u64 cookie, struct page *page, unsigned int count, int plus) 23623 u64 cookie, struct page *page, unsigned int count, int plus)
24369 { 23624 {
@@ -24372,7 +23627,7 @@ diff -urNp linux-2.6.29.6/fs/nfs/nfs4proc.c linux-2.6.29.6/fs/nfs/nfs4proc.c
24372 int err; 23627 int err;
24373 do { 23628 do {
24374 err = nfs4_handle_exception(NFS_SERVER(dentry->d_inode), 23629 err = nfs4_handle_exception(NFS_SERVER(dentry->d_inode),
24375@@ -2401,7 +2401,7 @@ out: 23630@@ -2405,7 +2405,7 @@ out:
24376 static int nfs4_proc_mknod(struct inode *dir, struct dentry *dentry, 23631 static int nfs4_proc_mknod(struct inode *dir, struct dentry *dentry,
24377 struct iattr *sattr, dev_t rdev) 23632 struct iattr *sattr, dev_t rdev)
24378 { 23633 {
@@ -24381,7 +23636,7 @@ diff -urNp linux-2.6.29.6/fs/nfs/nfs4proc.c linux-2.6.29.6/fs/nfs/nfs4proc.c
24381 int err; 23636 int err;
24382 do { 23637 do {
24383 err = nfs4_handle_exception(NFS_SERVER(dir), 23638 err = nfs4_handle_exception(NFS_SERVER(dir),
24384@@ -2430,7 +2430,7 @@ static int _nfs4_proc_statfs(struct nfs_ 23639@@ -2434,7 +2434,7 @@ static int _nfs4_proc_statfs(struct nfs_
24385 23640
24386 static int nfs4_proc_statfs(struct nfs_server *server, struct nfs_fh *fhandle, struct nfs_fsstat *fsstat) 23641 static int nfs4_proc_statfs(struct nfs_server *server, struct nfs_fh *fhandle, struct nfs_fsstat *fsstat)
24387 { 23642 {
@@ -24390,7 +23645,7 @@ diff -urNp linux-2.6.29.6/fs/nfs/nfs4proc.c linux-2.6.29.6/fs/nfs/nfs4proc.c
24390 int err; 23645 int err;
24391 do { 23646 do {
24392 err = nfs4_handle_exception(server, 23647 err = nfs4_handle_exception(server,
24393@@ -2458,7 +2458,7 @@ static int _nfs4_do_fsinfo(struct nfs_se 23648@@ -2462,7 +2462,7 @@ static int _nfs4_do_fsinfo(struct nfs_se
24394 23649
24395 static int nfs4_do_fsinfo(struct nfs_server *server, struct nfs_fh *fhandle, struct nfs_fsinfo *fsinfo) 23650 static int nfs4_do_fsinfo(struct nfs_server *server, struct nfs_fh *fhandle, struct nfs_fsinfo *fsinfo)
24396 { 23651 {
@@ -24399,7 +23654,7 @@ diff -urNp linux-2.6.29.6/fs/nfs/nfs4proc.c linux-2.6.29.6/fs/nfs/nfs4proc.c
24399 int err; 23654 int err;
24400 23655
24401 do { 23656 do {
24402@@ -2501,7 +2501,7 @@ static int _nfs4_proc_pathconf(struct nf 23657@@ -2505,7 +2505,7 @@ static int _nfs4_proc_pathconf(struct nf
24403 static int nfs4_proc_pathconf(struct nfs_server *server, struct nfs_fh *fhandle, 23658 static int nfs4_proc_pathconf(struct nfs_server *server, struct nfs_fh *fhandle,
24404 struct nfs_pathconf *pathconf) 23659 struct nfs_pathconf *pathconf)
24405 { 23660 {
@@ -24408,7 +23663,7 @@ diff -urNp linux-2.6.29.6/fs/nfs/nfs4proc.c linux-2.6.29.6/fs/nfs/nfs4proc.c
24408 int err; 23663 int err;
24409 23664
24410 do { 23665 do {
24411@@ -2788,7 +2788,7 @@ out_free: 23666@@ -2789,7 +2789,7 @@ out_free:
24412 23667
24413 static ssize_t nfs4_get_acl_uncached(struct inode *inode, void *buf, size_t buflen) 23668 static ssize_t nfs4_get_acl_uncached(struct inode *inode, void *buf, size_t buflen)
24414 { 23669 {
@@ -24417,7 +23672,7 @@ diff -urNp linux-2.6.29.6/fs/nfs/nfs4proc.c linux-2.6.29.6/fs/nfs/nfs4proc.c
24417 ssize_t ret; 23672 ssize_t ret;
24418 do { 23673 do {
24419 ret = __nfs4_get_acl_uncached(inode, buf, buflen); 23674 ret = __nfs4_get_acl_uncached(inode, buf, buflen);
24420@@ -2845,7 +2845,7 @@ static int __nfs4_proc_set_acl(struct in 23675@@ -2846,7 +2846,7 @@ static int __nfs4_proc_set_acl(struct in
24421 23676
24422 static int nfs4_proc_set_acl(struct inode *inode, const void *buf, size_t buflen) 23677 static int nfs4_proc_set_acl(struct inode *inode, const void *buf, size_t buflen)
24423 { 23678 {
@@ -24426,7 +23681,7 @@ diff -urNp linux-2.6.29.6/fs/nfs/nfs4proc.c linux-2.6.29.6/fs/nfs/nfs4proc.c
24426 int err; 23681 int err;
24427 do { 23682 do {
24428 err = nfs4_handle_exception(NFS_SERVER(inode), 23683 err = nfs4_handle_exception(NFS_SERVER(inode),
24429@@ -3068,7 +3068,7 @@ out: 23684@@ -3069,7 +3069,7 @@ out:
24430 int nfs4_proc_delegreturn(struct inode *inode, struct rpc_cred *cred, const nfs4_stateid *stateid, int issync) 23685 int nfs4_proc_delegreturn(struct inode *inode, struct rpc_cred *cred, const nfs4_stateid *stateid, int issync)
24431 { 23686 {
24432 struct nfs_server *server = NFS_SERVER(inode); 23687 struct nfs_server *server = NFS_SERVER(inode);
@@ -24435,7 +23690,7 @@ diff -urNp linux-2.6.29.6/fs/nfs/nfs4proc.c linux-2.6.29.6/fs/nfs/nfs4proc.c
24435 int err; 23690 int err;
24436 do { 23691 do {
24437 err = _nfs4_proc_delegreturn(inode, cred, stateid, issync); 23692 err = _nfs4_proc_delegreturn(inode, cred, stateid, issync);
24438@@ -3141,7 +3141,7 @@ out: 23693@@ -3142,7 +3142,7 @@ out:
24439 23694
24440 static int nfs4_proc_getlk(struct nfs4_state *state, int cmd, struct file_lock *request) 23695 static int nfs4_proc_getlk(struct nfs4_state *state, int cmd, struct file_lock *request)
24441 { 23696 {
@@ -24444,7 +23699,7 @@ diff -urNp linux-2.6.29.6/fs/nfs/nfs4proc.c linux-2.6.29.6/fs/nfs/nfs4proc.c
24444 int err; 23699 int err;
24445 23700
24446 do { 23701 do {
24447@@ -3498,7 +3498,7 @@ static int _nfs4_do_setlk(struct nfs4_st 23702@@ -3499,7 +3499,7 @@ static int _nfs4_do_setlk(struct nfs4_st
24448 static int nfs4_lock_reclaim(struct nfs4_state *state, struct file_lock *request) 23703 static int nfs4_lock_reclaim(struct nfs4_state *state, struct file_lock *request)
24449 { 23704 {
24450 struct nfs_server *server = NFS_SERVER(state->inode); 23705 struct nfs_server *server = NFS_SERVER(state->inode);
@@ -24453,7 +23708,7 @@ diff -urNp linux-2.6.29.6/fs/nfs/nfs4proc.c linux-2.6.29.6/fs/nfs/nfs4proc.c
24453 int err; 23708 int err;
24454 23709
24455 do { 23710 do {
24456@@ -3516,7 +3516,7 @@ static int nfs4_lock_reclaim(struct nfs4 23711@@ -3517,7 +3517,7 @@ static int nfs4_lock_reclaim(struct nfs4
24457 static int nfs4_lock_expired(struct nfs4_state *state, struct file_lock *request) 23712 static int nfs4_lock_expired(struct nfs4_state *state, struct file_lock *request)
24458 { 23713 {
24459 struct nfs_server *server = NFS_SERVER(state->inode); 23714 struct nfs_server *server = NFS_SERVER(state->inode);
@@ -24462,7 +23717,7 @@ diff -urNp linux-2.6.29.6/fs/nfs/nfs4proc.c linux-2.6.29.6/fs/nfs/nfs4proc.c
24462 int err; 23717 int err;
24463 23718
24464 err = nfs4_set_lock_state(state, request); 23719 err = nfs4_set_lock_state(state, request);
24465@@ -3571,7 +3571,7 @@ out: 23720@@ -3572,7 +3572,7 @@ out:
24466 23721
24467 static int nfs4_proc_setlk(struct nfs4_state *state, int cmd, struct file_lock *request) 23722 static int nfs4_proc_setlk(struct nfs4_state *state, int cmd, struct file_lock *request)
24468 { 23723 {
@@ -24471,7 +23726,7 @@ diff -urNp linux-2.6.29.6/fs/nfs/nfs4proc.c linux-2.6.29.6/fs/nfs/nfs4proc.c
24471 int err; 23726 int err;
24472 23727
24473 do { 23728 do {
24474@@ -3621,7 +3621,7 @@ nfs4_proc_lock(struct file *filp, int cm 23729@@ -3622,7 +3622,7 @@ nfs4_proc_lock(struct file *filp, int cm
24475 int nfs4_lock_delegation_recall(struct nfs4_state *state, struct file_lock *fl) 23730 int nfs4_lock_delegation_recall(struct nfs4_state *state, struct file_lock *fl)
24476 { 23731 {
24477 struct nfs_server *server = NFS_SERVER(state->inode); 23732 struct nfs_server *server = NFS_SERVER(state->inode);
@@ -24480,9 +23735,9 @@ diff -urNp linux-2.6.29.6/fs/nfs/nfs4proc.c linux-2.6.29.6/fs/nfs/nfs4proc.c
24480 int err; 23735 int err;
24481 23736
24482 err = nfs4_set_lock_state(state, fl); 23737 err = nfs4_set_lock_state(state, fl);
24483diff -urNp linux-2.6.29.6/fs/nfsd/export.c linux-2.6.29.6/fs/nfsd/export.c 23738diff -urNp linux-2.6.30.4/fs/nfsd/export.c linux-2.6.30.4/fs/nfsd/export.c
24484--- linux-2.6.29.6/fs/nfsd/export.c 2009-07-02 19:41:20.000000000 -0400 23739--- linux-2.6.30.4/fs/nfsd/export.c 2009-07-24 17:47:51.000000000 -0400
24485+++ linux-2.6.29.6/fs/nfsd/export.c 2009-07-23 18:40:27.471265103 -0400 23740+++ linux-2.6.30.4/fs/nfsd/export.c 2009-07-30 09:48:10.092682326 -0400
24486@@ -472,7 +472,7 @@ static int secinfo_parse(char **mesg, ch 23741@@ -472,7 +472,7 @@ static int secinfo_parse(char **mesg, ch
24487 * probably discover the problem when someone fails to 23742 * probably discover the problem when someone fails to
24488 * authenticate. 23743 * authenticate.
@@ -24501,9 +23756,162 @@ diff -urNp linux-2.6.29.6/fs/nfsd/export.c linux-2.6.29.6/fs/nfsd/export.c
24501 .start = e_start, 23756 .start = e_start,
24502 .next = e_next, 23757 .next = e_next,
24503 .stop = e_stop, 23758 .stop = e_stop,
24504diff -urNp linux-2.6.29.6/fs/nls/nls_base.c linux-2.6.29.6/fs/nls/nls_base.c 23759diff -urNp linux-2.6.30.4/fs/nfsd/nfsctl.c linux-2.6.30.4/fs/nfsd/nfsctl.c
24505--- linux-2.6.29.6/fs/nls/nls_base.c 2009-07-02 19:41:20.000000000 -0400 23760--- linux-2.6.30.4/fs/nfsd/nfsctl.c 2009-07-24 17:47:51.000000000 -0400
24506+++ linux-2.6.29.6/fs/nls/nls_base.c 2009-07-23 17:34:32.161096484 -0400 23761+++ linux-2.6.30.4/fs/nfsd/nfsctl.c 2009-07-30 12:06:52.128724203 -0400
23762@@ -175,7 +175,7 @@ static const struct file_operations expo
23763
23764 extern int nfsd_pool_stats_open(struct inode *inode, struct file *file);
23765
23766-static struct file_operations pool_stats_operations = {
23767+static const struct file_operations pool_stats_operations = {
23768 .open = nfsd_pool_stats_open,
23769 .read = seq_read,
23770 .llseek = seq_lseek,
23771diff -urNp linux-2.6.30.4/fs/nilfs2/dir.c linux-2.6.30.4/fs/nilfs2/dir.c
23772--- linux-2.6.30.4/fs/nilfs2/dir.c 2009-07-24 17:47:51.000000000 -0400
23773+++ linux-2.6.30.4/fs/nilfs2/dir.c 2009-07-30 12:06:52.132720832 -0400
23774@@ -698,7 +698,7 @@ not_empty:
23775 return 0;
23776 }
23777
23778-struct file_operations nilfs_dir_operations = {
23779+const struct file_operations nilfs_dir_operations = {
23780 .llseek = generic_file_llseek,
23781 .read = generic_read_dir,
23782 .readdir = nilfs_readdir,
23783diff -urNp linux-2.6.30.4/fs/nilfs2/file.c linux-2.6.30.4/fs/nilfs2/file.c
23784--- linux-2.6.30.4/fs/nilfs2/file.c 2009-07-24 17:47:51.000000000 -0400
23785+++ linux-2.6.30.4/fs/nilfs2/file.c 2009-07-30 12:07:09.623977752 -0400
23786@@ -117,7 +117,7 @@ static int nilfs_page_mkwrite(struct vm_
23787 return 0;
23788 }
23789
23790-struct vm_operations_struct nilfs_file_vm_ops = {
23791+const struct vm_operations_struct nilfs_file_vm_ops = {
23792 .fault = filemap_fault,
23793 .page_mkwrite = nilfs_page_mkwrite,
23794 };
23795@@ -134,7 +134,7 @@ static int nilfs_file_mmap(struct file *
23796 * We have mostly NULL's here: the current defaults are ok for
23797 * the nilfs filesystem.
23798 */
23799-struct file_operations nilfs_file_operations = {
23800+const struct file_operations nilfs_file_operations = {
23801 .llseek = generic_file_llseek,
23802 .read = do_sync_read,
23803 .write = do_sync_write,
23804@@ -151,7 +151,7 @@ struct file_operations nilfs_file_operat
23805 .splice_read = generic_file_splice_read,
23806 };
23807
23808-struct inode_operations nilfs_file_inode_operations = {
23809+const struct inode_operations nilfs_file_inode_operations = {
23810 .truncate = nilfs_truncate,
23811 .setattr = nilfs_setattr,
23812 .permission = nilfs_permission,
23813diff -urNp linux-2.6.30.4/fs/nilfs2/gcinode.c linux-2.6.30.4/fs/nilfs2/gcinode.c
23814--- linux-2.6.30.4/fs/nilfs2/gcinode.c 2009-07-24 17:47:51.000000000 -0400
23815+++ linux-2.6.30.4/fs/nilfs2/gcinode.c 2009-07-30 12:07:28.369023156 -0400
23816@@ -52,7 +52,7 @@
23817 #include "dat.h"
23818 #include "ifile.h"
23819
23820-static struct address_space_operations def_gcinode_aops = {};
23821+static const struct address_space_operations def_gcinode_aops = {};
23822 /* XXX need def_gcinode_iops/fops? */
23823
23824 /*
23825diff -urNp linux-2.6.30.4/fs/nilfs2/inode.c linux-2.6.30.4/fs/nilfs2/inode.c
23826--- linux-2.6.30.4/fs/nilfs2/inode.c 2009-07-24 17:47:51.000000000 -0400
23827+++ linux-2.6.30.4/fs/nilfs2/inode.c 2009-07-30 12:07:28.374397645 -0400
23828@@ -237,7 +237,7 @@ nilfs_direct_IO(int rw, struct kiocb *io
23829 return size;
23830 }
23831
23832-struct address_space_operations nilfs_aops = {
23833+const struct address_space_operations nilfs_aops = {
23834 .writepage = nilfs_writepage,
23835 .readpage = nilfs_readpage,
23836 /* .sync_page = nilfs_sync_page, */
23837diff -urNp linux-2.6.30.4/fs/nilfs2/mdt.c linux-2.6.30.4/fs/nilfs2/mdt.c
23838--- linux-2.6.30.4/fs/nilfs2/mdt.c 2009-07-24 17:47:51.000000000 -0400
23839+++ linux-2.6.30.4/fs/nilfs2/mdt.c 2009-07-30 12:07:28.379284534 -0400
23840@@ -428,7 +428,7 @@ nilfs_mdt_write_page(struct page *page,
23841 }
23842
23843
23844-static struct address_space_operations def_mdt_aops = {
23845+static const struct address_space_operations def_mdt_aops = {
23846 .writepage = nilfs_mdt_write_page,
23847 };
23848
23849diff -urNp linux-2.6.30.4/fs/nilfs2/namei.c linux-2.6.30.4/fs/nilfs2/namei.c
23850--- linux-2.6.30.4/fs/nilfs2/namei.c 2009-07-24 17:47:51.000000000 -0400
23851+++ linux-2.6.30.4/fs/nilfs2/namei.c 2009-07-30 12:07:02.764163011 -0400
23852@@ -448,7 +448,7 @@ out:
23853 return err;
23854 }
23855
23856-struct inode_operations nilfs_dir_inode_operations = {
23857+const struct inode_operations nilfs_dir_inode_operations = {
23858 .create = nilfs_create,
23859 .lookup = nilfs_lookup,
23860 .link = nilfs_link,
23861@@ -462,12 +462,12 @@ struct inode_operations nilfs_dir_inode_
23862 .permission = nilfs_permission,
23863 };
23864
23865-struct inode_operations nilfs_special_inode_operations = {
23866+const struct inode_operations nilfs_special_inode_operations = {
23867 .setattr = nilfs_setattr,
23868 .permission = nilfs_permission,
23869 };
23870
23871-struct inode_operations nilfs_symlink_inode_operations = {
23872+const struct inode_operations nilfs_symlink_inode_operations = {
23873 .readlink = generic_readlink,
23874 .follow_link = page_follow_link_light,
23875 .put_link = page_put_link,
23876diff -urNp linux-2.6.30.4/fs/nilfs2/nilfs.h linux-2.6.30.4/fs/nilfs2/nilfs.h
23877--- linux-2.6.30.4/fs/nilfs2/nilfs.h 2009-07-24 17:47:51.000000000 -0400
23878+++ linux-2.6.30.4/fs/nilfs2/nilfs.h 2009-07-30 12:47:17.035918280 -0400
23879@@ -297,13 +297,13 @@ void nilfs_clear_gcdat_inode(struct the_
23880 /*
23881 * Inodes and files operations
23882 */
23883-extern struct file_operations nilfs_dir_operations;
23884-extern struct inode_operations nilfs_file_inode_operations;
23885-extern struct file_operations nilfs_file_operations;
23886-extern struct address_space_operations nilfs_aops;
23887-extern struct inode_operations nilfs_dir_inode_operations;
23888-extern struct inode_operations nilfs_special_inode_operations;
23889-extern struct inode_operations nilfs_symlink_inode_operations;
23890+extern const struct file_operations nilfs_dir_operations;
23891+extern const struct inode_operations nilfs_file_inode_operations;
23892+extern const struct file_operations nilfs_file_operations;
23893+extern const struct address_space_operations nilfs_aops;
23894+extern const struct inode_operations nilfs_dir_inode_operations;
23895+extern const struct inode_operations nilfs_special_inode_operations;
23896+extern const struct inode_operations nilfs_symlink_inode_operations;
23897
23898 /*
23899 * filesystem type
23900diff -urNp linux-2.6.30.4/fs/nilfs2/super.c linux-2.6.30.4/fs/nilfs2/super.c
23901--- linux-2.6.30.4/fs/nilfs2/super.c 2009-07-24 17:47:51.000000000 -0400
23902+++ linux-2.6.30.4/fs/nilfs2/super.c 2009-07-30 12:07:21.041339808 -0400
23903@@ -520,7 +520,7 @@ static int nilfs_statfs(struct dentry *d
23904 return 0;
23905 }
23906
23907-static struct super_operations nilfs_sops = {
23908+static const struct super_operations nilfs_sops = {
23909 .alloc_inode = nilfs_alloc_inode,
23910 .destroy_inode = nilfs_destroy_inode,
23911 .dirty_inode = nilfs_dirty_inode,
23912diff -urNp linux-2.6.30.4/fs/nls/nls_base.c linux-2.6.30.4/fs/nls/nls_base.c
23913--- linux-2.6.30.4/fs/nls/nls_base.c 2009-07-24 17:47:51.000000000 -0400
23914+++ linux-2.6.30.4/fs/nls/nls_base.c 2009-07-30 09:48:10.092682326 -0400
24507@@ -40,7 +40,7 @@ static const struct utf8_table utf8_tabl 23915@@ -40,7 +40,7 @@ static const struct utf8_table utf8_tabl
24508 {0xF8, 0xF0, 3*6, 0x1FFFFF, 0x10000, /* 4 byte sequence */}, 23916 {0xF8, 0xF0, 3*6, 0x1FFFFF, 0x10000, /* 4 byte sequence */},
24509 {0xFC, 0xF8, 4*6, 0x3FFFFFF, 0x200000, /* 5 byte sequence */}, 23917 {0xFC, 0xF8, 4*6, 0x3FFFFFF, 0x200000, /* 5 byte sequence */},
@@ -24513,9 +23921,9 @@ diff -urNp linux-2.6.29.6/fs/nls/nls_base.c linux-2.6.29.6/fs/nls/nls_base.c
24513 }; 23921 };
24514 23922
24515 int 23923 int
24516diff -urNp linux-2.6.29.6/fs/ntfs/file.c linux-2.6.29.6/fs/ntfs/file.c 23924diff -urNp linux-2.6.30.4/fs/ntfs/file.c linux-2.6.30.4/fs/ntfs/file.c
24517--- linux-2.6.29.6/fs/ntfs/file.c 2009-07-02 19:41:20.000000000 -0400 23925--- linux-2.6.30.4/fs/ntfs/file.c 2009-07-24 17:47:51.000000000 -0400
24518+++ linux-2.6.29.6/fs/ntfs/file.c 2009-07-23 17:34:32.162058358 -0400 23926+++ linux-2.6.30.4/fs/ntfs/file.c 2009-07-30 09:48:10.092682326 -0400
24519@@ -2291,6 +2291,6 @@ const struct inode_operations ntfs_file_ 23927@@ -2291,6 +2291,6 @@ const struct inode_operations ntfs_file_
24520 #endif /* NTFS_RW */ 23928 #endif /* NTFS_RW */
24521 }; 23929 };
@@ -24525,9 +23933,21 @@ diff -urNp linux-2.6.29.6/fs/ntfs/file.c linux-2.6.29.6/fs/ntfs/file.c
24525 23933
24526-const struct inode_operations ntfs_empty_inode_ops = {}; 23934-const struct inode_operations ntfs_empty_inode_ops = {};
24527+const struct inode_operations ntfs_empty_inode_ops; 23935+const struct inode_operations ntfs_empty_inode_ops;
24528diff -urNp linux-2.6.29.6/fs/ocfs2/cluster/netdebug.c linux-2.6.29.6/fs/ocfs2/cluster/netdebug.c 23936diff -urNp linux-2.6.30.4/fs/ocfs2/cluster/heartbeat.c linux-2.6.30.4/fs/ocfs2/cluster/heartbeat.c
24529--- linux-2.6.29.6/fs/ocfs2/cluster/netdebug.c 2009-07-02 19:41:20.000000000 -0400 23937--- linux-2.6.30.4/fs/ocfs2/cluster/heartbeat.c 2009-07-24 17:47:51.000000000 -0400
24530+++ linux-2.6.29.6/fs/ocfs2/cluster/netdebug.c 2009-07-23 18:40:28.530706067 -0400 23938+++ linux-2.6.30.4/fs/ocfs2/cluster/heartbeat.c 2009-07-30 12:06:52.144842473 -0400
23939@@ -966,7 +966,7 @@ static ssize_t o2hb_debug_read(struct fi
23940 }
23941 #endif /* CONFIG_DEBUG_FS */
23942
23943-static struct file_operations o2hb_debug_fops = {
23944+static const struct file_operations o2hb_debug_fops = {
23945 .open = o2hb_debug_open,
23946 .release = o2hb_debug_release,
23947 .read = o2hb_debug_read,
23948diff -urNp linux-2.6.30.4/fs/ocfs2/cluster/netdebug.c linux-2.6.30.4/fs/ocfs2/cluster/netdebug.c
23949--- linux-2.6.30.4/fs/ocfs2/cluster/netdebug.c 2009-07-24 17:47:51.000000000 -0400
23950+++ linux-2.6.30.4/fs/ocfs2/cluster/netdebug.c 2009-07-30 09:48:10.092682326 -0400
24531@@ -163,7 +163,7 @@ static void nst_seq_stop(struct seq_file 23951@@ -163,7 +163,7 @@ static void nst_seq_stop(struct seq_file
24532 { 23952 {
24533 } 23953 }
@@ -24564,34 +23984,10 @@ diff -urNp linux-2.6.29.6/fs/ocfs2/cluster/netdebug.c linux-2.6.29.6/fs/ocfs2/cl
24564 .open = sc_fop_open, 23984 .open = sc_fop_open,
24565 .read = seq_read, 23985 .read = seq_read,
24566 .llseek = seq_lseek, 23986 .llseek = seq_lseek,
24567diff -urNp linux-2.6.29.6/fs/ocfs2/dcache.c linux-2.6.29.6/fs/ocfs2/dcache.c 23987diff -urNp linux-2.6.30.4/fs/ocfs2/dlm/dlmdebug.c linux-2.6.30.4/fs/ocfs2/dlm/dlmdebug.c
24568--- linux-2.6.29.6/fs/ocfs2/dcache.c 2009-07-02 19:41:20.000000000 -0400 23988--- linux-2.6.30.4/fs/ocfs2/dlm/dlmdebug.c 2009-07-24 17:47:51.000000000 -0400
24569+++ linux-2.6.29.6/fs/ocfs2/dcache.c 2009-07-23 18:40:28.532382020 -0400 23989+++ linux-2.6.30.4/fs/ocfs2/dlm/dlmdebug.c 2009-07-30 09:48:10.092682326 -0400
24570@@ -455,7 +455,7 @@ out_move: 23990@@ -479,7 +479,7 @@ bail:
24571 d_move(dentry, target);
24572 }
24573
24574-struct dentry_operations ocfs2_dentry_ops = {
24575+const struct dentry_operations ocfs2_dentry_ops = {
24576 .d_revalidate = ocfs2_dentry_revalidate,
24577 .d_iput = ocfs2_dentry_iput,
24578 };
24579diff -urNp linux-2.6.29.6/fs/ocfs2/dcache.h linux-2.6.29.6/fs/ocfs2/dcache.h
24580--- linux-2.6.29.6/fs/ocfs2/dcache.h 2009-07-02 19:41:20.000000000 -0400
24581+++ linux-2.6.29.6/fs/ocfs2/dcache.h 2009-07-23 18:40:28.544320633 -0400
24582@@ -26,7 +26,7 @@
24583 #ifndef OCFS2_DCACHE_H
24584 #define OCFS2_DCACHE_H
24585
24586-extern struct dentry_operations ocfs2_dentry_ops;
24587+extern const struct dentry_operations ocfs2_dentry_ops;
24588
24589 struct ocfs2_dentry_lock {
24590 /* Use count of dentry lock */
24591diff -urNp linux-2.6.29.6/fs/ocfs2/dlm/dlmdebug.c linux-2.6.29.6/fs/ocfs2/dlm/dlmdebug.c
24592--- linux-2.6.29.6/fs/ocfs2/dlm/dlmdebug.c 2009-07-02 19:41:20.000000000 -0400
24593+++ linux-2.6.29.6/fs/ocfs2/dlm/dlmdebug.c 2009-07-23 18:40:28.549511769 -0400
24594@@ -489,7 +489,7 @@ bail:
24595 return -ENOMEM; 23991 return -ENOMEM;
24596 } 23992 }
24597 23993
@@ -24627,7 +24023,7 @@ diff -urNp linux-2.6.29.6/fs/ocfs2/dlm/dlmdebug.c linux-2.6.29.6/fs/ocfs2/dlm/dl
24627 .open = debug_lockres_open, 24023 .open = debug_lockres_open,
24628 .release = debug_lockres_release, 24024 .release = debug_lockres_release,
24629 .read = seq_read, 24025 .read = seq_read,
24630@@ -903,7 +903,7 @@ bail: 24026@@ -926,7 +926,7 @@ bail:
24631 return -ENOMEM; 24027 return -ENOMEM;
24632 } 24028 }
24633 24029
@@ -24636,10 +24032,10 @@ diff -urNp linux-2.6.29.6/fs/ocfs2/dlm/dlmdebug.c linux-2.6.29.6/fs/ocfs2/dlm/dl
24636 .open = debug_state_open, 24032 .open = debug_state_open,
24637 .release = debug_buffer_release, 24033 .release = debug_buffer_release,
24638 .read = debug_buffer_read, 24034 .read = debug_buffer_read,
24639diff -urNp linux-2.6.29.6/fs/ocfs2/localalloc.c linux-2.6.29.6/fs/ocfs2/localalloc.c 24035diff -urNp linux-2.6.30.4/fs/ocfs2/localalloc.c linux-2.6.30.4/fs/ocfs2/localalloc.c
24640--- linux-2.6.29.6/fs/ocfs2/localalloc.c 2009-07-02 19:41:20.000000000 -0400 24036--- linux-2.6.30.4/fs/ocfs2/localalloc.c 2009-07-24 17:47:51.000000000 -0400
24641+++ linux-2.6.29.6/fs/ocfs2/localalloc.c 2009-07-23 17:34:32.162793620 -0400 24037+++ linux-2.6.30.4/fs/ocfs2/localalloc.c 2009-07-30 09:48:10.094563975 -0400
24642@@ -1272,7 +1272,7 @@ static int ocfs2_local_alloc_slide_windo 24038@@ -1186,7 +1186,7 @@ static int ocfs2_local_alloc_slide_windo
24643 goto bail; 24039 goto bail;
24644 } 24040 }
24645 24041
@@ -24648,9 +24044,9 @@ diff -urNp linux-2.6.29.6/fs/ocfs2/localalloc.c linux-2.6.29.6/fs/ocfs2/localall
24648 24044
24649 status = 0; 24045 status = 0;
24650 bail: 24046 bail:
24651diff -urNp linux-2.6.29.6/fs/ocfs2/mmap.c linux-2.6.29.6/fs/ocfs2/mmap.c 24047diff -urNp linux-2.6.30.4/fs/ocfs2/mmap.c linux-2.6.30.4/fs/ocfs2/mmap.c
24652--- linux-2.6.29.6/fs/ocfs2/mmap.c 2009-07-02 19:41:20.000000000 -0400 24048--- linux-2.6.30.4/fs/ocfs2/mmap.c 2009-07-24 17:47:51.000000000 -0400
24653+++ linux-2.6.29.6/fs/ocfs2/mmap.c 2009-07-23 18:40:28.550266995 -0400 24049+++ linux-2.6.30.4/fs/ocfs2/mmap.c 2009-07-30 09:48:10.094563975 -0400
24654@@ -202,7 +202,7 @@ out: 24050@@ -202,7 +202,7 @@ out:
24655 return ret; 24051 return ret;
24656 } 24052 }
@@ -24660,9 +24056,9 @@ diff -urNp linux-2.6.29.6/fs/ocfs2/mmap.c linux-2.6.29.6/fs/ocfs2/mmap.c
24660 .fault = ocfs2_fault, 24056 .fault = ocfs2_fault,
24661 .page_mkwrite = ocfs2_page_mkwrite, 24057 .page_mkwrite = ocfs2_page_mkwrite,
24662 }; 24058 };
24663diff -urNp linux-2.6.29.6/fs/ocfs2/ocfs2.h linux-2.6.29.6/fs/ocfs2/ocfs2.h 24059diff -urNp linux-2.6.30.4/fs/ocfs2/ocfs2.h linux-2.6.30.4/fs/ocfs2/ocfs2.h
24664--- linux-2.6.29.6/fs/ocfs2/ocfs2.h 2009-07-02 19:41:20.000000000 -0400 24060--- linux-2.6.30.4/fs/ocfs2/ocfs2.h 2009-07-24 17:47:51.000000000 -0400
24665+++ linux-2.6.29.6/fs/ocfs2/ocfs2.h 2009-07-23 17:34:32.162793620 -0400 24061+++ linux-2.6.30.4/fs/ocfs2/ocfs2.h 2009-07-30 09:48:10.094563975 -0400
24666@@ -168,11 +168,11 @@ enum ocfs2_vol_state 24062@@ -168,11 +168,11 @@ enum ocfs2_vol_state
24667 24063
24668 struct ocfs2_alloc_stats 24064 struct ocfs2_alloc_stats
@@ -24680,10 +24076,10 @@ diff -urNp linux-2.6.29.6/fs/ocfs2/ocfs2.h linux-2.6.29.6/fs/ocfs2/ocfs2.h
24680 }; 24076 };
24681 24077
24682 enum ocfs2_local_alloc_state 24078 enum ocfs2_local_alloc_state
24683diff -urNp linux-2.6.29.6/fs/ocfs2/suballoc.c linux-2.6.29.6/fs/ocfs2/suballoc.c 24079diff -urNp linux-2.6.30.4/fs/ocfs2/suballoc.c linux-2.6.30.4/fs/ocfs2/suballoc.c
24684--- linux-2.6.29.6/fs/ocfs2/suballoc.c 2009-07-02 19:41:20.000000000 -0400 24080--- linux-2.6.30.4/fs/ocfs2/suballoc.c 2009-07-24 17:47:51.000000000 -0400
24685+++ linux-2.6.29.6/fs/ocfs2/suballoc.c 2009-07-23 17:34:32.162793620 -0400 24081+++ linux-2.6.30.4/fs/ocfs2/suballoc.c 2009-07-30 09:48:10.094563975 -0400
24686@@ -602,7 +602,7 @@ static int ocfs2_reserve_suballoc_bits(s 24082@@ -620,7 +620,7 @@ static int ocfs2_reserve_suballoc_bits(s
24687 mlog_errno(status); 24083 mlog_errno(status);
24688 goto bail; 24084 goto bail;
24689 } 24085 }
@@ -24692,7 +24088,7 @@ diff -urNp linux-2.6.29.6/fs/ocfs2/suballoc.c linux-2.6.29.6/fs/ocfs2/suballoc.c
24692 24088
24693 /* You should never ask for this much metadata */ 24089 /* You should never ask for this much metadata */
24694 BUG_ON(bits_wanted > 24090 BUG_ON(bits_wanted >
24695@@ -1608,7 +1608,7 @@ int ocfs2_claim_metadata(struct ocfs2_su 24091@@ -1641,7 +1641,7 @@ int ocfs2_claim_metadata(struct ocfs2_su
24696 mlog_errno(status); 24092 mlog_errno(status);
24697 goto bail; 24093 goto bail;
24698 } 24094 }
@@ -24701,7 +24097,7 @@ diff -urNp linux-2.6.29.6/fs/ocfs2/suballoc.c linux-2.6.29.6/fs/ocfs2/suballoc.c
24701 24097
24702 *blkno_start = bg_blkno + (u64) *suballoc_bit_start; 24098 *blkno_start = bg_blkno + (u64) *suballoc_bit_start;
24703 ac->ac_bits_given += (*num_bits); 24099 ac->ac_bits_given += (*num_bits);
24704@@ -1647,7 +1647,7 @@ int ocfs2_claim_new_inode(struct ocfs2_s 24100@@ -1715,7 +1715,7 @@ int ocfs2_claim_new_inode(struct ocfs2_s
24705 mlog_errno(status); 24101 mlog_errno(status);
24706 goto bail; 24102 goto bail;
24707 } 24103 }
@@ -24710,7 +24106,7 @@ diff -urNp linux-2.6.29.6/fs/ocfs2/suballoc.c linux-2.6.29.6/fs/ocfs2/suballoc.c
24710 24106
24711 BUG_ON(num_bits != 1); 24107 BUG_ON(num_bits != 1);
24712 24108
24713@@ -1748,7 +1748,7 @@ int __ocfs2_claim_clusters(struct ocfs2_ 24109@@ -1817,7 +1817,7 @@ int __ocfs2_claim_clusters(struct ocfs2_
24714 cluster_start, 24110 cluster_start,
24715 num_clusters); 24111 num_clusters);
24716 if (!status) 24112 if (!status)
@@ -24719,7 +24115,7 @@ diff -urNp linux-2.6.29.6/fs/ocfs2/suballoc.c linux-2.6.29.6/fs/ocfs2/suballoc.c
24719 } else { 24115 } else {
24720 if (min_clusters > (osb->bitmap_cpg - 1)) { 24116 if (min_clusters > (osb->bitmap_cpg - 1)) {
24721 /* The only paths asking for contiguousness 24117 /* The only paths asking for contiguousness
24722@@ -1776,7 +1776,7 @@ int __ocfs2_claim_clusters(struct ocfs2_ 24118@@ -1845,7 +1845,7 @@ int __ocfs2_claim_clusters(struct ocfs2_
24723 ocfs2_desc_bitmap_to_cluster_off(ac->ac_inode, 24119 ocfs2_desc_bitmap_to_cluster_off(ac->ac_inode,
24724 bg_blkno, 24120 bg_blkno,
24725 bg_bit_off); 24121 bg_bit_off);
@@ -24728,9 +24124,21 @@ diff -urNp linux-2.6.29.6/fs/ocfs2/suballoc.c linux-2.6.29.6/fs/ocfs2/suballoc.c
24728 } 24124 }
24729 } 24125 }
24730 if (status < 0) { 24126 if (status < 0) {
24731diff -urNp linux-2.6.29.6/fs/omfs/dir.c linux-2.6.29.6/fs/omfs/dir.c 24127diff -urNp linux-2.6.30.4/fs/ocfs2/super.c linux-2.6.30.4/fs/ocfs2/super.c
24732--- linux-2.6.29.6/fs/omfs/dir.c 2009-07-02 19:41:20.000000000 -0400 24128--- linux-2.6.30.4/fs/ocfs2/super.c 2009-07-24 17:47:51.000000000 -0400
24733+++ linux-2.6.29.6/fs/omfs/dir.c 2009-07-23 18:40:28.558460904 -0400 24129+++ linux-2.6.30.4/fs/ocfs2/super.c 2009-07-30 12:06:52.187885986 -0400
24130@@ -362,7 +362,7 @@ static ssize_t ocfs2_debug_read(struct f
24131 }
24132 #endif /* CONFIG_DEBUG_FS */
24133
24134-static struct file_operations ocfs2_osb_debug_fops = {
24135+static const struct file_operations ocfs2_osb_debug_fops = {
24136 .open = ocfs2_osb_debug_open,
24137 .release = ocfs2_debug_release,
24138 .read = ocfs2_debug_read,
24139diff -urNp linux-2.6.30.4/fs/omfs/dir.c linux-2.6.30.4/fs/omfs/dir.c
24140--- linux-2.6.30.4/fs/omfs/dir.c 2009-07-24 17:47:51.000000000 -0400
24141+++ linux-2.6.30.4/fs/omfs/dir.c 2009-07-30 09:48:10.094563975 -0400
24734@@ -489,7 +489,7 @@ out: 24142@@ -489,7 +489,7 @@ out:
24735 return ret; 24143 return ret;
24736 } 24144 }
@@ -24749,9 +24157,9 @@ diff -urNp linux-2.6.29.6/fs/omfs/dir.c linux-2.6.29.6/fs/omfs/dir.c
24749 .read = generic_read_dir, 24157 .read = generic_read_dir,
24750 .readdir = omfs_readdir, 24158 .readdir = omfs_readdir,
24751 .llseek = generic_file_llseek, 24159 .llseek = generic_file_llseek,
24752diff -urNp linux-2.6.29.6/fs/omfs/file.c linux-2.6.29.6/fs/omfs/file.c 24160diff -urNp linux-2.6.30.4/fs/omfs/file.c linux-2.6.30.4/fs/omfs/file.c
24753--- linux-2.6.29.6/fs/omfs/file.c 2009-07-02 19:41:20.000000000 -0400 24161--- linux-2.6.30.4/fs/omfs/file.c 2009-07-24 17:47:51.000000000 -0400
24754+++ linux-2.6.29.6/fs/omfs/file.c 2009-07-23 18:40:28.558460904 -0400 24162+++ linux-2.6.30.4/fs/omfs/file.c 2009-07-30 09:48:10.094563975 -0400
24755@@ -337,7 +337,7 @@ static sector_t omfs_bmap(struct address 24163@@ -337,7 +337,7 @@ static sector_t omfs_bmap(struct address
24756 return generic_block_bmap(mapping, block, omfs_get_block); 24164 return generic_block_bmap(mapping, block, omfs_get_block);
24757 } 24165 }
@@ -24775,10 +24183,10 @@ diff -urNp linux-2.6.29.6/fs/omfs/file.c linux-2.6.29.6/fs/omfs/file.c
24775 .readpage = omfs_readpage, 24183 .readpage = omfs_readpage,
24776 .readpages = omfs_readpages, 24184 .readpages = omfs_readpages,
24777 .writepage = omfs_writepage, 24185 .writepage = omfs_writepage,
24778diff -urNp linux-2.6.29.6/fs/omfs/inode.c linux-2.6.29.6/fs/omfs/inode.c 24186diff -urNp linux-2.6.30.4/fs/omfs/inode.c linux-2.6.30.4/fs/omfs/inode.c
24779--- linux-2.6.29.6/fs/omfs/inode.c 2009-07-02 19:41:20.000000000 -0400 24187--- linux-2.6.30.4/fs/omfs/inode.c 2009-07-24 17:47:51.000000000 -0400
24780+++ linux-2.6.29.6/fs/omfs/inode.c 2009-07-23 18:40:28.559411985 -0400 24188+++ linux-2.6.30.4/fs/omfs/inode.c 2009-07-30 09:48:10.096509014 -0400
24781@@ -273,7 +273,7 @@ static int omfs_statfs(struct dentry *de 24189@@ -278,7 +278,7 @@ static int omfs_statfs(struct dentry *de
24782 return 0; 24190 return 0;
24783 } 24191 }
24784 24192
@@ -24787,9 +24195,9 @@ diff -urNp linux-2.6.29.6/fs/omfs/inode.c linux-2.6.29.6/fs/omfs/inode.c
24787 .write_inode = omfs_write_inode, 24195 .write_inode = omfs_write_inode,
24788 .delete_inode = omfs_delete_inode, 24196 .delete_inode = omfs_delete_inode,
24789 .put_super = omfs_put_super, 24197 .put_super = omfs_put_super,
24790diff -urNp linux-2.6.29.6/fs/omfs/omfs.h linux-2.6.29.6/fs/omfs/omfs.h 24198diff -urNp linux-2.6.30.4/fs/omfs/omfs.h linux-2.6.30.4/fs/omfs/omfs.h
24791--- linux-2.6.29.6/fs/omfs/omfs.h 2009-07-02 19:41:20.000000000 -0400 24199--- linux-2.6.30.4/fs/omfs/omfs.h 2009-07-24 17:47:51.000000000 -0400
24792+++ linux-2.6.29.6/fs/omfs/omfs.h 2009-07-23 18:40:28.560275663 -0400 24200+++ linux-2.6.30.4/fs/omfs/omfs.h 2009-07-30 09:48:10.096509014 -0400
24793@@ -44,16 +44,16 @@ extern int omfs_allocate_range(struct su 24201@@ -44,16 +44,16 @@ extern int omfs_allocate_range(struct su
24794 extern int omfs_clear_range(struct super_block *sb, u64 block, int count); 24202 extern int omfs_clear_range(struct super_block *sb, u64 block, int count);
24795 24203
@@ -24812,10 +24220,10 @@ diff -urNp linux-2.6.29.6/fs/omfs/omfs.h linux-2.6.29.6/fs/omfs/omfs.h
24812 extern void omfs_make_empty_table(struct buffer_head *bh, int offset); 24220 extern void omfs_make_empty_table(struct buffer_head *bh, int offset);
24813 extern int omfs_shrink_inode(struct inode *inode); 24221 extern int omfs_shrink_inode(struct inode *inode);
24814 24222
24815diff -urNp linux-2.6.29.6/fs/open.c linux-2.6.29.6/fs/open.c 24223diff -urNp linux-2.6.30.4/fs/open.c linux-2.6.30.4/fs/open.c
24816--- linux-2.6.29.6/fs/open.c 2009-07-02 19:41:20.000000000 -0400 24224--- linux-2.6.30.4/fs/open.c 2009-07-24 17:47:51.000000000 -0400
24817+++ linux-2.6.29.6/fs/open.c 2009-07-23 17:34:32.164099579 -0400 24225+++ linux-2.6.30.4/fs/open.c 2009-07-30 11:10:49.258897345 -0400
24818@@ -205,6 +205,9 @@ int do_truncate(struct dentry *dentry, l 24226@@ -206,6 +206,9 @@ int do_truncate(struct dentry *dentry, l
24819 if (length < 0) 24227 if (length < 0)
24820 return -EINVAL; 24228 return -EINVAL;
24821 24229
@@ -24825,7 +24233,7 @@ diff -urNp linux-2.6.29.6/fs/open.c linux-2.6.29.6/fs/open.c
24825 newattrs.ia_size = length; 24233 newattrs.ia_size = length;
24826 newattrs.ia_valid = ATTR_SIZE | time_attrs; 24234 newattrs.ia_valid = ATTR_SIZE | time_attrs;
24827 if (filp) { 24235 if (filp) {
24828@@ -509,6 +512,9 @@ SYSCALL_DEFINE3(faccessat, int, dfd, con 24236@@ -510,6 +513,9 @@ SYSCALL_DEFINE3(faccessat, int, dfd, con
24829 if (__mnt_is_readonly(path.mnt)) 24237 if (__mnt_is_readonly(path.mnt))
24830 res = -EROFS; 24238 res = -EROFS;
24831 24239
@@ -24835,7 +24243,7 @@ diff -urNp linux-2.6.29.6/fs/open.c linux-2.6.29.6/fs/open.c
24835 out_path_release: 24243 out_path_release:
24836 path_put(&path); 24244 path_put(&path);
24837 out: 24245 out:
24838@@ -535,6 +541,8 @@ SYSCALL_DEFINE1(chdir, const char __user 24246@@ -536,6 +542,8 @@ SYSCALL_DEFINE1(chdir, const char __user
24839 if (error) 24247 if (error)
24840 goto dput_and_out; 24248 goto dput_and_out;
24841 24249
@@ -24844,7 +24252,7 @@ diff -urNp linux-2.6.29.6/fs/open.c linux-2.6.29.6/fs/open.c
24844 set_fs_pwd(current->fs, &path); 24252 set_fs_pwd(current->fs, &path);
24845 24253
24846 dput_and_out: 24254 dput_and_out:
24847@@ -561,6 +569,13 @@ SYSCALL_DEFINE1(fchdir, unsigned int, fd 24255@@ -562,6 +570,13 @@ SYSCALL_DEFINE1(fchdir, unsigned int, fd
24848 goto out_putf; 24256 goto out_putf;
24849 24257
24850 error = inode_permission(inode, MAY_EXEC | MAY_ACCESS); 24258 error = inode_permission(inode, MAY_EXEC | MAY_ACCESS);
@@ -24858,7 +24266,7 @@ diff -urNp linux-2.6.29.6/fs/open.c linux-2.6.29.6/fs/open.c
24858 if (!error) 24266 if (!error)
24859 set_fs_pwd(current->fs, &file->f_path); 24267 set_fs_pwd(current->fs, &file->f_path);
24860 out_putf: 24268 out_putf:
24861@@ -586,7 +601,18 @@ SYSCALL_DEFINE1(chroot, const char __use 24269@@ -587,7 +602,18 @@ SYSCALL_DEFINE1(chroot, const char __use
24862 if (!capable(CAP_SYS_CHROOT)) 24270 if (!capable(CAP_SYS_CHROOT))
24863 goto dput_and_out; 24271 goto dput_and_out;
24864 24272
@@ -24877,7 +24285,7 @@ diff -urNp linux-2.6.29.6/fs/open.c linux-2.6.29.6/fs/open.c
24877 error = 0; 24285 error = 0;
24878 dput_and_out: 24286 dput_and_out:
24879 path_put(&path); 24287 path_put(&path);
24880@@ -614,13 +640,28 @@ SYSCALL_DEFINE2(fchmod, unsigned int, fd 24288@@ -615,13 +641,28 @@ SYSCALL_DEFINE2(fchmod, unsigned int, fd
24881 err = mnt_want_write(file->f_path.mnt); 24289 err = mnt_want_write(file->f_path.mnt);
24882 if (err) 24290 if (err)
24883 goto out_putf; 24291 goto out_putf;
@@ -24906,7 +24314,7 @@ diff -urNp linux-2.6.29.6/fs/open.c linux-2.6.29.6/fs/open.c
24906 mnt_drop_write(file->f_path.mnt); 24314 mnt_drop_write(file->f_path.mnt);
24907 out_putf: 24315 out_putf:
24908 fput(file); 24316 fput(file);
24909@@ -643,13 +684,28 @@ SYSCALL_DEFINE3(fchmodat, int, dfd, cons 24317@@ -644,13 +685,28 @@ SYSCALL_DEFINE3(fchmodat, int, dfd, cons
24910 error = mnt_want_write(path.mnt); 24318 error = mnt_want_write(path.mnt);
24911 if (error) 24319 if (error)
24912 goto dput_and_out; 24320 goto dput_and_out;
@@ -24935,7 +24343,7 @@ diff -urNp linux-2.6.29.6/fs/open.c linux-2.6.29.6/fs/open.c
24935 mnt_drop_write(path.mnt); 24343 mnt_drop_write(path.mnt);
24936 dput_and_out: 24344 dput_and_out:
24937 path_put(&path); 24345 path_put(&path);
24938@@ -662,12 +718,15 @@ SYSCALL_DEFINE2(chmod, const char __user 24346@@ -663,12 +719,15 @@ SYSCALL_DEFINE2(chmod, const char __user
24939 return sys_fchmodat(AT_FDCWD, filename, mode); 24347 return sys_fchmodat(AT_FDCWD, filename, mode);
24940 } 24348 }
24941 24349
@@ -24952,7 +24360,7 @@ diff -urNp linux-2.6.29.6/fs/open.c linux-2.6.29.6/fs/open.c
24952 newattrs.ia_valid = ATTR_CTIME; 24360 newattrs.ia_valid = ATTR_CTIME;
24953 if (user != (uid_t) -1) { 24361 if (user != (uid_t) -1) {
24954 newattrs.ia_valid |= ATTR_UID; 24362 newattrs.ia_valid |= ATTR_UID;
24955@@ -698,7 +757,7 @@ SYSCALL_DEFINE3(chown, const char __user 24363@@ -699,7 +758,7 @@ SYSCALL_DEFINE3(chown, const char __user
24956 error = mnt_want_write(path.mnt); 24364 error = mnt_want_write(path.mnt);
24957 if (error) 24365 if (error)
24958 goto out_release; 24366 goto out_release;
@@ -24961,7 +24369,7 @@ diff -urNp linux-2.6.29.6/fs/open.c linux-2.6.29.6/fs/open.c
24961 mnt_drop_write(path.mnt); 24369 mnt_drop_write(path.mnt);
24962 out_release: 24370 out_release:
24963 path_put(&path); 24371 path_put(&path);
24964@@ -723,7 +782,7 @@ SYSCALL_DEFINE5(fchownat, int, dfd, cons 24372@@ -724,7 +783,7 @@ SYSCALL_DEFINE5(fchownat, int, dfd, cons
24965 error = mnt_want_write(path.mnt); 24373 error = mnt_want_write(path.mnt);
24966 if (error) 24374 if (error)
24967 goto out_release; 24375 goto out_release;
@@ -24970,7 +24378,7 @@ diff -urNp linux-2.6.29.6/fs/open.c linux-2.6.29.6/fs/open.c
24970 mnt_drop_write(path.mnt); 24378 mnt_drop_write(path.mnt);
24971 out_release: 24379 out_release:
24972 path_put(&path); 24380 path_put(&path);
24973@@ -742,7 +801,7 @@ SYSCALL_DEFINE3(lchown, const char __use 24381@@ -743,7 +802,7 @@ SYSCALL_DEFINE3(lchown, const char __use
24974 error = mnt_want_write(path.mnt); 24382 error = mnt_want_write(path.mnt);
24975 if (error) 24383 if (error)
24976 goto out_release; 24384 goto out_release;
@@ -24979,7 +24387,7 @@ diff -urNp linux-2.6.29.6/fs/open.c linux-2.6.29.6/fs/open.c
24979 mnt_drop_write(path.mnt); 24387 mnt_drop_write(path.mnt);
24980 out_release: 24388 out_release:
24981 path_put(&path); 24389 path_put(&path);
24982@@ -765,7 +824,7 @@ SYSCALL_DEFINE3(fchown, unsigned int, fd 24390@@ -766,7 +825,7 @@ SYSCALL_DEFINE3(fchown, unsigned int, fd
24983 goto out_fput; 24391 goto out_fput;
24984 dentry = file->f_path.dentry; 24392 dentry = file->f_path.dentry;
24985 audit_inode(NULL, dentry); 24393 audit_inode(NULL, dentry);
@@ -24988,10 +24396,10 @@ diff -urNp linux-2.6.29.6/fs/open.c linux-2.6.29.6/fs/open.c
24988 mnt_drop_write(file->f_path.mnt); 24396 mnt_drop_write(file->f_path.mnt);
24989 out_fput: 24397 out_fput:
24990 fput(file); 24398 fput(file);
24991diff -urNp linux-2.6.29.6/fs/pipe.c linux-2.6.29.6/fs/pipe.c 24399diff -urNp linux-2.6.30.4/fs/pipe.c linux-2.6.30.4/fs/pipe.c
24992--- linux-2.6.29.6/fs/pipe.c 2009-07-02 19:41:20.000000000 -0400 24400--- linux-2.6.30.4/fs/pipe.c 2009-07-24 17:47:51.000000000 -0400
24993+++ linux-2.6.29.6/fs/pipe.c 2009-07-23 18:40:28.560275663 -0400 24401+++ linux-2.6.30.4/fs/pipe.c 2009-07-30 11:10:49.268433019 -0400
24994@@ -848,7 +848,7 @@ void free_pipe_info(struct inode *inode) 24402@@ -872,7 +872,7 @@ void free_pipe_info(struct inode *inode)
24995 inode->i_pipe = NULL; 24403 inode->i_pipe = NULL;
24996 } 24404 }
24997 24405
@@ -25000,18 +24408,9 @@ diff -urNp linux-2.6.29.6/fs/pipe.c linux-2.6.29.6/fs/pipe.c
25000 static int pipefs_delete_dentry(struct dentry *dentry) 24408 static int pipefs_delete_dentry(struct dentry *dentry)
25001 { 24409 {
25002 /* 24410 /*
25003@@ -870,7 +870,7 @@ static char *pipefs_dname(struct dentry 24411diff -urNp linux-2.6.30.4/fs/proc/array.c linux-2.6.30.4/fs/proc/array.c
25004 dentry->d_inode->i_ino); 24412--- linux-2.6.30.4/fs/proc/array.c 2009-07-24 17:47:51.000000000 -0400
25005 } 24413+++ linux-2.6.30.4/fs/proc/array.c 2009-07-30 11:10:49.279288424 -0400
25006
25007-static struct dentry_operations pipefs_dentry_operations = {
25008+static const struct dentry_operations pipefs_dentry_operations = {
25009 .d_delete = pipefs_delete_dentry,
25010 .d_dname = pipefs_dname,
25011 };
25012diff -urNp linux-2.6.29.6/fs/proc/array.c linux-2.6.29.6/fs/proc/array.c
25013--- linux-2.6.29.6/fs/proc/array.c 2009-07-02 19:41:20.000000000 -0400
25014+++ linux-2.6.29.6/fs/proc/array.c 2009-07-23 17:34:32.164990172 -0400
25015@@ -321,6 +321,21 @@ static inline void task_context_switch_c 24414@@ -321,6 +321,21 @@ static inline void task_context_switch_c
25016 p->nivcsw); 24415 p->nivcsw);
25017 } 24416 }
@@ -25102,10 +24501,10 @@ diff -urNp linux-2.6.29.6/fs/proc/array.c linux-2.6.29.6/fs/proc/array.c
25102+ return sprintf(buffer, "%u.%u.%u.%u\n", NIPQUAD(task->signal->curr_ip)); 24501+ return sprintf(buffer, "%u.%u.%u.%u\n", NIPQUAD(task->signal->curr_ip));
25103+} 24502+}
25104+#endif 24503+#endif
25105diff -urNp linux-2.6.29.6/fs/proc/base.c linux-2.6.29.6/fs/proc/base.c 24504diff -urNp linux-2.6.30.4/fs/proc/base.c linux-2.6.30.4/fs/proc/base.c
25106--- linux-2.6.29.6/fs/proc/base.c 2009-07-02 19:41:20.000000000 -0400 24505--- linux-2.6.30.4/fs/proc/base.c 2009-07-24 17:47:51.000000000 -0400
25107+++ linux-2.6.29.6/fs/proc/base.c 2009-07-23 17:34:32.165782392 -0400 24506+++ linux-2.6.30.4/fs/proc/base.c 2009-07-30 11:10:49.291551908 -0400
25108@@ -212,6 +212,9 @@ static int check_mem_permission(struct t 24507@@ -213,6 +213,9 @@ static int check_mem_permission(struct t
25109 if (task == current) 24508 if (task == current)
25110 return 0; 24509 return 0;
25111 24510
@@ -25115,7 +24514,7 @@ diff -urNp linux-2.6.29.6/fs/proc/base.c linux-2.6.29.6/fs/proc/base.c
25115 /* 24514 /*
25116 * If current is actively ptrace'ing, and would also be 24515 * If current is actively ptrace'ing, and would also be
25117 * permitted to freshly attach with ptrace now, permit it. 24516 * permitted to freshly attach with ptrace now, permit it.
25118@@ -262,6 +265,9 @@ static int proc_pid_cmdline(struct task_ 24517@@ -263,6 +266,9 @@ static int proc_pid_cmdline(struct task_
25119 if (!mm->arg_end) 24518 if (!mm->arg_end)
25120 goto out_mm; /* Shh! No looking before we're done */ 24519 goto out_mm; /* Shh! No looking before we're done */
25121 24520
@@ -25125,7 +24524,7 @@ diff -urNp linux-2.6.29.6/fs/proc/base.c linux-2.6.29.6/fs/proc/base.c
25125 len = mm->arg_end - mm->arg_start; 24524 len = mm->arg_end - mm->arg_start;
25126 24525
25127 if (len > PAGE_SIZE) 24526 if (len > PAGE_SIZE)
25128@@ -289,12 +295,26 @@ out: 24527@@ -290,12 +296,26 @@ out:
25129 return res; 24528 return res;
25130 } 24529 }
25131 24530
@@ -25152,7 +24551,7 @@ diff -urNp linux-2.6.29.6/fs/proc/base.c linux-2.6.29.6/fs/proc/base.c
25152 do { 24551 do {
25153 nwords += 2; 24552 nwords += 2;
25154 } while (mm->saved_auxv[nwords - 2] != 0); /* AT_NULL */ 24553 } while (mm->saved_auxv[nwords - 2] != 0); /* AT_NULL */
25155@@ -330,7 +350,7 @@ static int proc_pid_wchan(struct task_st 24554@@ -331,7 +351,7 @@ static int proc_pid_wchan(struct task_st
25156 } 24555 }
25157 #endif /* CONFIG_KALLSYMS */ 24556 #endif /* CONFIG_KALLSYMS */
25158 24557
@@ -25161,7 +24560,7 @@ diff -urNp linux-2.6.29.6/fs/proc/base.c linux-2.6.29.6/fs/proc/base.c
25161 24560
25162 #define MAX_STACK_TRACE_DEPTH 64 24561 #define MAX_STACK_TRACE_DEPTH 64
25163 24562
25164@@ -523,7 +543,7 @@ static int proc_pid_limits(struct task_s 24563@@ -524,7 +544,7 @@ static int proc_pid_limits(struct task_s
25165 return count; 24564 return count;
25166 } 24565 }
25167 24566
@@ -25170,7 +24569,7 @@ diff -urNp linux-2.6.29.6/fs/proc/base.c linux-2.6.29.6/fs/proc/base.c
25170 static int proc_pid_syscall(struct task_struct *task, char *buffer) 24569 static int proc_pid_syscall(struct task_struct *task, char *buffer)
25171 { 24570 {
25172 long nr; 24571 long nr;
25173@@ -937,6 +957,9 @@ static ssize_t environ_read(struct file 24572@@ -938,6 +958,9 @@ static ssize_t environ_read(struct file
25174 if (!task) 24573 if (!task)
25175 goto out_no_task; 24574 goto out_no_task;
25176 24575
@@ -25180,7 +24579,7 @@ diff -urNp linux-2.6.29.6/fs/proc/base.c linux-2.6.29.6/fs/proc/base.c
25180 if (!ptrace_may_access(task, PTRACE_MODE_READ)) 24579 if (!ptrace_may_access(task, PTRACE_MODE_READ))
25181 goto out; 24580 goto out;
25182 24581
25183@@ -1440,7 +1463,11 @@ static struct inode *proc_pid_make_inode 24582@@ -1441,7 +1464,11 @@ static struct inode *proc_pid_make_inode
25184 rcu_read_lock(); 24583 rcu_read_lock();
25185 cred = __task_cred(task); 24584 cred = __task_cred(task);
25186 inode->i_uid = cred->euid; 24585 inode->i_uid = cred->euid;
@@ -25192,7 +24591,7 @@ diff -urNp linux-2.6.29.6/fs/proc/base.c linux-2.6.29.6/fs/proc/base.c
25192 rcu_read_unlock(); 24591 rcu_read_unlock();
25193 } 24592 }
25194 security_task_to_inode(task, inode); 24593 security_task_to_inode(task, inode);
25195@@ -1458,6 +1485,9 @@ static int pid_getattr(struct vfsmount * 24594@@ -1459,6 +1486,9 @@ static int pid_getattr(struct vfsmount *
25196 struct inode *inode = dentry->d_inode; 24595 struct inode *inode = dentry->d_inode;
25197 struct task_struct *task; 24596 struct task_struct *task;
25198 const struct cred *cred; 24597 const struct cred *cred;
@@ -25202,7 +24601,7 @@ diff -urNp linux-2.6.29.6/fs/proc/base.c linux-2.6.29.6/fs/proc/base.c
25202 24601
25203 generic_fillattr(inode, stat); 24602 generic_fillattr(inode, stat);
25204 24603
25205@@ -1465,12 +1495,34 @@ static int pid_getattr(struct vfsmount * 24604@@ -1466,12 +1496,34 @@ static int pid_getattr(struct vfsmount *
25206 stat->uid = 0; 24605 stat->uid = 0;
25207 stat->gid = 0; 24606 stat->gid = 0;
25208 task = pid_task(proc_pid(inode), PIDTYPE_PID); 24607 task = pid_task(proc_pid(inode), PIDTYPE_PID);
@@ -25238,7 +24637,7 @@ diff -urNp linux-2.6.29.6/fs/proc/base.c linux-2.6.29.6/fs/proc/base.c
25238 } 24637 }
25239 } 24638 }
25240 rcu_read_unlock(); 24639 rcu_read_unlock();
25241@@ -1502,11 +1554,20 @@ static int pid_revalidate(struct dentry 24640@@ -1503,11 +1555,20 @@ static int pid_revalidate(struct dentry
25242 24641
25243 if (task) { 24642 if (task) {
25244 if ((inode->i_mode == (S_IFDIR|S_IRUGO|S_IXUGO)) || 24643 if ((inode->i_mode == (S_IFDIR|S_IRUGO|S_IXUGO)) ||
@@ -25259,7 +24658,7 @@ diff -urNp linux-2.6.29.6/fs/proc/base.c linux-2.6.29.6/fs/proc/base.c
25259 rcu_read_unlock(); 24658 rcu_read_unlock();
25260 } else { 24659 } else {
25261 inode->i_uid = 0; 24660 inode->i_uid = 0;
25262@@ -1627,7 +1688,8 @@ static int proc_fd_info(struct inode *in 24661@@ -1628,7 +1689,8 @@ static int proc_fd_info(struct inode *in
25263 int fd = proc_fd(inode); 24662 int fd = proc_fd(inode);
25264 24663
25265 if (task) { 24664 if (task) {
@@ -25269,7 +24668,7 @@ diff -urNp linux-2.6.29.6/fs/proc/base.c linux-2.6.29.6/fs/proc/base.c
25269 put_task_struct(task); 24668 put_task_struct(task);
25270 } 24669 }
25271 if (files) { 24670 if (files) {
25272@@ -1879,12 +1941,22 @@ static const struct file_operations proc 24671@@ -1880,12 +1942,22 @@ static const struct file_operations proc
25273 static int proc_fd_permission(struct inode *inode, int mask) 24672 static int proc_fd_permission(struct inode *inode, int mask)
25274 { 24673 {
25275 int rv; 24674 int rv;
@@ -25294,7 +24693,7 @@ diff -urNp linux-2.6.29.6/fs/proc/base.c linux-2.6.29.6/fs/proc/base.c
25294 return rv; 24693 return rv;
25295 } 24694 }
25296 24695
25297@@ -1993,6 +2065,9 @@ static struct dentry *proc_pident_lookup 24696@@ -1994,6 +2066,9 @@ static struct dentry *proc_pident_lookup
25298 if (!task) 24697 if (!task)
25299 goto out_no_task; 24698 goto out_no_task;
25300 24699
@@ -25304,7 +24703,7 @@ diff -urNp linux-2.6.29.6/fs/proc/base.c linux-2.6.29.6/fs/proc/base.c
25304 /* 24703 /*
25305 * Yes, it does not scale. And it should not. Don't add 24704 * Yes, it does not scale. And it should not. Don't add
25306 * new entries into /proc/<tgid>/ without very good reasons. 24705 * new entries into /proc/<tgid>/ without very good reasons.
25307@@ -2037,6 +2112,9 @@ static int proc_pident_readdir(struct fi 24706@@ -2038,6 +2113,9 @@ static int proc_pident_readdir(struct fi
25308 if (!task) 24707 if (!task)
25309 goto out_no_task; 24708 goto out_no_task;
25310 24709
@@ -25314,7 +24713,7 @@ diff -urNp linux-2.6.29.6/fs/proc/base.c linux-2.6.29.6/fs/proc/base.c
25314 ret = 0; 24713 ret = 0;
25315 i = filp->f_pos; 24714 i = filp->f_pos;
25316 switch (i) { 24715 switch (i) {
25317@@ -2397,6 +2475,9 @@ static struct dentry *proc_base_lookup(s 24716@@ -2398,6 +2476,9 @@ static struct dentry *proc_base_lookup(s
25318 if (p > last) 24717 if (p > last)
25319 goto out; 24718 goto out;
25320 24719
@@ -25324,7 +24723,7 @@ diff -urNp linux-2.6.29.6/fs/proc/base.c linux-2.6.29.6/fs/proc/base.c
25324 error = proc_base_instantiate(dir, dentry, task, p); 24723 error = proc_base_instantiate(dir, dentry, task, p);
25325 24724
25326 out: 24725 out:
25327@@ -2483,7 +2564,7 @@ static const struct pid_entry tgid_base_ 24726@@ -2484,7 +2565,7 @@ static const struct pid_entry tgid_base_
25328 #ifdef CONFIG_SCHED_DEBUG 24727 #ifdef CONFIG_SCHED_DEBUG
25329 REG("sched", S_IRUGO|S_IWUSR, proc_pid_sched_operations), 24728 REG("sched", S_IRUGO|S_IWUSR, proc_pid_sched_operations),
25330 #endif 24729 #endif
@@ -25333,7 +24732,7 @@ diff -urNp linux-2.6.29.6/fs/proc/base.c linux-2.6.29.6/fs/proc/base.c
25333 INF("syscall", S_IRUSR, proc_pid_syscall), 24732 INF("syscall", S_IRUSR, proc_pid_syscall),
25334 #endif 24733 #endif
25335 INF("cmdline", S_IRUGO, proc_pid_cmdline), 24734 INF("cmdline", S_IRUGO, proc_pid_cmdline),
25336@@ -2511,7 +2592,7 @@ static const struct pid_entry tgid_base_ 24735@@ -2512,7 +2593,7 @@ static const struct pid_entry tgid_base_
25337 #ifdef CONFIG_KALLSYMS 24736 #ifdef CONFIG_KALLSYMS
25338 INF("wchan", S_IRUGO, proc_pid_wchan), 24737 INF("wchan", S_IRUGO, proc_pid_wchan),
25339 #endif 24738 #endif
@@ -25342,7 +24741,7 @@ diff -urNp linux-2.6.29.6/fs/proc/base.c linux-2.6.29.6/fs/proc/base.c
25342 ONE("stack", S_IRUSR, proc_pid_stack), 24741 ONE("stack", S_IRUSR, proc_pid_stack),
25343 #endif 24742 #endif
25344 #ifdef CONFIG_SCHEDSTATS 24743 #ifdef CONFIG_SCHEDSTATS
25345@@ -2541,6 +2622,9 @@ static const struct pid_entry tgid_base_ 24744@@ -2542,6 +2623,9 @@ static const struct pid_entry tgid_base_
25346 #ifdef CONFIG_TASK_IO_ACCOUNTING 24745 #ifdef CONFIG_TASK_IO_ACCOUNTING
25347 INF("io", S_IRUGO, proc_tgid_io_accounting), 24746 INF("io", S_IRUGO, proc_tgid_io_accounting),
25348 #endif 24747 #endif
@@ -25352,7 +24751,7 @@ diff -urNp linux-2.6.29.6/fs/proc/base.c linux-2.6.29.6/fs/proc/base.c
25352 }; 24751 };
25353 24752
25354 static int proc_tgid_base_readdir(struct file * filp, 24753 static int proc_tgid_base_readdir(struct file * filp,
25355@@ -2670,7 +2754,14 @@ static struct dentry *proc_pid_instantia 24754@@ -2671,7 +2755,14 @@ static struct dentry *proc_pid_instantia
25356 if (!inode) 24755 if (!inode)
25357 goto out; 24756 goto out;
25358 24757
@@ -25367,7 +24766,7 @@ diff -urNp linux-2.6.29.6/fs/proc/base.c linux-2.6.29.6/fs/proc/base.c
25367 inode->i_op = &proc_tgid_base_inode_operations; 24766 inode->i_op = &proc_tgid_base_inode_operations;
25368 inode->i_fop = &proc_tgid_base_operations; 24767 inode->i_fop = &proc_tgid_base_operations;
25369 inode->i_flags|=S_IMMUTABLE; 24768 inode->i_flags|=S_IMMUTABLE;
25370@@ -2712,7 +2803,11 @@ struct dentry *proc_pid_lookup(struct in 24769@@ -2713,7 +2804,11 @@ struct dentry *proc_pid_lookup(struct in
25371 if (!task) 24770 if (!task)
25372 goto out; 24771 goto out;
25373 24772
@@ -25379,7 +24778,7 @@ diff -urNp linux-2.6.29.6/fs/proc/base.c linux-2.6.29.6/fs/proc/base.c
25379 put_task_struct(task); 24778 put_task_struct(task);
25380 out: 24779 out:
25381 return result; 24780 return result;
25382@@ -2777,6 +2872,10 @@ int proc_pid_readdir(struct file * filp, 24781@@ -2778,6 +2873,10 @@ int proc_pid_readdir(struct file * filp,
25383 { 24782 {
25384 unsigned int nr = filp->f_pos - FIRST_PROCESS_ENTRY; 24783 unsigned int nr = filp->f_pos - FIRST_PROCESS_ENTRY;
25385 struct task_struct *reaper = get_proc_task(filp->f_path.dentry->d_inode); 24784 struct task_struct *reaper = get_proc_task(filp->f_path.dentry->d_inode);
@@ -25390,7 +24789,7 @@ diff -urNp linux-2.6.29.6/fs/proc/base.c linux-2.6.29.6/fs/proc/base.c
25390 struct tgid_iter iter; 24789 struct tgid_iter iter;
25391 struct pid_namespace *ns; 24790 struct pid_namespace *ns;
25392 24791
25393@@ -2795,6 +2894,20 @@ int proc_pid_readdir(struct file * filp, 24792@@ -2796,6 +2895,20 @@ int proc_pid_readdir(struct file * filp,
25394 for (iter = next_tgid(ns, iter); 24793 for (iter = next_tgid(ns, iter);
25395 iter.task; 24794 iter.task;
25396 iter.tgid += 1, iter = next_tgid(ns, iter)) { 24795 iter.tgid += 1, iter = next_tgid(ns, iter)) {
@@ -25411,7 +24810,7 @@ diff -urNp linux-2.6.29.6/fs/proc/base.c linux-2.6.29.6/fs/proc/base.c
25411 filp->f_pos = iter.tgid + TGID_OFFSET; 24810 filp->f_pos = iter.tgid + TGID_OFFSET;
25412 if (proc_pid_fill_cache(filp, dirent, filldir, iter) < 0) { 24811 if (proc_pid_fill_cache(filp, dirent, filldir, iter) < 0) {
25413 put_task_struct(iter.task); 24812 put_task_struct(iter.task);
25414@@ -2822,7 +2935,7 @@ static const struct pid_entry tid_base_s 24813@@ -2823,7 +2936,7 @@ static const struct pid_entry tid_base_s
25415 #ifdef CONFIG_SCHED_DEBUG 24814 #ifdef CONFIG_SCHED_DEBUG
25416 REG("sched", S_IRUGO|S_IWUSR, proc_pid_sched_operations), 24815 REG("sched", S_IRUGO|S_IWUSR, proc_pid_sched_operations),
25417 #endif 24816 #endif
@@ -25420,7 +24819,7 @@ diff -urNp linux-2.6.29.6/fs/proc/base.c linux-2.6.29.6/fs/proc/base.c
25420 INF("syscall", S_IRUSR, proc_pid_syscall), 24819 INF("syscall", S_IRUSR, proc_pid_syscall),
25421 #endif 24820 #endif
25422 INF("cmdline", S_IRUGO, proc_pid_cmdline), 24821 INF("cmdline", S_IRUGO, proc_pid_cmdline),
25423@@ -2849,7 +2962,7 @@ static const struct pid_entry tid_base_s 24822@@ -2850,7 +2963,7 @@ static const struct pid_entry tid_base_s
25424 #ifdef CONFIG_KALLSYMS 24823 #ifdef CONFIG_KALLSYMS
25425 INF("wchan", S_IRUGO, proc_pid_wchan), 24824 INF("wchan", S_IRUGO, proc_pid_wchan),
25426 #endif 24825 #endif
@@ -25429,9 +24828,9 @@ diff -urNp linux-2.6.29.6/fs/proc/base.c linux-2.6.29.6/fs/proc/base.c
25429 ONE("stack", S_IRUSR, proc_pid_stack), 24828 ONE("stack", S_IRUSR, proc_pid_stack),
25430 #endif 24829 #endif
25431 #ifdef CONFIG_SCHEDSTATS 24830 #ifdef CONFIG_SCHEDSTATS
25432diff -urNp linux-2.6.29.6/fs/proc/cmdline.c linux-2.6.29.6/fs/proc/cmdline.c 24831diff -urNp linux-2.6.30.4/fs/proc/cmdline.c linux-2.6.30.4/fs/proc/cmdline.c
25433--- linux-2.6.29.6/fs/proc/cmdline.c 2009-07-02 19:41:20.000000000 -0400 24832--- linux-2.6.30.4/fs/proc/cmdline.c 2009-07-24 17:47:51.000000000 -0400
25434+++ linux-2.6.29.6/fs/proc/cmdline.c 2009-07-23 17:34:32.166858420 -0400 24833+++ linux-2.6.30.4/fs/proc/cmdline.c 2009-07-30 11:10:49.303499047 -0400
25435@@ -23,7 +23,11 @@ static const struct file_operations cmdl 24834@@ -23,7 +23,11 @@ static const struct file_operations cmdl
25436 24835
25437 static int __init proc_cmdline_init(void) 24836 static int __init proc_cmdline_init(void)
@@ -25444,9 +24843,9 @@ diff -urNp linux-2.6.29.6/fs/proc/cmdline.c linux-2.6.29.6/fs/proc/cmdline.c
25444 return 0; 24843 return 0;
25445 } 24844 }
25446 module_init(proc_cmdline_init); 24845 module_init(proc_cmdline_init);
25447diff -urNp linux-2.6.29.6/fs/proc/devices.c linux-2.6.29.6/fs/proc/devices.c 24846diff -urNp linux-2.6.30.4/fs/proc/devices.c linux-2.6.30.4/fs/proc/devices.c
25448--- linux-2.6.29.6/fs/proc/devices.c 2009-07-02 19:41:20.000000000 -0400 24847--- linux-2.6.30.4/fs/proc/devices.c 2009-07-24 17:47:51.000000000 -0400
25449+++ linux-2.6.29.6/fs/proc/devices.c 2009-07-23 17:34:32.166858420 -0400 24848+++ linux-2.6.30.4/fs/proc/devices.c 2009-07-30 11:10:49.304300221 -0400
25450@@ -64,7 +64,11 @@ static const struct file_operations proc 24849@@ -64,7 +64,11 @@ static const struct file_operations proc
25451 24850
25452 static int __init proc_devices_init(void) 24851 static int __init proc_devices_init(void)
@@ -25459,10 +24858,10 @@ diff -urNp linux-2.6.29.6/fs/proc/devices.c linux-2.6.29.6/fs/proc/devices.c
25459 return 0; 24858 return 0;
25460 } 24859 }
25461 module_init(proc_devices_init); 24860 module_init(proc_devices_init);
25462diff -urNp linux-2.6.29.6/fs/proc/inode.c linux-2.6.29.6/fs/proc/inode.c 24861diff -urNp linux-2.6.30.4/fs/proc/inode.c linux-2.6.30.4/fs/proc/inode.c
25463--- linux-2.6.29.6/fs/proc/inode.c 2009-07-02 19:41:20.000000000 -0400 24862--- linux-2.6.30.4/fs/proc/inode.c 2009-07-24 17:47:51.000000000 -0400
25464+++ linux-2.6.29.6/fs/proc/inode.c 2009-07-23 17:34:32.166858420 -0400 24863+++ linux-2.6.30.4/fs/proc/inode.c 2009-07-30 11:10:49.304300221 -0400
25465@@ -463,7 +463,11 @@ struct inode *proc_get_inode(struct supe 24864@@ -457,7 +457,11 @@ struct inode *proc_get_inode(struct supe
25466 if (de->mode) { 24865 if (de->mode) {
25467 inode->i_mode = de->mode; 24866 inode->i_mode = de->mode;
25468 inode->i_uid = de->uid; 24867 inode->i_uid = de->uid;
@@ -25474,9 +24873,9 @@ diff -urNp linux-2.6.29.6/fs/proc/inode.c linux-2.6.29.6/fs/proc/inode.c
25474 } 24873 }
25475 if (de->size) 24874 if (de->size)
25476 inode->i_size = de->size; 24875 inode->i_size = de->size;
25477diff -urNp linux-2.6.29.6/fs/proc/internal.h linux-2.6.29.6/fs/proc/internal.h 24876diff -urNp linux-2.6.30.4/fs/proc/internal.h linux-2.6.30.4/fs/proc/internal.h
25478--- linux-2.6.29.6/fs/proc/internal.h 2009-07-02 19:41:20.000000000 -0400 24877--- linux-2.6.30.4/fs/proc/internal.h 2009-07-24 17:47:51.000000000 -0400
25479+++ linux-2.6.29.6/fs/proc/internal.h 2009-07-23 17:34:32.166858420 -0400 24878+++ linux-2.6.30.4/fs/proc/internal.h 2009-07-30 11:10:49.305386482 -0400
25480@@ -51,6 +51,9 @@ extern int proc_pid_status(struct seq_fi 24879@@ -51,6 +51,9 @@ extern int proc_pid_status(struct seq_fi
25481 struct pid *pid, struct task_struct *task); 24880 struct pid *pid, struct task_struct *task);
25482 extern int proc_pid_statm(struct seq_file *m, struct pid_namespace *ns, 24881 extern int proc_pid_statm(struct seq_file *m, struct pid_namespace *ns,
@@ -25487,9 +24886,9 @@ diff -urNp linux-2.6.29.6/fs/proc/internal.h linux-2.6.29.6/fs/proc/internal.h
25487 extern loff_t mem_lseek(struct file *file, loff_t offset, int orig); 24886 extern loff_t mem_lseek(struct file *file, loff_t offset, int orig);
25488 24887
25489 extern const struct file_operations proc_maps_operations; 24888 extern const struct file_operations proc_maps_operations;
25490diff -urNp linux-2.6.29.6/fs/proc/Kconfig linux-2.6.29.6/fs/proc/Kconfig 24889diff -urNp linux-2.6.30.4/fs/proc/Kconfig linux-2.6.30.4/fs/proc/Kconfig
25491--- linux-2.6.29.6/fs/proc/Kconfig 2009-07-02 19:41:20.000000000 -0400 24890--- linux-2.6.30.4/fs/proc/Kconfig 2009-07-24 17:47:51.000000000 -0400
25492+++ linux-2.6.29.6/fs/proc/Kconfig 2009-07-23 17:34:32.166858420 -0400 24891+++ linux-2.6.30.4/fs/proc/Kconfig 2009-07-30 11:10:49.305386482 -0400
25493@@ -30,12 +30,12 @@ config PROC_FS 24892@@ -30,12 +30,12 @@ config PROC_FS
25494 24893
25495 config PROC_KCORE 24894 config PROC_KCORE
@@ -25517,9 +24916,9 @@ diff -urNp linux-2.6.29.6/fs/proc/Kconfig linux-2.6.29.6/fs/proc/Kconfig
25517 bool "Enable /proc page monitoring" if EMBEDDED 24916 bool "Enable /proc page monitoring" if EMBEDDED
25518 help 24917 help
25519 Various /proc files exist to monitor process memory utilization: 24918 Various /proc files exist to monitor process memory utilization:
25520diff -urNp linux-2.6.29.6/fs/proc/kcore.c linux-2.6.29.6/fs/proc/kcore.c 24919diff -urNp linux-2.6.30.4/fs/proc/kcore.c linux-2.6.30.4/fs/proc/kcore.c
25521--- linux-2.6.29.6/fs/proc/kcore.c 2009-07-02 19:41:20.000000000 -0400 24920--- linux-2.6.30.4/fs/proc/kcore.c 2009-07-24 17:47:51.000000000 -0400
25522+++ linux-2.6.29.6/fs/proc/kcore.c 2009-07-23 17:34:32.167803575 -0400 24921+++ linux-2.6.30.4/fs/proc/kcore.c 2009-07-30 11:10:49.306366172 -0400
25523@@ -404,10 +404,12 @@ read_kcore(struct file *file, char __use 24922@@ -404,10 +404,12 @@ read_kcore(struct file *file, char __use
25524 24923
25525 static int __init proc_kcore_init(void) 24924 static int __init proc_kcore_init(void)
@@ -25533,9 +24932,9 @@ diff -urNp linux-2.6.29.6/fs/proc/kcore.c linux-2.6.29.6/fs/proc/kcore.c
25533 return 0; 24932 return 0;
25534 } 24933 }
25535 module_init(proc_kcore_init); 24934 module_init(proc_kcore_init);
25536diff -urNp linux-2.6.29.6/fs/proc/nommu.c linux-2.6.29.6/fs/proc/nommu.c 24935diff -urNp linux-2.6.30.4/fs/proc/nommu.c linux-2.6.30.4/fs/proc/nommu.c
25537--- linux-2.6.29.6/fs/proc/nommu.c 2009-07-02 19:41:20.000000000 -0400 24936--- linux-2.6.30.4/fs/proc/nommu.c 2009-07-24 17:47:51.000000000 -0400
25538+++ linux-2.6.29.6/fs/proc/nommu.c 2009-07-23 18:40:27.471265103 -0400 24937+++ linux-2.6.30.4/fs/proc/nommu.c 2009-07-30 09:48:10.096509014 -0400
25539@@ -67,7 +67,7 @@ static int nommu_region_show(struct seq_ 24938@@ -67,7 +67,7 @@ static int nommu_region_show(struct seq_
25540 if (len < 1) 24939 if (len < 1)
25541 len = 1; 24940 len = 1;
@@ -25554,9 +24953,9 @@ diff -urNp linux-2.6.29.6/fs/proc/nommu.c linux-2.6.29.6/fs/proc/nommu.c
25554 .start = nommu_region_list_start, 24953 .start = nommu_region_list_start,
25555 .next = nommu_region_list_next, 24954 .next = nommu_region_list_next,
25556 .stop = nommu_region_list_stop, 24955 .stop = nommu_region_list_stop,
25557diff -urNp linux-2.6.29.6/fs/proc/proc_net.c linux-2.6.29.6/fs/proc/proc_net.c 24956diff -urNp linux-2.6.30.4/fs/proc/proc_net.c linux-2.6.30.4/fs/proc/proc_net.c
25558--- linux-2.6.29.6/fs/proc/proc_net.c 2009-07-02 19:41:20.000000000 -0400 24957--- linux-2.6.30.4/fs/proc/proc_net.c 2009-07-24 17:47:51.000000000 -0400
25559+++ linux-2.6.29.6/fs/proc/proc_net.c 2009-07-23 17:34:32.167803575 -0400 24958+++ linux-2.6.30.4/fs/proc/proc_net.c 2009-07-30 11:10:49.306366172 -0400
25560@@ -104,6 +104,17 @@ static struct net *get_proc_task_net(str 24959@@ -104,6 +104,17 @@ static struct net *get_proc_task_net(str
25561 struct task_struct *task; 24960 struct task_struct *task;
25562 struct nsproxy *ns; 24961 struct nsproxy *ns;
@@ -25575,20 +24974,18 @@ diff -urNp linux-2.6.29.6/fs/proc/proc_net.c linux-2.6.29.6/fs/proc/proc_net.c
25575 24974
25576 rcu_read_lock(); 24975 rcu_read_lock();
25577 task = pid_task(proc_pid(dir), PIDTYPE_PID); 24976 task = pid_task(proc_pid(dir), PIDTYPE_PID);
25578diff -urNp linux-2.6.29.6/fs/proc/proc_sysctl.c linux-2.6.29.6/fs/proc/proc_sysctl.c 24977diff -urNp linux-2.6.30.4/fs/proc/proc_sysctl.c linux-2.6.30.4/fs/proc/proc_sysctl.c
25579--- linux-2.6.29.6/fs/proc/proc_sysctl.c 2009-07-02 19:41:20.000000000 -0400 24978--- linux-2.6.30.4/fs/proc/proc_sysctl.c 2009-07-24 17:47:51.000000000 -0400
25580+++ linux-2.6.29.6/fs/proc/proc_sysctl.c 2009-07-23 19:28:12.262381898 -0400 24979+++ linux-2.6.30.4/fs/proc/proc_sysctl.c 2009-07-30 11:10:49.307381327 -0400
25581@@ -7,7 +7,9 @@ 24980@@ -7,6 +7,8 @@
25582 #include <linux/security.h> 24981 #include <linux/security.h>
25583 #include "internal.h" 24982 #include "internal.h"
25584 24983
25585-static struct dentry_operations proc_sys_dentry_operations;
25586+extern __u32 gr_handle_sysctl(const struct ctl_table *table, const int op); 24984+extern __u32 gr_handle_sysctl(const struct ctl_table *table, const int op);
25587+ 24985+
25588+static const struct dentry_operations proc_sys_dentry_operations; 24986 static const struct dentry_operations proc_sys_dentry_operations;
25589 static const struct file_operations proc_sys_file_operations; 24987 static const struct file_operations proc_sys_file_operations;
25590 static const struct inode_operations proc_sys_inode_operations; 24988 static const struct inode_operations proc_sys_inode_operations;
25591 static const struct file_operations proc_sys_dir_file_operations;
25592@@ -109,6 +111,9 @@ static struct dentry *proc_sys_lookup(st 24989@@ -109,6 +111,9 @@ static struct dentry *proc_sys_lookup(st
25593 if (!p) 24990 if (!p)
25594 goto out; 24991 goto out;
@@ -25619,18 +25016,9 @@ diff -urNp linux-2.6.29.6/fs/proc/proc_sysctl.c linux-2.6.29.6/fs/proc/proc_sysc
25619 generic_fillattr(inode, stat); 25016 generic_fillattr(inode, stat);
25620 if (table) 25017 if (table)
25621 stat->mode = (stat->mode & S_IFMT) | table->mode; 25018 stat->mode = (stat->mode & S_IFMT) | table->mode;
25622@@ -396,7 +407,7 @@ static int proc_sys_compare(struct dentr 25019diff -urNp linux-2.6.30.4/fs/proc/root.c linux-2.6.30.4/fs/proc/root.c
25623 return !sysctl_is_seen(PROC_I(dentry->d_inode)->sysctl); 25020--- linux-2.6.30.4/fs/proc/root.c 2009-07-24 17:47:51.000000000 -0400
25624 } 25021+++ linux-2.6.30.4/fs/proc/root.c 2009-07-30 11:10:49.307381327 -0400
25625
25626-static struct dentry_operations proc_sys_dentry_operations = {
25627+static const struct dentry_operations proc_sys_dentry_operations = {
25628 .d_revalidate = proc_sys_revalidate,
25629 .d_delete = proc_sys_delete,
25630 .d_compare = proc_sys_compare,
25631diff -urNp linux-2.6.29.6/fs/proc/root.c linux-2.6.29.6/fs/proc/root.c
25632--- linux-2.6.29.6/fs/proc/root.c 2009-07-02 19:41:20.000000000 -0400
25633+++ linux-2.6.29.6/fs/proc/root.c 2009-07-23 17:34:32.167803575 -0400
25634@@ -101,6 +101,11 @@ static struct file_system_type proc_fs_t 25022@@ -101,6 +101,11 @@ static struct file_system_type proc_fs_t
25635 .kill_sb = proc_kill_sb, 25023 .kill_sb = proc_kill_sb,
25636 }; 25024 };
@@ -25665,9 +25053,9 @@ diff -urNp linux-2.6.29.6/fs/proc/root.c linux-2.6.29.6/fs/proc/root.c
25665 } 25053 }
25666 25054
25667 static int proc_root_getattr(struct vfsmount *mnt, struct dentry *dentry, struct kstat *stat 25055 static int proc_root_getattr(struct vfsmount *mnt, struct dentry *dentry, struct kstat *stat
25668diff -urNp linux-2.6.29.6/fs/proc/task_mmu.c linux-2.6.29.6/fs/proc/task_mmu.c 25056diff -urNp linux-2.6.30.4/fs/proc/task_mmu.c linux-2.6.30.4/fs/proc/task_mmu.c
25669--- linux-2.6.29.6/fs/proc/task_mmu.c 2009-07-02 19:41:20.000000000 -0400 25057--- linux-2.6.30.4/fs/proc/task_mmu.c 2009-07-24 17:47:51.000000000 -0400
25670+++ linux-2.6.29.6/fs/proc/task_mmu.c 2009-07-23 17:34:32.168754984 -0400 25058+++ linux-2.6.30.4/fs/proc/task_mmu.c 2009-07-30 11:27:12.967439752 -0400
25671@@ -46,15 +46,26 @@ void task_mem(struct seq_file *m, struct 25059@@ -46,15 +46,26 @@ void task_mem(struct seq_file *m, struct
25672 "VmStk:\t%8lu kB\n" 25060 "VmStk:\t%8lu kB\n"
25673 "VmExe:\t%8lu kB\n" 25061 "VmExe:\t%8lu kB\n"
@@ -25711,7 +25099,7 @@ diff -urNp linux-2.6.29.6/fs/proc/task_mmu.c linux-2.6.29.6/fs/proc/task_mmu.c
25711 static void show_map_vma(struct seq_file *m, struct vm_area_struct *vma) 25099 static void show_map_vma(struct seq_file *m, struct vm_area_struct *vma)
25712 { 25100 {
25713 struct mm_struct *mm = vma->vm_mm; 25101 struct mm_struct *mm = vma->vm_mm;
25714@@ -214,13 +231,22 @@ static void show_map_vma(struct seq_file 25102@@ -216,13 +233,22 @@ static void show_map_vma(struct seq_file
25715 } 25103 }
25716 25104
25717 seq_printf(m, "%08lx-%08lx %c%c%c%c %08llx %02x:%02x %lu %n", 25105 seq_printf(m, "%08lx-%08lx %c%c%c%c %08llx %02x:%02x %lu %n",
@@ -25727,14 +25115,14 @@ diff -urNp linux-2.6.29.6/fs/proc/task_mmu.c linux-2.6.29.6/fs/proc/task_mmu.c
25727 flags & VM_EXEC ? 'x' : '-', 25115 flags & VM_EXEC ? 'x' : '-',
25728 flags & VM_MAYSHARE ? 's' : 'p', 25116 flags & VM_MAYSHARE ? 's' : 'p',
25729+#ifdef CONFIG_GRKERNSEC_PROC_MEMMAP 25117+#ifdef CONFIG_GRKERNSEC_PROC_MEMMAP
25730+ PAX_RAND_FLAGS(mm) ? 0UL : ((loff_t)vma->vm_pgoff) << PAGE_SHIFT, 25118+ PAX_RAND_FLAGS(mm) ? 0UL : pgoff,
25731+#else 25119+#else
25732 ((loff_t)vma->vm_pgoff) << PAGE_SHIFT, 25120 pgoff,
25733+#endif 25121+#endif
25734 MAJOR(dev), MINOR(dev), ino, &len); 25122 MAJOR(dev), MINOR(dev), ino, &len);
25735 25123
25736 /* 25124 /*
25737@@ -229,16 +255,16 @@ static void show_map_vma(struct seq_file 25125@@ -231,16 +257,16 @@ static void show_map_vma(struct seq_file
25738 */ 25126 */
25739 if (file) { 25127 if (file) {
25740 pad_len_spaces(m, len); 25128 pad_len_spaces(m, len);
@@ -25756,7 +25144,7 @@ diff -urNp linux-2.6.29.6/fs/proc/task_mmu.c linux-2.6.29.6/fs/proc/task_mmu.c
25756 name = "[stack]"; 25144 name = "[stack]";
25757 } 25145 }
25758 } else { 25146 } else {
25759@@ -381,9 +407,16 @@ static int show_smap(struct seq_file *m, 25147@@ -383,9 +409,16 @@ static int show_smap(struct seq_file *m,
25760 }; 25148 };
25761 25149
25762 memset(&mss, 0, sizeof mss); 25150 memset(&mss, 0, sizeof mss);
@@ -25776,7 +25164,7 @@ diff -urNp linux-2.6.29.6/fs/proc/task_mmu.c linux-2.6.29.6/fs/proc/task_mmu.c
25776 25164
25777 show_map_vma(m, vma); 25165 show_map_vma(m, vma);
25778 25166
25779@@ -399,7 +432,11 @@ static int show_smap(struct seq_file *m, 25167@@ -401,7 +434,11 @@ static int show_smap(struct seq_file *m,
25780 "Swap: %8lu kB\n" 25168 "Swap: %8lu kB\n"
25781 "KernelPageSize: %8lu kB\n" 25169 "KernelPageSize: %8lu kB\n"
25782 "MMUPageSize: %8lu kB\n", 25170 "MMUPageSize: %8lu kB\n",
@@ -25788,10 +25176,10 @@ diff -urNp linux-2.6.29.6/fs/proc/task_mmu.c linux-2.6.29.6/fs/proc/task_mmu.c
25788 mss.resident >> 10, 25176 mss.resident >> 10,
25789 (unsigned long)(mss.pss >> (10 + PSS_SHIFT)), 25177 (unsigned long)(mss.pss >> (10 + PSS_SHIFT)),
25790 mss.shared_clean >> 10, 25178 mss.shared_clean >> 10,
25791diff -urNp linux-2.6.29.6/fs/proc/task_nommu.c linux-2.6.29.6/fs/proc/task_nommu.c 25179diff -urNp linux-2.6.30.4/fs/proc/task_nommu.c linux-2.6.30.4/fs/proc/task_nommu.c
25792--- linux-2.6.29.6/fs/proc/task_nommu.c 2009-07-02 19:41:20.000000000 -0400 25180--- linux-2.6.30.4/fs/proc/task_nommu.c 2009-07-24 17:47:51.000000000 -0400
25793+++ linux-2.6.29.6/fs/proc/task_nommu.c 2009-07-23 17:34:32.168754984 -0400 25181+++ linux-2.6.30.4/fs/proc/task_nommu.c 2009-07-30 09:48:10.096509014 -0400
25794@@ -49,7 +49,7 @@ void task_mem(struct seq_file *m, struct 25182@@ -50,7 +50,7 @@ void task_mem(struct seq_file *m, struct
25795 else 25183 else
25796 bytes += kobjsize(mm); 25184 bytes += kobjsize(mm);
25797 25185
@@ -25800,7 +25188,7 @@ diff -urNp linux-2.6.29.6/fs/proc/task_nommu.c linux-2.6.29.6/fs/proc/task_nommu
25800 sbytes += kobjsize(current->fs); 25188 sbytes += kobjsize(current->fs);
25801 else 25189 else
25802 bytes += kobjsize(current->fs); 25190 bytes += kobjsize(current->fs);
25803@@ -151,7 +151,7 @@ static int nommu_vma_show(struct seq_fil 25191@@ -154,7 +154,7 @@ static int nommu_vma_show(struct seq_fil
25804 if (len < 1) 25192 if (len < 1)
25805 len = 1; 25193 len = 1;
25806 seq_printf(m, "%*c", len, ' '); 25194 seq_printf(m, "%*c", len, ' ');
@@ -25809,9 +25197,9 @@ diff -urNp linux-2.6.29.6/fs/proc/task_nommu.c linux-2.6.29.6/fs/proc/task_nommu
25809 } 25197 }
25810 25198
25811 seq_putc(m, '\n'); 25199 seq_putc(m, '\n');
25812diff -urNp linux-2.6.29.6/fs/readdir.c linux-2.6.29.6/fs/readdir.c 25200diff -urNp linux-2.6.30.4/fs/readdir.c linux-2.6.30.4/fs/readdir.c
25813--- linux-2.6.29.6/fs/readdir.c 2009-07-02 19:41:20.000000000 -0400 25201--- linux-2.6.30.4/fs/readdir.c 2009-07-24 17:47:51.000000000 -0400
25814+++ linux-2.6.29.6/fs/readdir.c 2009-07-23 17:34:32.168754984 -0400 25202+++ linux-2.6.30.4/fs/readdir.c 2009-07-30 11:10:49.318449083 -0400
25815@@ -16,6 +16,7 @@ 25203@@ -16,6 +16,7 @@
25816 #include <linux/security.h> 25204 #include <linux/security.h>
25817 #include <linux/syscalls.h> 25205 #include <linux/syscalls.h>
@@ -25901,10 +25289,10 @@ diff -urNp linux-2.6.29.6/fs/readdir.c linux-2.6.29.6/fs/readdir.c
25901 buf.count = count; 25289 buf.count = count;
25902 buf.error = 0; 25290 buf.error = 0;
25903 25291
25904diff -urNp linux-2.6.29.6/fs/reiserfs/do_balan.c linux-2.6.29.6/fs/reiserfs/do_balan.c 25292diff -urNp linux-2.6.30.4/fs/reiserfs/do_balan.c linux-2.6.30.4/fs/reiserfs/do_balan.c
25905--- linux-2.6.29.6/fs/reiserfs/do_balan.c 2009-07-02 19:41:20.000000000 -0400 25293--- linux-2.6.30.4/fs/reiserfs/do_balan.c 2009-07-24 17:47:51.000000000 -0400
25906+++ linux-2.6.29.6/fs/reiserfs/do_balan.c 2009-07-23 17:34:32.169708808 -0400 25294+++ linux-2.6.30.4/fs/reiserfs/do_balan.c 2009-07-30 09:48:10.096509014 -0400
25907@@ -2114,7 +2114,7 @@ void do_balance(struct tree_balance *tb, 25295@@ -2059,7 +2059,7 @@ void do_balance(struct tree_balance *tb,
25908 return; 25296 return;
25909 } 25297 }
25910 25298
@@ -25913,21 +25301,21 @@ diff -urNp linux-2.6.29.6/fs/reiserfs/do_balan.c linux-2.6.29.6/fs/reiserfs/do_b
25913 do_balance_starts(tb); 25301 do_balance_starts(tb);
25914 25302
25915 /* balance leaf returns 0 except if combining L R and S into 25303 /* balance leaf returns 0 except if combining L R and S into
25916diff -urNp linux-2.6.29.6/fs/reiserfs/xattr.c linux-2.6.29.6/fs/reiserfs/xattr.c 25304diff -urNp linux-2.6.30.4/fs/romfs/super.c linux-2.6.30.4/fs/romfs/super.c
25917--- linux-2.6.29.6/fs/reiserfs/xattr.c 2009-07-02 19:41:20.000000000 -0400 25305--- linux-2.6.30.4/fs/romfs/super.c 2009-07-24 17:47:51.000000000 -0400
25918+++ linux-2.6.29.6/fs/reiserfs/xattr.c 2009-07-23 18:40:28.566682353 -0400 25306+++ linux-2.6.30.4/fs/romfs/super.c 2009-07-30 12:07:02.769214712 -0400
25919@@ -1136,7 +1136,7 @@ xattr_lookup_poison(struct dentry *dentr 25307@@ -284,7 +284,7 @@ static const struct file_operations romf
25920 return 1; 25308 .readdir = romfs_readdir,
25921 } 25309 };
25922 25310
25923-static struct dentry_operations xattr_lookup_poison_ops = { 25311-static struct inode_operations romfs_dir_inode_operations = {
25924+static const struct dentry_operations xattr_lookup_poison_ops = { 25312+static const struct inode_operations romfs_dir_inode_operations = {
25925 .d_compare = xattr_lookup_poison, 25313 .lookup = romfs_lookup,
25926 }; 25314 };
25927 25315
25928diff -urNp linux-2.6.29.6/fs/select.c linux-2.6.29.6/fs/select.c 25316diff -urNp linux-2.6.30.4/fs/select.c linux-2.6.30.4/fs/select.c
25929--- linux-2.6.29.6/fs/select.c 2009-07-02 19:41:20.000000000 -0400 25317--- linux-2.6.30.4/fs/select.c 2009-07-24 17:47:51.000000000 -0400
25930+++ linux-2.6.29.6/fs/select.c 2009-07-23 17:34:32.169708808 -0400 25318+++ linux-2.6.30.4/fs/select.c 2009-07-30 11:10:49.324080336 -0400
25931@@ -19,6 +19,7 @@ 25319@@ -19,6 +19,7 @@
25932 #include <linux/module.h> 25320 #include <linux/module.h>
25933 #include <linux/slab.h> 25321 #include <linux/slab.h>
@@ -25944,9 +25332,9 @@ diff -urNp linux-2.6.29.6/fs/select.c linux-2.6.29.6/fs/select.c
25944 if (nfds > current->signal->rlim[RLIMIT_NOFILE].rlim_cur) 25332 if (nfds > current->signal->rlim[RLIMIT_NOFILE].rlim_cur)
25945 return -EINVAL; 25333 return -EINVAL;
25946 25334
25947diff -urNp linux-2.6.29.6/fs/seq_file.c linux-2.6.29.6/fs/seq_file.c 25335diff -urNp linux-2.6.30.4/fs/seq_file.c linux-2.6.30.4/fs/seq_file.c
25948--- linux-2.6.29.6/fs/seq_file.c 2009-07-02 19:41:20.000000000 -0400 25336--- linux-2.6.30.4/fs/seq_file.c 2009-07-24 17:47:51.000000000 -0400
25949+++ linux-2.6.29.6/fs/seq_file.c 2009-07-23 17:34:32.169708808 -0400 25337+++ linux-2.6.30.4/fs/seq_file.c 2009-07-30 11:10:49.336155631 -0400
25950@@ -76,7 +76,8 @@ static int traverse(struct seq_file *m, 25338@@ -76,7 +76,8 @@ static int traverse(struct seq_file *m,
25951 return 0; 25339 return 0;
25952 } 25340 }
@@ -25987,9 +25375,9 @@ diff -urNp linux-2.6.29.6/fs/seq_file.c linux-2.6.29.6/fs/seq_file.c
25987 if (!m->buf) 25375 if (!m->buf)
25988 goto Enomem; 25376 goto Enomem;
25989 m->count = 0; 25377 m->count = 0;
25990diff -urNp linux-2.6.29.6/fs/smbfs/symlink.c linux-2.6.29.6/fs/smbfs/symlink.c 25378diff -urNp linux-2.6.30.4/fs/smbfs/symlink.c linux-2.6.30.4/fs/smbfs/symlink.c
25991--- linux-2.6.29.6/fs/smbfs/symlink.c 2009-07-02 19:41:20.000000000 -0400 25379--- linux-2.6.30.4/fs/smbfs/symlink.c 2009-07-24 17:47:51.000000000 -0400
25992+++ linux-2.6.29.6/fs/smbfs/symlink.c 2009-07-23 17:34:32.169708808 -0400 25380+++ linux-2.6.30.4/fs/smbfs/symlink.c 2009-07-30 09:48:10.098443569 -0400
25993@@ -55,7 +55,7 @@ static void *smb_follow_link(struct dent 25381@@ -55,7 +55,7 @@ static void *smb_follow_link(struct dent
25994 25382
25995 static void smb_put_link(struct dentry *dentry, struct nameidata *nd, void *p) 25383 static void smb_put_link(struct dentry *dentry, struct nameidata *nd, void *p)
@@ -25999,9 +25387,9 @@ diff -urNp linux-2.6.29.6/fs/smbfs/symlink.c linux-2.6.29.6/fs/smbfs/symlink.c
25999 if (!IS_ERR(s)) 25387 if (!IS_ERR(s))
26000 __putname(s); 25388 __putname(s);
26001 } 25389 }
26002diff -urNp linux-2.6.29.6/fs/squashfs/super.c linux-2.6.29.6/fs/squashfs/super.c 25390diff -urNp linux-2.6.30.4/fs/squashfs/super.c linux-2.6.30.4/fs/squashfs/super.c
26003--- linux-2.6.29.6/fs/squashfs/super.c 2009-07-02 19:41:20.000000000 -0400 25391--- linux-2.6.30.4/fs/squashfs/super.c 2009-07-24 17:47:51.000000000 -0400
26004+++ linux-2.6.29.6/fs/squashfs/super.c 2009-07-23 18:40:28.577043173 -0400 25392+++ linux-2.6.30.4/fs/squashfs/super.c 2009-07-30 09:48:10.098443569 -0400
26005@@ -43,7 +43,7 @@ 25393@@ -43,7 +43,7 @@
26006 #include "squashfs.h" 25394 #include "squashfs.h"
26007 25395
@@ -26011,7 +25399,7 @@ diff -urNp linux-2.6.29.6/fs/squashfs/super.c linux-2.6.29.6/fs/squashfs/super.c
26011 25399
26012 static int supported_squashfs_filesystem(short major, short minor, short comp) 25400 static int supported_squashfs_filesystem(short major, short minor, short comp)
26013 { 25401 {
26014@@ -426,7 +426,7 @@ static struct file_system_type squashfs_ 25402@@ -439,7 +439,7 @@ static struct file_system_type squashfs_
26015 .fs_flags = FS_REQUIRES_DEV 25403 .fs_flags = FS_REQUIRES_DEV
26016 }; 25404 };
26017 25405
@@ -26020,21 +25408,30 @@ diff -urNp linux-2.6.29.6/fs/squashfs/super.c linux-2.6.29.6/fs/squashfs/super.c
26020 .alloc_inode = squashfs_alloc_inode, 25408 .alloc_inode = squashfs_alloc_inode,
26021 .destroy_inode = squashfs_destroy_inode, 25409 .destroy_inode = squashfs_destroy_inode,
26022 .statfs = squashfs_statfs, 25410 .statfs = squashfs_statfs,
26023diff -urNp linux-2.6.29.6/fs/sysfs/dir.c linux-2.6.29.6/fs/sysfs/dir.c 25411diff -urNp linux-2.6.30.4/fs/sysfs/bin.c linux-2.6.30.4/fs/sysfs/bin.c
26024--- linux-2.6.29.6/fs/sysfs/dir.c 2009-07-02 19:41:20.000000000 -0400 25412--- linux-2.6.30.4/fs/sysfs/bin.c 2009-07-24 17:47:51.000000000 -0400
26025+++ linux-2.6.29.6/fs/sysfs/dir.c 2009-07-23 18:40:28.589290669 -0400 25413+++ linux-2.6.30.4/fs/sysfs/bin.c 2009-07-30 12:02:44.278047822 -0400
26026@@ -302,7 +302,7 @@ static void sysfs_d_iput(struct dentry * 25414@@ -40,7 +40,7 @@ struct bin_buffer {
26027 iput(inode); 25415 struct mutex mutex;
25416 void *buffer;
25417 int mmapped;
25418- struct vm_operations_struct *vm_ops;
25419+ const struct vm_operations_struct *vm_ops;
25420 struct file *file;
25421 struct hlist_node list;
25422 };
25423@@ -330,7 +330,7 @@ static int bin_migrate(struct vm_area_st
26028 } 25424 }
25425 #endif
26029 25426
26030-static struct dentry_operations sysfs_dentry_ops = { 25427-static struct vm_operations_struct bin_vm_ops = {
26031+static const struct dentry_operations sysfs_dentry_ops = { 25428+static const struct vm_operations_struct bin_vm_ops = {
26032 .d_iput = sysfs_d_iput, 25429 .open = bin_vma_open,
26033 }; 25430 .close = bin_vma_close,
26034 25431 .fault = bin_fault,
26035diff -urNp linux-2.6.29.6/fs/sysfs/symlink.c linux-2.6.29.6/fs/sysfs/symlink.c 25432diff -urNp linux-2.6.30.4/fs/sysfs/symlink.c linux-2.6.30.4/fs/sysfs/symlink.c
26036--- linux-2.6.29.6/fs/sysfs/symlink.c 2009-07-02 19:41:20.000000000 -0400 25433--- linux-2.6.30.4/fs/sysfs/symlink.c 2009-07-24 17:47:51.000000000 -0400
26037+++ linux-2.6.29.6/fs/sysfs/symlink.c 2009-07-23 17:34:32.169708808 -0400 25434+++ linux-2.6.30.4/fs/sysfs/symlink.c 2009-07-30 09:48:10.098443569 -0400
26038@@ -200,7 +200,7 @@ static void *sysfs_follow_link(struct de 25435@@ -200,7 +200,7 @@ static void *sysfs_follow_link(struct de
26039 25436
26040 static void sysfs_put_link(struct dentry *dentry, struct nameidata *nd, void *cookie) 25437 static void sysfs_put_link(struct dentry *dentry, struct nameidata *nd, void *cookie)
@@ -26044,34 +25441,10 @@ diff -urNp linux-2.6.29.6/fs/sysfs/symlink.c linux-2.6.29.6/fs/sysfs/symlink.c
26044 if (!IS_ERR(page)) 25441 if (!IS_ERR(page))
26045 free_page((unsigned long)page); 25442 free_page((unsigned long)page);
26046 } 25443 }
26047diff -urNp linux-2.6.29.6/fs/sysv/namei.c linux-2.6.29.6/fs/sysv/namei.c 25444diff -urNp linux-2.6.30.4/fs/ubifs/file.c linux-2.6.30.4/fs/ubifs/file.c
26048--- linux-2.6.29.6/fs/sysv/namei.c 2009-07-02 19:41:20.000000000 -0400 25445--- linux-2.6.30.4/fs/ubifs/file.c 2009-07-24 17:47:51.000000000 -0400
26049+++ linux-2.6.29.6/fs/sysv/namei.c 2009-07-23 18:40:28.589290669 -0400 25446+++ linux-2.6.30.4/fs/ubifs/file.c 2009-07-30 09:48:10.100960655 -0400
26050@@ -38,7 +38,7 @@ static int sysv_hash(struct dentry *dent 25447@@ -1536,7 +1536,7 @@ out_unlock:
26051 return 0;
26052 }
26053
26054-struct dentry_operations sysv_dentry_operations = {
26055+const struct dentry_operations sysv_dentry_operations = {
26056 .d_hash = sysv_hash,
26057 };
26058
26059diff -urNp linux-2.6.29.6/fs/sysv/sysv.h linux-2.6.29.6/fs/sysv/sysv.h
26060--- linux-2.6.29.6/fs/sysv/sysv.h 2009-07-02 19:41:20.000000000 -0400
26061+++ linux-2.6.29.6/fs/sysv/sysv.h 2009-07-23 18:40:28.590278279 -0400
26062@@ -170,7 +170,7 @@ extern const struct file_operations sysv
26063 extern const struct file_operations sysv_dir_operations;
26064 extern const struct address_space_operations sysv_aops;
26065 extern const struct super_operations sysv_sops;
26066-extern struct dentry_operations sysv_dentry_operations;
26067+extern const struct dentry_operations sysv_dentry_operations;
26068
26069
26070 enum {
26071diff -urNp linux-2.6.29.6/fs/ubifs/file.c linux-2.6.29.6/fs/ubifs/file.c
26072--- linux-2.6.29.6/fs/ubifs/file.c 2009-07-02 19:41:20.000000000 -0400
26073+++ linux-2.6.29.6/fs/ubifs/file.c 2009-07-23 18:40:28.610477859 -0400
26074@@ -1526,7 +1526,7 @@ out_unlock:
26075 return err; 25448 return err;
26076 } 25449 }
26077 25450
@@ -26080,21 +25453,21 @@ diff -urNp linux-2.6.29.6/fs/ubifs/file.c linux-2.6.29.6/fs/ubifs/file.c
26080 .fault = filemap_fault, 25453 .fault = filemap_fault,
26081 .page_mkwrite = ubifs_vm_page_mkwrite, 25454 .page_mkwrite = ubifs_vm_page_mkwrite,
26082 }; 25455 };
26083diff -urNp linux-2.6.29.6/fs/udf/balloc.c linux-2.6.29.6/fs/udf/balloc.c 25456diff -urNp linux-2.6.30.4/fs/udf/balloc.c linux-2.6.30.4/fs/udf/balloc.c
26084--- linux-2.6.29.6/fs/udf/balloc.c 2009-07-02 19:41:20.000000000 -0400 25457--- linux-2.6.30.4/fs/udf/balloc.c 2009-07-24 17:47:51.000000000 -0400
26085+++ linux-2.6.29.6/fs/udf/balloc.c 2009-07-23 17:34:32.170868529 -0400 25458+++ linux-2.6.30.4/fs/udf/balloc.c 2009-07-30 09:48:10.100960655 -0400
26086@@ -169,9 +169,7 @@ static void udf_bitmap_free_blocks(struc 25459@@ -172,9 +172,7 @@ static void udf_bitmap_free_blocks(struc
26087 unsigned long overflow;
26088 25460
26089 mutex_lock(&sbi->s_alloc_mutex); 25461 mutex_lock(&sbi->s_alloc_mutex);
26090- if (bloc.logicalBlockNum < 0 || 25462 partmap = &sbi->s_partmaps[bloc->partitionReferenceNum];
26091- (bloc.logicalBlockNum + count) > 25463- if (bloc->logicalBlockNum < 0 ||
26092- sbi->s_partmaps[bloc.partitionReferenceNum].s_partition_len) { 25464- (bloc->logicalBlockNum + count) >
26093+ if (bloc.logicalBlockNum + count > sbi->s_partmaps[bloc.partitionReferenceNum].s_partition_len) { 25465- partmap->s_partition_len) {
25466+ if ((bloc->logicalBlockNum + count) > partmap->s_partition_len) {
26094 udf_debug("%d < %d || %d + %d > %d\n", 25467 udf_debug("%d < %d || %d + %d > %d\n",
26095 bloc.logicalBlockNum, 0, bloc.logicalBlockNum, count, 25468 bloc->logicalBlockNum, 0, bloc->logicalBlockNum,
26096 sbi->s_partmaps[bloc.partitionReferenceNum]. 25469 count, partmap->s_partition_len);
26097@@ -239,7 +237,7 @@ static int udf_bitmap_prealloc_blocks(st 25470@@ -238,7 +236,7 @@ static int udf_bitmap_prealloc_blocks(st
26098 25471
26099 mutex_lock(&sbi->s_alloc_mutex); 25472 mutex_lock(&sbi->s_alloc_mutex);
26100 part_len = sbi->s_partmaps[partition].s_partition_len; 25473 part_len = sbi->s_partmaps[partition].s_partition_len;
@@ -26103,7 +25476,7 @@ diff -urNp linux-2.6.29.6/fs/udf/balloc.c linux-2.6.29.6/fs/udf/balloc.c
26103 goto out; 25476 goto out;
26104 25477
26105 if (first_block + block_count > part_len) 25478 if (first_block + block_count > part_len)
26106@@ -300,7 +298,7 @@ static int udf_bitmap_new_block(struct s 25479@@ -297,7 +295,7 @@ static int udf_bitmap_new_block(struct s
26107 mutex_lock(&sbi->s_alloc_mutex); 25480 mutex_lock(&sbi->s_alloc_mutex);
26108 25481
26109 repeat: 25482 repeat:
@@ -26112,18 +25485,18 @@ diff -urNp linux-2.6.29.6/fs/udf/balloc.c linux-2.6.29.6/fs/udf/balloc.c
26112 goal = 0; 25485 goal = 0;
26113 25486
26114 nr_groups = bitmap->s_nr_groups; 25487 nr_groups = bitmap->s_nr_groups;
26115@@ -438,9 +436,7 @@ static void udf_table_free_blocks(struct 25488@@ -436,9 +434,7 @@ static void udf_table_free_blocks(struct
26116 struct udf_inode_info *iinfo;
26117 25489
26118 mutex_lock(&sbi->s_alloc_mutex); 25490 mutex_lock(&sbi->s_alloc_mutex);
26119- if (bloc.logicalBlockNum < 0 || 25491 partmap = &sbi->s_partmaps[bloc->partitionReferenceNum];
26120- (bloc.logicalBlockNum + count) > 25492- if (bloc->logicalBlockNum < 0 ||
26121- sbi->s_partmaps[bloc.partitionReferenceNum].s_partition_len) { 25493- (bloc->logicalBlockNum + count) >
26122+ if (bloc.logicalBlockNum + count > sbi->s_partmaps[bloc.partitionReferenceNum].s_partition_len) { 25494- partmap->s_partition_len) {
25495+ if ((bloc->logicalBlockNum + count) > partmap->s_partition_len) {
26123 udf_debug("%d < %d || %d + %d > %d\n", 25496 udf_debug("%d < %d || %d + %d > %d\n",
26124 bloc.logicalBlockNum, 0, bloc.logicalBlockNum, count, 25497 bloc.logicalBlockNum, 0, bloc.logicalBlockNum, count,
26125 sbi->s_partmaps[bloc.partitionReferenceNum]. 25498 partmap->s_partition_len);
26126@@ -671,8 +667,7 @@ static int udf_table_prealloc_blocks(str 25499@@ -666,8 +662,7 @@ static int udf_table_prealloc_blocks(str
26127 int8_t etype = -1; 25500 int8_t etype = -1;
26128 struct udf_inode_info *iinfo; 25501 struct udf_inode_info *iinfo;
26129 25502
@@ -26133,7 +25506,7 @@ diff -urNp linux-2.6.29.6/fs/udf/balloc.c linux-2.6.29.6/fs/udf/balloc.c
26133 return 0; 25506 return 0;
26134 25507
26135 iinfo = UDF_I(table); 25508 iinfo = UDF_I(table);
26136@@ -750,7 +745,7 @@ static int udf_table_new_block(struct su 25509@@ -743,7 +738,7 @@ static int udf_table_new_block(struct su
26137 return newblock; 25510 return newblock;
26138 25511
26139 mutex_lock(&sbi->s_alloc_mutex); 25512 mutex_lock(&sbi->s_alloc_mutex);
@@ -26142,9 +25515,9 @@ diff -urNp linux-2.6.29.6/fs/udf/balloc.c linux-2.6.29.6/fs/udf/balloc.c
26142 goal = 0; 25515 goal = 0;
26143 25516
26144 /* We search for the closest matching block to goal. If we find 25517 /* We search for the closest matching block to goal. If we find
26145diff -urNp linux-2.6.29.6/fs/ufs/inode.c linux-2.6.29.6/fs/ufs/inode.c 25518diff -urNp linux-2.6.30.4/fs/ufs/inode.c linux-2.6.30.4/fs/ufs/inode.c
26146--- linux-2.6.29.6/fs/ufs/inode.c 2009-07-02 19:41:20.000000000 -0400 25519--- linux-2.6.30.4/fs/ufs/inode.c 2009-07-24 17:47:51.000000000 -0400
26147+++ linux-2.6.29.6/fs/ufs/inode.c 2009-07-23 17:34:32.170868529 -0400 25520+++ linux-2.6.30.4/fs/ufs/inode.c 2009-07-30 09:48:10.101729491 -0400
26148@@ -56,9 +56,7 @@ static int ufs_block_to_path(struct inod 25521@@ -56,9 +56,7 @@ static int ufs_block_to_path(struct inod
26149 25522
26150 25523
@@ -26176,9 +25549,9 @@ diff -urNp linux-2.6.29.6/fs/ufs/inode.c linux-2.6.29.6/fs/ufs/inode.c
26176 abort_too_big: 25549 abort_too_big:
26177 ufs_warning(sb, "ufs_get_block", "block > big"); 25550 ufs_warning(sb, "ufs_get_block", "block > big");
26178 goto abort; 25551 goto abort;
26179diff -urNp linux-2.6.29.6/fs/utimes.c linux-2.6.29.6/fs/utimes.c 25552diff -urNp linux-2.6.30.4/fs/utimes.c linux-2.6.30.4/fs/utimes.c
26180--- linux-2.6.29.6/fs/utimes.c 2009-07-02 19:41:20.000000000 -0400 25553--- linux-2.6.30.4/fs/utimes.c 2009-07-24 17:47:51.000000000 -0400
26181+++ linux-2.6.29.6/fs/utimes.c 2009-07-23 17:34:32.170868529 -0400 25554+++ linux-2.6.30.4/fs/utimes.c 2009-07-30 11:10:49.345424878 -0400
26182@@ -1,6 +1,7 @@ 25555@@ -1,6 +1,7 @@
26183 #include <linux/compiler.h> 25556 #include <linux/compiler.h>
26184 #include <linux/file.h> 25557 #include <linux/file.h>
@@ -26200,9 +25573,9 @@ diff -urNp linux-2.6.29.6/fs/utimes.c linux-2.6.29.6/fs/utimes.c
26200 mutex_lock(&inode->i_mutex); 25573 mutex_lock(&inode->i_mutex);
26201 error = notify_change(path->dentry, &newattrs); 25574 error = notify_change(path->dentry, &newattrs);
26202 mutex_unlock(&inode->i_mutex); 25575 mutex_unlock(&inode->i_mutex);
26203diff -urNp linux-2.6.29.6/fs/xfs/linux-2.6/xfs_file.c linux-2.6.29.6/fs/xfs/linux-2.6/xfs_file.c 25576diff -urNp linux-2.6.30.4/fs/xfs/linux-2.6/xfs_file.c linux-2.6.30.4/fs/xfs/linux-2.6/xfs_file.c
26204--- linux-2.6.29.6/fs/xfs/linux-2.6/xfs_file.c 2009-07-02 19:41:20.000000000 -0400 25577--- linux-2.6.30.4/fs/xfs/linux-2.6/xfs_file.c 2009-07-24 17:47:51.000000000 -0400
26205+++ linux-2.6.29.6/fs/xfs/linux-2.6/xfs_file.c 2009-07-23 18:40:28.621302411 -0400 25578+++ linux-2.6.30.4/fs/xfs/linux-2.6/xfs_file.c 2009-07-30 09:48:10.102932228 -0400
26206@@ -43,7 +43,7 @@ 25579@@ -43,7 +43,7 @@
26207 #include <linux/dcache.h> 25580 #include <linux/dcache.h>
26208 #include <linux/smp_lock.h> 25581 #include <linux/smp_lock.h>
@@ -26221,10 +25594,10 @@ diff -urNp linux-2.6.29.6/fs/xfs/linux-2.6/xfs_file.c linux-2.6.29.6/fs/xfs/linu
26221 .fault = filemap_fault, 25594 .fault = filemap_fault,
26222 .page_mkwrite = xfs_vm_page_mkwrite, 25595 .page_mkwrite = xfs_vm_page_mkwrite,
26223 }; 25596 };
26224diff -urNp linux-2.6.29.6/fs/xfs/linux-2.6/xfs_iops.c linux-2.6.29.6/fs/xfs/linux-2.6/xfs_iops.c 25597diff -urNp linux-2.6.30.4/fs/xfs/linux-2.6/xfs_iops.c linux-2.6.30.4/fs/xfs/linux-2.6/xfs_iops.c
26225--- linux-2.6.29.6/fs/xfs/linux-2.6/xfs_iops.c 2009-07-02 19:41:20.000000000 -0400 25598--- linux-2.6.30.4/fs/xfs/linux-2.6/xfs_iops.c 2009-07-24 17:47:51.000000000 -0400
26226+++ linux-2.6.29.6/fs/xfs/linux-2.6/xfs_iops.c 2009-07-23 17:34:32.170868529 -0400 25599+++ linux-2.6.30.4/fs/xfs/linux-2.6/xfs_iops.c 2009-07-30 09:48:10.102932228 -0400
26227@@ -494,7 +494,7 @@ xfs_vn_put_link( 25600@@ -482,7 +482,7 @@ xfs_vn_put_link(
26228 struct nameidata *nd, 25601 struct nameidata *nd,
26229 void *p) 25602 void *p)
26230 { 25603 {
@@ -26233,19 +25606,19 @@ diff -urNp linux-2.6.29.6/fs/xfs/linux-2.6/xfs_iops.c linux-2.6.29.6/fs/xfs/linu
26233 25606
26234 if (!IS_ERR(s)) 25607 if (!IS_ERR(s))
26235 kfree(s); 25608 kfree(s);
26236diff -urNp linux-2.6.29.6/fs/xfs/linux-2.6/xfs_super.c linux-2.6.29.6/fs/xfs/linux-2.6/xfs_super.c 25609diff -urNp linux-2.6.30.4/fs/xfs/linux-2.6/xfs_super.c linux-2.6.30.4/fs/xfs/linux-2.6/xfs_super.c
26237--- linux-2.6.29.6/fs/xfs/linux-2.6/xfs_super.c 2009-07-02 19:41:20.000000000 -0400 25610--- linux-2.6.30.4/fs/xfs/linux-2.6/xfs_super.c 2009-07-24 17:47:51.000000000 -0400
26238+++ linux-2.6.29.6/fs/xfs/linux-2.6/xfs_super.c 2009-07-23 18:40:28.631296881 -0400 25611+++ linux-2.6.30.4/fs/xfs/linux-2.6/xfs_super.c 2009-07-30 13:03:07.229966859 -0400
26239@@ -69,7 +69,7 @@ 25612@@ -68,7 +68,7 @@
25613 #include <linux/freezer.h>
26240 #include <linux/parser.h> 25614 #include <linux/parser.h>
26241 25615
26242 static struct quotactl_ops xfs_quotactl_operations;
26243-static struct super_operations xfs_super_operations; 25616-static struct super_operations xfs_super_operations;
26244+static const struct super_operations xfs_super_operations; 25617+static const struct super_operations xfs_super_operations;
26245 static kmem_zone_t *xfs_ioend_zone; 25618 static kmem_zone_t *xfs_ioend_zone;
26246 mempool_t *xfs_ioend_pool; 25619 mempool_t *xfs_ioend_pool;
26247 25620
26248@@ -1564,7 +1564,7 @@ xfs_fs_get_sb( 25621@@ -1527,7 +1527,7 @@ xfs_fs_get_sb(
26249 mnt); 25622 mnt);
26250 } 25623 }
26251 25624
@@ -26254,9 +25627,9 @@ diff -urNp linux-2.6.29.6/fs/xfs/linux-2.6/xfs_super.c linux-2.6.29.6/fs/xfs/lin
26254 .alloc_inode = xfs_fs_alloc_inode, 25627 .alloc_inode = xfs_fs_alloc_inode,
26255 .destroy_inode = xfs_fs_destroy_inode, 25628 .destroy_inode = xfs_fs_destroy_inode,
26256 .write_inode = xfs_fs_write_inode, 25629 .write_inode = xfs_fs_write_inode,
26257diff -urNp linux-2.6.29.6/fs/xfs/xfs_bmap.c linux-2.6.29.6/fs/xfs/xfs_bmap.c 25630diff -urNp linux-2.6.30.4/fs/xfs/xfs_bmap.c linux-2.6.30.4/fs/xfs/xfs_bmap.c
26258--- linux-2.6.29.6/fs/xfs/xfs_bmap.c 2009-07-02 19:41:20.000000000 -0400 25631--- linux-2.6.30.4/fs/xfs/xfs_bmap.c 2009-07-24 17:47:51.000000000 -0400
26259+++ linux-2.6.29.6/fs/xfs/xfs_bmap.c 2009-07-23 17:34:32.171850695 -0400 25632+++ linux-2.6.30.4/fs/xfs/xfs_bmap.c 2009-07-30 09:48:10.103749934 -0400
26260@@ -360,7 +360,7 @@ xfs_bmap_validate_ret( 25633@@ -360,7 +360,7 @@ xfs_bmap_validate_ret(
26261 int nmap, 25634 int nmap,
26262 int ret_nmap); 25635 int ret_nmap);
@@ -26266,9 +25639,9 @@ diff -urNp linux-2.6.29.6/fs/xfs/xfs_bmap.c linux-2.6.29.6/fs/xfs/xfs_bmap.c
26266 #endif /* DEBUG */ 25639 #endif /* DEBUG */
26267 25640
26268 #if defined(XFS_RW_TRACE) 25641 #if defined(XFS_RW_TRACE)
26269diff -urNp linux-2.6.29.6/grsecurity/gracl_alloc.c linux-2.6.29.6/grsecurity/gracl_alloc.c 25642diff -urNp linux-2.6.30.4/grsecurity/gracl_alloc.c linux-2.6.30.4/grsecurity/gracl_alloc.c
26270--- linux-2.6.29.6/grsecurity/gracl_alloc.c 1969-12-31 19:00:00.000000000 -0500 25643--- linux-2.6.30.4/grsecurity/gracl_alloc.c 1969-12-31 19:00:00.000000000 -0500
26271+++ linux-2.6.29.6/grsecurity/gracl_alloc.c 2009-07-23 17:34:32.172792791 -0400 25644+++ linux-2.6.30.4/grsecurity/gracl_alloc.c 2009-07-30 11:10:49.345424878 -0400
26272@@ -0,0 +1,105 @@ 25645@@ -0,0 +1,105 @@
26273+#include <linux/kernel.h> 25646+#include <linux/kernel.h>
26274+#include <linux/mm.h> 25647+#include <linux/mm.h>
@@ -26375,9 +25748,9 @@ diff -urNp linux-2.6.29.6/grsecurity/gracl_alloc.c linux-2.6.29.6/grsecurity/gra
26375+ else 25748+ else
26376+ return 1; 25749+ return 1;
26377+} 25750+}
26378diff -urNp linux-2.6.29.6/grsecurity/gracl.c linux-2.6.29.6/grsecurity/gracl.c 25751diff -urNp linux-2.6.30.4/grsecurity/gracl.c linux-2.6.30.4/grsecurity/gracl.c
26379--- linux-2.6.29.6/grsecurity/gracl.c 1969-12-31 19:00:00.000000000 -0500 25752--- linux-2.6.30.4/grsecurity/gracl.c 1969-12-31 19:00:00.000000000 -0500
26380+++ linux-2.6.29.6/grsecurity/gracl.c 2009-07-23 18:43:31.274004949 -0400 25753+++ linux-2.6.30.4/grsecurity/gracl.c 2009-07-30 11:10:49.345424878 -0400
26381@@ -0,0 +1,3892 @@ 25754@@ -0,0 +1,3892 @@
26382+#include <linux/kernel.h> 25755+#include <linux/kernel.h>
26383+#include <linux/module.h> 25756+#include <linux/module.h>
@@ -30271,9 +29644,9 @@ diff -urNp linux-2.6.29.6/grsecurity/gracl.c linux-2.6.29.6/grsecurity/gracl.c
30271+EXPORT_SYMBOL(gr_check_group_change); 29644+EXPORT_SYMBOL(gr_check_group_change);
30272+#endif 29645+#endif
30273+ 29646+
30274diff -urNp linux-2.6.29.6/grsecurity/gracl_cap.c linux-2.6.29.6/grsecurity/gracl_cap.c 29647diff -urNp linux-2.6.30.4/grsecurity/gracl_cap.c linux-2.6.30.4/grsecurity/gracl_cap.c
30275--- linux-2.6.29.6/grsecurity/gracl_cap.c 1969-12-31 19:00:00.000000000 -0500 29648--- linux-2.6.30.4/grsecurity/gracl_cap.c 1969-12-31 19:00:00.000000000 -0500
30276+++ linux-2.6.29.6/grsecurity/gracl_cap.c 2009-07-23 17:34:32.174773311 -0400 29649+++ linux-2.6.30.4/grsecurity/gracl_cap.c 2009-07-30 11:10:49.347341041 -0400
30277@@ -0,0 +1,131 @@ 29650@@ -0,0 +1,131 @@
30278+#include <linux/kernel.h> 29651+#include <linux/kernel.h>
30279+#include <linux/module.h> 29652+#include <linux/module.h>
@@ -30406,10 +29779,10 @@ diff -urNp linux-2.6.29.6/grsecurity/gracl_cap.c linux-2.6.29.6/grsecurity/gracl
30406+ return 0; 29779+ return 0;
30407+} 29780+}
30408+ 29781+
30409diff -urNp linux-2.6.29.6/grsecurity/gracl_fs.c linux-2.6.29.6/grsecurity/gracl_fs.c 29782diff -urNp linux-2.6.30.4/grsecurity/gracl_fs.c linux-2.6.30.4/grsecurity/gracl_fs.c
30410--- linux-2.6.29.6/grsecurity/gracl_fs.c 1969-12-31 19:00:00.000000000 -0500 29783--- linux-2.6.30.4/grsecurity/gracl_fs.c 1969-12-31 19:00:00.000000000 -0500
30411+++ linux-2.6.29.6/grsecurity/gracl_fs.c 2009-07-23 17:34:32.174773311 -0400 29784+++ linux-2.6.30.4/grsecurity/gracl_fs.c 2009-08-01 15:00:28.098114831 -0400
30412@@ -0,0 +1,423 @@ 29785@@ -0,0 +1,424 @@
30413+#include <linux/kernel.h> 29786+#include <linux/kernel.h>
30414+#include <linux/sched.h> 29787+#include <linux/sched.h>
30415+#include <linux/types.h> 29788+#include <linux/types.h>
@@ -30460,7 +29833,8 @@ diff -urNp linux-2.6.29.6/grsecurity/gracl_fs.c linux-2.6.29.6/grsecurity/gracl_
30460+ reqmode |= GR_WRITE; 29833+ reqmode |= GR_WRITE;
30461+ if (likely((fmode & FMODE_READ) && !(fmode & O_DIRECTORY))) 29834+ if (likely((fmode & FMODE_READ) && !(fmode & O_DIRECTORY)))
30462+ reqmode |= GR_READ; 29835+ reqmode |= GR_READ;
30463+ 29836+ if ((fmode & FMODE_GREXEC) && (fmode & FMODE_EXEC))
29837+ reqmode &= ~GR_READ;
30464+ mode = 29838+ mode =
30465+ gr_search_file(dentry, reqmode | to_gr_audit(reqmode) | GR_SUPPRESS, 29839+ gr_search_file(dentry, reqmode | to_gr_audit(reqmode) | GR_SUPPRESS,
30466+ mnt); 29840+ mnt);
@@ -30833,9 +30207,9 @@ diff -urNp linux-2.6.29.6/grsecurity/gracl_fs.c linux-2.6.29.6/grsecurity/gracl_
30833+ 30207+
30834+ return 0; 30208+ return 0;
30835+} 30209+}
30836diff -urNp linux-2.6.29.6/grsecurity/gracl_ip.c linux-2.6.29.6/grsecurity/gracl_ip.c 30210diff -urNp linux-2.6.30.4/grsecurity/gracl_ip.c linux-2.6.30.4/grsecurity/gracl_ip.c
30837--- linux-2.6.29.6/grsecurity/gracl_ip.c 1969-12-31 19:00:00.000000000 -0500 30211--- linux-2.6.30.4/grsecurity/gracl_ip.c 1969-12-31 19:00:00.000000000 -0500
30838+++ linux-2.6.29.6/grsecurity/gracl_ip.c 2009-07-23 17:34:32.174773311 -0400 30212+++ linux-2.6.30.4/grsecurity/gracl_ip.c 2009-07-30 11:10:49.347341041 -0400
30839@@ -0,0 +1,340 @@ 30213@@ -0,0 +1,340 @@
30840+#include <linux/kernel.h> 30214+#include <linux/kernel.h>
30841+#include <asm/uaccess.h> 30215+#include <asm/uaccess.h>
@@ -31177,9 +30551,9 @@ diff -urNp linux-2.6.29.6/grsecurity/gracl_ip.c linux-2.6.29.6/grsecurity/gracl_
31177+ 30551+
31178+ return gr_search_connectbind(GR_CONNECT | GR_CONNECTOVERRIDE, sk, &sin, SOCK_DGRAM); 30552+ return gr_search_connectbind(GR_CONNECT | GR_CONNECTOVERRIDE, sk, &sin, SOCK_DGRAM);
31179+} 30553+}
31180diff -urNp linux-2.6.29.6/grsecurity/gracl_learn.c linux-2.6.29.6/grsecurity/gracl_learn.c 30554diff -urNp linux-2.6.30.4/grsecurity/gracl_learn.c linux-2.6.30.4/grsecurity/gracl_learn.c
31181--- linux-2.6.29.6/grsecurity/gracl_learn.c 1969-12-31 19:00:00.000000000 -0500 30555--- linux-2.6.30.4/grsecurity/gracl_learn.c 1969-12-31 19:00:00.000000000 -0500
31182+++ linux-2.6.29.6/grsecurity/gracl_learn.c 2009-07-23 18:43:31.274004949 -0400 30556+++ linux-2.6.30.4/grsecurity/gracl_learn.c 2009-07-30 11:10:49.347341041 -0400
31183@@ -0,0 +1,211 @@ 30557@@ -0,0 +1,211 @@
31184+#include <linux/kernel.h> 30558+#include <linux/kernel.h>
31185+#include <linux/mm.h> 30559+#include <linux/mm.h>
@@ -31392,9 +30766,9 @@ diff -urNp linux-2.6.29.6/grsecurity/gracl_learn.c linux-2.6.29.6/grsecurity/gra
31392+ .release = close_learn, 30766+ .release = close_learn,
31393+ .poll = poll_learn, 30767+ .poll = poll_learn,
31394+}; 30768+};
31395diff -urNp linux-2.6.29.6/grsecurity/gracl_res.c linux-2.6.29.6/grsecurity/gracl_res.c 30769diff -urNp linux-2.6.30.4/grsecurity/gracl_res.c linux-2.6.30.4/grsecurity/gracl_res.c
31396--- linux-2.6.29.6/grsecurity/gracl_res.c 1969-12-31 19:00:00.000000000 -0500 30770--- linux-2.6.30.4/grsecurity/gracl_res.c 1969-12-31 19:00:00.000000000 -0500
31397+++ linux-2.6.29.6/grsecurity/gracl_res.c 2009-07-23 17:34:32.175727734 -0400 30771+++ linux-2.6.30.4/grsecurity/gracl_res.c 2009-07-30 11:10:49.347341041 -0400
31398@@ -0,0 +1,58 @@ 30772@@ -0,0 +1,58 @@
31399+#include <linux/kernel.h> 30773+#include <linux/kernel.h>
31400+#include <linux/sched.h> 30774+#include <linux/sched.h>
@@ -31454,9 +30828,9 @@ diff -urNp linux-2.6.29.6/grsecurity/gracl_res.c linux-2.6.29.6/grsecurity/gracl
31454+ 30828+
31455+ return; 30829+ return;
31456+} 30830+}
31457diff -urNp linux-2.6.29.6/grsecurity/gracl_segv.c linux-2.6.29.6/grsecurity/gracl_segv.c 30831diff -urNp linux-2.6.30.4/grsecurity/gracl_segv.c linux-2.6.30.4/grsecurity/gracl_segv.c
31458--- linux-2.6.29.6/grsecurity/gracl_segv.c 1969-12-31 19:00:00.000000000 -0500 30832--- linux-2.6.30.4/grsecurity/gracl_segv.c 1969-12-31 19:00:00.000000000 -0500
31459+++ linux-2.6.29.6/grsecurity/gracl_segv.c 2009-07-23 17:34:32.175727734 -0400 30833+++ linux-2.6.30.4/grsecurity/gracl_segv.c 2009-07-30 11:10:49.347341041 -0400
31460@@ -0,0 +1,307 @@ 30834@@ -0,0 +1,307 @@
31461+#include <linux/kernel.h> 30835+#include <linux/kernel.h>
31462+#include <linux/mm.h> 30836+#include <linux/mm.h>
@@ -31765,9 +31139,9 @@ diff -urNp linux-2.6.29.6/grsecurity/gracl_segv.c linux-2.6.29.6/grsecurity/grac
31765+ 31139+
31766+ return; 31140+ return;
31767+} 31141+}
31768diff -urNp linux-2.6.29.6/grsecurity/gracl_shm.c linux-2.6.29.6/grsecurity/gracl_shm.c 31142diff -urNp linux-2.6.30.4/grsecurity/gracl_shm.c linux-2.6.30.4/grsecurity/gracl_shm.c
31769--- linux-2.6.29.6/grsecurity/gracl_shm.c 1969-12-31 19:00:00.000000000 -0500 31143--- linux-2.6.30.4/grsecurity/gracl_shm.c 1969-12-31 19:00:00.000000000 -0500
31770+++ linux-2.6.29.6/grsecurity/gracl_shm.c 2009-07-23 17:34:32.175727734 -0400 31144+++ linux-2.6.30.4/grsecurity/gracl_shm.c 2009-07-30 11:10:49.347341041 -0400
31771@@ -0,0 +1,37 @@ 31145@@ -0,0 +1,37 @@
31772+#include <linux/kernel.h> 31146+#include <linux/kernel.h>
31773+#include <linux/mm.h> 31147+#include <linux/mm.h>
@@ -31806,9 +31180,9 @@ diff -urNp linux-2.6.29.6/grsecurity/gracl_shm.c linux-2.6.29.6/grsecurity/gracl
31806+ 31180+
31807+ return 1; 31181+ return 1;
31808+} 31182+}
31809diff -urNp linux-2.6.29.6/grsecurity/grsec_chdir.c linux-2.6.29.6/grsecurity/grsec_chdir.c 31183diff -urNp linux-2.6.30.4/grsecurity/grsec_chdir.c linux-2.6.30.4/grsecurity/grsec_chdir.c
31810--- linux-2.6.29.6/grsecurity/grsec_chdir.c 1969-12-31 19:00:00.000000000 -0500 31184--- linux-2.6.30.4/grsecurity/grsec_chdir.c 1969-12-31 19:00:00.000000000 -0500
31811+++ linux-2.6.29.6/grsecurity/grsec_chdir.c 2009-07-23 17:34:32.175727734 -0400 31185+++ linux-2.6.30.4/grsecurity/grsec_chdir.c 2009-07-30 11:10:49.347341041 -0400
31812@@ -0,0 +1,19 @@ 31186@@ -0,0 +1,19 @@
31813+#include <linux/kernel.h> 31187+#include <linux/kernel.h>
31814+#include <linux/sched.h> 31188+#include <linux/sched.h>
@@ -31829,9 +31203,9 @@ diff -urNp linux-2.6.29.6/grsecurity/grsec_chdir.c linux-2.6.29.6/grsecurity/grs
31829+#endif 31203+#endif
31830+ return; 31204+ return;
31831+} 31205+}
31832diff -urNp linux-2.6.29.6/grsecurity/grsec_chroot.c linux-2.6.29.6/grsecurity/grsec_chroot.c 31206diff -urNp linux-2.6.30.4/grsecurity/grsec_chroot.c linux-2.6.30.4/grsecurity/grsec_chroot.c
31833--- linux-2.6.29.6/grsecurity/grsec_chroot.c 1969-12-31 19:00:00.000000000 -0500 31207--- linux-2.6.30.4/grsecurity/grsec_chroot.c 1969-12-31 19:00:00.000000000 -0500
31834+++ linux-2.6.29.6/grsecurity/grsec_chroot.c 2009-07-23 17:34:32.175727734 -0400 31208+++ linux-2.6.30.4/grsecurity/grsec_chroot.c 2009-07-30 11:10:49.347341041 -0400
31835@@ -0,0 +1,350 @@ 31209@@ -0,0 +1,350 @@
31836+#include <linux/kernel.h> 31210+#include <linux/kernel.h>
31837+#include <linux/module.h> 31211+#include <linux/module.h>
@@ -32183,9 +31557,9 @@ diff -urNp linux-2.6.29.6/grsecurity/grsec_chroot.c linux-2.6.29.6/grsecurity/gr
32183+#ifdef CONFIG_SECURITY 31557+#ifdef CONFIG_SECURITY
32184+EXPORT_SYMBOL(gr_handle_chroot_caps); 31558+EXPORT_SYMBOL(gr_handle_chroot_caps);
32185+#endif 31559+#endif
32186diff -urNp linux-2.6.29.6/grsecurity/grsec_disabled.c linux-2.6.29.6/grsecurity/grsec_disabled.c 31560diff -urNp linux-2.6.30.4/grsecurity/grsec_disabled.c linux-2.6.30.4/grsecurity/grsec_disabled.c
32187--- linux-2.6.29.6/grsecurity/grsec_disabled.c 1969-12-31 19:00:00.000000000 -0500 31561--- linux-2.6.30.4/grsecurity/grsec_disabled.c 1969-12-31 19:00:00.000000000 -0500
32188+++ linux-2.6.29.6/grsecurity/grsec_disabled.c 2009-07-23 17:34:32.175727734 -0400 31562+++ linux-2.6.30.4/grsecurity/grsec_disabled.c 2009-07-30 11:10:49.347341041 -0400
32189@@ -0,0 +1,426 @@ 31563@@ -0,0 +1,426 @@
32190+#include <linux/kernel.h> 31564+#include <linux/kernel.h>
32191+#include <linux/module.h> 31565+#include <linux/module.h>
@@ -32613,9 +31987,9 @@ diff -urNp linux-2.6.29.6/grsecurity/grsec_disabled.c linux-2.6.29.6/grsecurity/
32613+EXPORT_SYMBOL(gr_check_user_change); 31987+EXPORT_SYMBOL(gr_check_user_change);
32614+EXPORT_SYMBOL(gr_check_group_change); 31988+EXPORT_SYMBOL(gr_check_group_change);
32615+#endif 31989+#endif
32616diff -urNp linux-2.6.29.6/grsecurity/grsec_exec.c linux-2.6.29.6/grsecurity/grsec_exec.c 31990diff -urNp linux-2.6.30.4/grsecurity/grsec_exec.c linux-2.6.30.4/grsecurity/grsec_exec.c
32617--- linux-2.6.29.6/grsecurity/grsec_exec.c 1969-12-31 19:00:00.000000000 -0500 31991--- linux-2.6.30.4/grsecurity/grsec_exec.c 1969-12-31 19:00:00.000000000 -0500
32618+++ linux-2.6.29.6/grsecurity/grsec_exec.c 2009-07-23 17:34:32.176740408 -0400 31992+++ linux-2.6.30.4/grsecurity/grsec_exec.c 2009-07-30 11:10:49.347341041 -0400
32619@@ -0,0 +1,89 @@ 31993@@ -0,0 +1,89 @@
32620+#include <linux/kernel.h> 31994+#include <linux/kernel.h>
32621+#include <linux/sched.h> 31995+#include <linux/sched.h>
@@ -32706,9 +32080,9 @@ diff -urNp linux-2.6.29.6/grsecurity/grsec_exec.c linux-2.6.29.6/grsecurity/grse
32706+#endif 32080+#endif
32707+ return; 32081+ return;
32708+} 32082+}
32709diff -urNp linux-2.6.29.6/grsecurity/grsec_fifo.c linux-2.6.29.6/grsecurity/grsec_fifo.c 32083diff -urNp linux-2.6.30.4/grsecurity/grsec_fifo.c linux-2.6.30.4/grsecurity/grsec_fifo.c
32710--- linux-2.6.29.6/grsecurity/grsec_fifo.c 1969-12-31 19:00:00.000000000 -0500 32084--- linux-2.6.30.4/grsecurity/grsec_fifo.c 1969-12-31 19:00:00.000000000 -0500
32711+++ linux-2.6.29.6/grsecurity/grsec_fifo.c 2009-07-23 17:34:32.176740408 -0400 32085+++ linux-2.6.30.4/grsecurity/grsec_fifo.c 2009-07-30 11:10:49.347341041 -0400
32712@@ -0,0 +1,24 @@ 32086@@ -0,0 +1,24 @@
32713+#include <linux/kernel.h> 32087+#include <linux/kernel.h>
32714+#include <linux/sched.h> 32088+#include <linux/sched.h>
@@ -32734,9 +32108,9 @@ diff -urNp linux-2.6.29.6/grsecurity/grsec_fifo.c linux-2.6.29.6/grsecurity/grse
32734+#endif 32108+#endif
32735+ return 0; 32109+ return 0;
32736+} 32110+}
32737diff -urNp linux-2.6.29.6/grsecurity/grsec_fork.c linux-2.6.29.6/grsecurity/grsec_fork.c 32111diff -urNp linux-2.6.30.4/grsecurity/grsec_fork.c linux-2.6.30.4/grsecurity/grsec_fork.c
32738--- linux-2.6.29.6/grsecurity/grsec_fork.c 1969-12-31 19:00:00.000000000 -0500 32112--- linux-2.6.30.4/grsecurity/grsec_fork.c 1969-12-31 19:00:00.000000000 -0500
32739+++ linux-2.6.29.6/grsecurity/grsec_fork.c 2009-07-23 17:34:32.176740408 -0400 32113+++ linux-2.6.30.4/grsecurity/grsec_fork.c 2009-07-30 11:10:49.349503559 -0400
32740@@ -0,0 +1,15 @@ 32114@@ -0,0 +1,15 @@
32741+#include <linux/kernel.h> 32115+#include <linux/kernel.h>
32742+#include <linux/sched.h> 32116+#include <linux/sched.h>
@@ -32753,9 +32127,9 @@ diff -urNp linux-2.6.29.6/grsecurity/grsec_fork.c linux-2.6.29.6/grsecurity/grse
32753+#endif 32127+#endif
32754+ return; 32128+ return;
32755+} 32129+}
32756diff -urNp linux-2.6.29.6/grsecurity/grsec_init.c linux-2.6.29.6/grsecurity/grsec_init.c 32130diff -urNp linux-2.6.30.4/grsecurity/grsec_init.c linux-2.6.30.4/grsecurity/grsec_init.c
32757--- linux-2.6.29.6/grsecurity/grsec_init.c 1969-12-31 19:00:00.000000000 -0500 32131--- linux-2.6.30.4/grsecurity/grsec_init.c 1969-12-31 19:00:00.000000000 -0500
32758+++ linux-2.6.29.6/grsecurity/grsec_init.c 2009-07-23 18:43:31.274004949 -0400 32132+++ linux-2.6.30.4/grsecurity/grsec_init.c 2009-08-02 09:38:20.116597572 -0400
32759@@ -0,0 +1,230 @@ 32133@@ -0,0 +1,230 @@
32760+#include <linux/kernel.h> 32134+#include <linux/kernel.h>
32761+#include <linux/sched.h> 32135+#include <linux/sched.h>
@@ -32836,7 +32210,7 @@ diff -urNp linux-2.6.29.6/grsecurity/grsec_init.c linux-2.6.29.6/grsecurity/grse
32836+#endif 32210+#endif
32837+ 32211+
32838+ for (j = 0; j < 4; j++) { 32212+ for (j = 0; j < 4; j++) {
32839+ gr_shared_page[j] = (char *)__alloc_percpu(PAGE_SIZE); 32213+ gr_shared_page[j] = (char *)__alloc_percpu(PAGE_SIZE, __alignof__(unsigned long long));
32840+ if (gr_shared_page[j] == NULL) { 32214+ if (gr_shared_page[j] == NULL) {
32841+ panic("Unable to allocate grsecurity shared page"); 32215+ panic("Unable to allocate grsecurity shared page");
32842+ return; 32216+ return;
@@ -32987,9 +32361,9 @@ diff -urNp linux-2.6.29.6/grsecurity/grsec_init.c linux-2.6.29.6/grsecurity/grse
32987+ 32361+
32988+ return; 32362+ return;
32989+} 32363+}
32990diff -urNp linux-2.6.29.6/grsecurity/grsec_ipc.c linux-2.6.29.6/grsecurity/grsec_ipc.c 32364diff -urNp linux-2.6.30.4/grsecurity/grsec_ipc.c linux-2.6.30.4/grsecurity/grsec_ipc.c
32991--- linux-2.6.29.6/grsecurity/grsec_ipc.c 1969-12-31 19:00:00.000000000 -0500 32365--- linux-2.6.30.4/grsecurity/grsec_ipc.c 1969-12-31 19:00:00.000000000 -0500
32992+++ linux-2.6.29.6/grsecurity/grsec_ipc.c 2009-07-23 17:34:32.176740408 -0400 32366+++ linux-2.6.30.4/grsecurity/grsec_ipc.c 2009-07-30 11:10:49.349503559 -0400
32993@@ -0,0 +1,81 @@ 32367@@ -0,0 +1,81 @@
32994+#include <linux/kernel.h> 32368+#include <linux/kernel.h>
32995+#include <linux/sched.h> 32369+#include <linux/sched.h>
@@ -33072,9 +32446,9 @@ diff -urNp linux-2.6.29.6/grsecurity/grsec_ipc.c linux-2.6.29.6/grsecurity/grsec
33072+#endif 32446+#endif
33073+ return; 32447+ return;
33074+} 32448+}
33075diff -urNp linux-2.6.29.6/grsecurity/grsec_link.c linux-2.6.29.6/grsecurity/grsec_link.c 32449diff -urNp linux-2.6.30.4/grsecurity/grsec_link.c linux-2.6.30.4/grsecurity/grsec_link.c
33076--- linux-2.6.29.6/grsecurity/grsec_link.c 1969-12-31 19:00:00.000000000 -0500 32450--- linux-2.6.30.4/grsecurity/grsec_link.c 1969-12-31 19:00:00.000000000 -0500
33077+++ linux-2.6.29.6/grsecurity/grsec_link.c 2009-07-23 17:34:32.176740408 -0400 32451+++ linux-2.6.30.4/grsecurity/grsec_link.c 2009-07-30 11:10:49.349503559 -0400
33078@@ -0,0 +1,43 @@ 32452@@ -0,0 +1,43 @@
33079+#include <linux/kernel.h> 32453+#include <linux/kernel.h>
33080+#include <linux/sched.h> 32454+#include <linux/sched.h>
@@ -33119,9 +32493,9 @@ diff -urNp linux-2.6.29.6/grsecurity/grsec_link.c linux-2.6.29.6/grsecurity/grse
33119+#endif 32493+#endif
33120+ return 0; 32494+ return 0;
33121+} 32495+}
33122diff -urNp linux-2.6.29.6/grsecurity/grsec_log.c linux-2.6.29.6/grsecurity/grsec_log.c 32496diff -urNp linux-2.6.30.4/grsecurity/grsec_log.c linux-2.6.30.4/grsecurity/grsec_log.c
33123--- linux-2.6.29.6/grsecurity/grsec_log.c 1969-12-31 19:00:00.000000000 -0500 32497--- linux-2.6.30.4/grsecurity/grsec_log.c 1969-12-31 19:00:00.000000000 -0500
33124+++ linux-2.6.29.6/grsecurity/grsec_log.c 2009-07-23 17:34:32.177726844 -0400 32498+++ linux-2.6.30.4/grsecurity/grsec_log.c 2009-07-30 11:10:49.350327012 -0400
33125@@ -0,0 +1,288 @@ 32499@@ -0,0 +1,288 @@
33126+#include <linux/kernel.h> 32500+#include <linux/kernel.h>
33127+#include <linux/sched.h> 32501+#include <linux/sched.h>
@@ -33411,9 +32785,9 @@ diff -urNp linux-2.6.29.6/grsecurity/grsec_log.c linux-2.6.29.6/grsecurity/grsec
33411+ gr_log_end(audit); 32785+ gr_log_end(audit);
33412+ END_LOCKS(audit); 32786+ END_LOCKS(audit);
33413+} 32787+}
33414diff -urNp linux-2.6.29.6/grsecurity/grsec_mem.c linux-2.6.29.6/grsecurity/grsec_mem.c 32788diff -urNp linux-2.6.30.4/grsecurity/grsec_mem.c linux-2.6.30.4/grsecurity/grsec_mem.c
33415--- linux-2.6.29.6/grsecurity/grsec_mem.c 1969-12-31 19:00:00.000000000 -0500 32789--- linux-2.6.30.4/grsecurity/grsec_mem.c 1969-12-31 19:00:00.000000000 -0500
33416+++ linux-2.6.29.6/grsecurity/grsec_mem.c 2009-07-23 17:34:32.177726844 -0400 32790+++ linux-2.6.30.4/grsecurity/grsec_mem.c 2009-07-30 11:10:49.350327012 -0400
33417@@ -0,0 +1,71 @@ 32791@@ -0,0 +1,71 @@
33418+#include <linux/kernel.h> 32792+#include <linux/kernel.h>
33419+#include <linux/sched.h> 32793+#include <linux/sched.h>
@@ -33486,9 +32860,9 @@ diff -urNp linux-2.6.29.6/grsecurity/grsec_mem.c linux-2.6.29.6/grsecurity/grsec
33486+ 32860+
33487+ return 0; 32861+ return 0;
33488+} 32862+}
33489diff -urNp linux-2.6.29.6/grsecurity/grsec_mount.c linux-2.6.29.6/grsecurity/grsec_mount.c 32863diff -urNp linux-2.6.30.4/grsecurity/grsec_mount.c linux-2.6.30.4/grsecurity/grsec_mount.c
33490--- linux-2.6.29.6/grsecurity/grsec_mount.c 1969-12-31 19:00:00.000000000 -0500 32864--- linux-2.6.30.4/grsecurity/grsec_mount.c 1969-12-31 19:00:00.000000000 -0500
33491+++ linux-2.6.29.6/grsecurity/grsec_mount.c 2009-07-23 17:34:32.177726844 -0400 32865+++ linux-2.6.30.4/grsecurity/grsec_mount.c 2009-07-30 11:10:49.350327012 -0400
33492@@ -0,0 +1,34 @@ 32866@@ -0,0 +1,34 @@
33493+#include <linux/kernel.h> 32867+#include <linux/kernel.h>
33494+#include <linux/sched.h> 32868+#include <linux/sched.h>
@@ -33524,9 +32898,9 @@ diff -urNp linux-2.6.29.6/grsecurity/grsec_mount.c linux-2.6.29.6/grsecurity/grs
33524+#endif 32898+#endif
33525+ return; 32899+ return;
33526+} 32900+}
33527diff -urNp linux-2.6.29.6/grsecurity/grsec_sig.c linux-2.6.29.6/grsecurity/grsec_sig.c 32901diff -urNp linux-2.6.30.4/grsecurity/grsec_sig.c linux-2.6.30.4/grsecurity/grsec_sig.c
33528--- linux-2.6.29.6/grsecurity/grsec_sig.c 1969-12-31 19:00:00.000000000 -0500 32902--- linux-2.6.30.4/grsecurity/grsec_sig.c 1969-12-31 19:00:00.000000000 -0500
33529+++ linux-2.6.29.6/grsecurity/grsec_sig.c 2009-07-23 17:34:32.177726844 -0400 32903+++ linux-2.6.30.4/grsecurity/grsec_sig.c 2009-07-30 11:10:49.350327012 -0400
33530@@ -0,0 +1,58 @@ 32904@@ -0,0 +1,58 @@
33531+#include <linux/kernel.h> 32905+#include <linux/kernel.h>
33532+#include <linux/sched.h> 32906+#include <linux/sched.h>
@@ -33586,9 +32960,9 @@ diff -urNp linux-2.6.29.6/grsecurity/grsec_sig.c linux-2.6.29.6/grsecurity/grsec
33586+ return; 32960+ return;
33587+} 32961+}
33588+ 32962+
33589diff -urNp linux-2.6.29.6/grsecurity/grsec_sock.c linux-2.6.29.6/grsecurity/grsec_sock.c 32963diff -urNp linux-2.6.30.4/grsecurity/grsec_sock.c linux-2.6.30.4/grsecurity/grsec_sock.c
33590--- linux-2.6.29.6/grsecurity/grsec_sock.c 1969-12-31 19:00:00.000000000 -0500 32964--- linux-2.6.30.4/grsecurity/grsec_sock.c 1969-12-31 19:00:00.000000000 -0500
33591+++ linux-2.6.29.6/grsecurity/grsec_sock.c 2009-07-23 17:34:32.177726844 -0400 32965+++ linux-2.6.30.4/grsecurity/grsec_sock.c 2009-07-30 11:10:49.350327012 -0400
33592@@ -0,0 +1,269 @@ 32966@@ -0,0 +1,269 @@
33593+#include <linux/kernel.h> 32967+#include <linux/kernel.h>
33594+#include <linux/module.h> 32968+#include <linux/module.h>
@@ -33859,9 +33233,9 @@ diff -urNp linux-2.6.29.6/grsecurity/grsec_sock.c linux-2.6.29.6/grsecurity/grse
33859+ return current_cap(); 33233+ return current_cap();
33860+#endif 33234+#endif
33861+} 33235+}
33862diff -urNp linux-2.6.29.6/grsecurity/grsec_sysctl.c linux-2.6.29.6/grsecurity/grsec_sysctl.c 33236diff -urNp linux-2.6.30.4/grsecurity/grsec_sysctl.c linux-2.6.30.4/grsecurity/grsec_sysctl.c
33863--- linux-2.6.29.6/grsecurity/grsec_sysctl.c 1969-12-31 19:00:00.000000000 -0500 33237--- linux-2.6.30.4/grsecurity/grsec_sysctl.c 1969-12-31 19:00:00.000000000 -0500
33864+++ linux-2.6.29.6/grsecurity/grsec_sysctl.c 2009-07-23 17:34:32.178838233 -0400 33238+++ linux-2.6.30.4/grsecurity/grsec_sysctl.c 2009-07-30 11:10:49.351429069 -0400
33865@@ -0,0 +1,435 @@ 33239@@ -0,0 +1,435 @@
33866+#include <linux/kernel.h> 33240+#include <linux/kernel.h>
33867+#include <linux/sched.h> 33241+#include <linux/sched.h>
@@ -34298,9 +33672,9 @@ diff -urNp linux-2.6.29.6/grsecurity/grsec_sysctl.c linux-2.6.29.6/grsecurity/gr
34298+#endif 33672+#endif
34299+ return 0; 33673+ return 0;
34300+} 33674+}
34301diff -urNp linux-2.6.29.6/grsecurity/grsec_textrel.c linux-2.6.29.6/grsecurity/grsec_textrel.c 33675diff -urNp linux-2.6.30.4/grsecurity/grsec_textrel.c linux-2.6.30.4/grsecurity/grsec_textrel.c
34302--- linux-2.6.29.6/grsecurity/grsec_textrel.c 1969-12-31 19:00:00.000000000 -0500 33676--- linux-2.6.30.4/grsecurity/grsec_textrel.c 1969-12-31 19:00:00.000000000 -0500
34303+++ linux-2.6.29.6/grsecurity/grsec_textrel.c 2009-07-23 17:34:32.178838233 -0400 33677+++ linux-2.6.30.4/grsecurity/grsec_textrel.c 2009-07-30 11:10:49.351429069 -0400
34304@@ -0,0 +1,16 @@ 33678@@ -0,0 +1,16 @@
34305+#include <linux/kernel.h> 33679+#include <linux/kernel.h>
34306+#include <linux/sched.h> 33680+#include <linux/sched.h>
@@ -34318,9 +33692,9 @@ diff -urNp linux-2.6.29.6/grsecurity/grsec_textrel.c linux-2.6.29.6/grsecurity/g
34318+#endif 33692+#endif
34319+ return; 33693+ return;
34320+} 33694+}
34321diff -urNp linux-2.6.29.6/grsecurity/grsec_time.c linux-2.6.29.6/grsecurity/grsec_time.c 33695diff -urNp linux-2.6.30.4/grsecurity/grsec_time.c linux-2.6.30.4/grsecurity/grsec_time.c
34322--- linux-2.6.29.6/grsecurity/grsec_time.c 1969-12-31 19:00:00.000000000 -0500 33696--- linux-2.6.30.4/grsecurity/grsec_time.c 1969-12-31 19:00:00.000000000 -0500
34323+++ linux-2.6.29.6/grsecurity/grsec_time.c 2009-07-23 17:34:32.178838233 -0400 33697+++ linux-2.6.30.4/grsecurity/grsec_time.c 2009-07-30 11:10:49.351429069 -0400
34324@@ -0,0 +1,13 @@ 33698@@ -0,0 +1,13 @@
34325+#include <linux/kernel.h> 33699+#include <linux/kernel.h>
34326+#include <linux/sched.h> 33700+#include <linux/sched.h>
@@ -34335,9 +33709,9 @@ diff -urNp linux-2.6.29.6/grsecurity/grsec_time.c linux-2.6.29.6/grsecurity/grse
34335+#endif 33709+#endif
34336+ return; 33710+ return;
34337+} 33711+}
34338diff -urNp linux-2.6.29.6/grsecurity/grsec_tpe.c linux-2.6.29.6/grsecurity/grsec_tpe.c 33712diff -urNp linux-2.6.30.4/grsecurity/grsec_tpe.c linux-2.6.30.4/grsecurity/grsec_tpe.c
34339--- linux-2.6.29.6/grsecurity/grsec_tpe.c 1969-12-31 19:00:00.000000000 -0500 33713--- linux-2.6.30.4/grsecurity/grsec_tpe.c 1969-12-31 19:00:00.000000000 -0500
34340+++ linux-2.6.29.6/grsecurity/grsec_tpe.c 2009-07-23 17:34:32.178838233 -0400 33714+++ linux-2.6.30.4/grsecurity/grsec_tpe.c 2009-07-30 11:10:49.351429069 -0400
34341@@ -0,0 +1,38 @@ 33715@@ -0,0 +1,38 @@
34342+#include <linux/kernel.h> 33716+#include <linux/kernel.h>
34343+#include <linux/sched.h> 33717+#include <linux/sched.h>
@@ -34377,9 +33751,9 @@ diff -urNp linux-2.6.29.6/grsecurity/grsec_tpe.c linux-2.6.29.6/grsecurity/grsec
34377+#endif 33751+#endif
34378+ return 1; 33752+ return 1;
34379+} 33753+}
34380diff -urNp linux-2.6.29.6/grsecurity/grsum.c linux-2.6.29.6/grsecurity/grsum.c 33754diff -urNp linux-2.6.30.4/grsecurity/grsum.c linux-2.6.30.4/grsecurity/grsum.c
34381--- linux-2.6.29.6/grsecurity/grsum.c 1969-12-31 19:00:00.000000000 -0500 33755--- linux-2.6.30.4/grsecurity/grsum.c 1969-12-31 19:00:00.000000000 -0500
34382+++ linux-2.6.29.6/grsecurity/grsum.c 2009-07-23 17:34:32.179767198 -0400 33756+++ linux-2.6.30.4/grsecurity/grsum.c 2009-07-30 11:10:49.351429069 -0400
34383@@ -0,0 +1,59 @@ 33757@@ -0,0 +1,59 @@
34384+#include <linux/err.h> 33758+#include <linux/err.h>
34385+#include <linux/kernel.h> 33759+#include <linux/kernel.h>
@@ -34440,10 +33814,10 @@ diff -urNp linux-2.6.29.6/grsecurity/grsum.c linux-2.6.29.6/grsecurity/grsum.c
34440+ 33814+
34441+ return retval; 33815+ return retval;
34442+} 33816+}
34443diff -urNp linux-2.6.29.6/grsecurity/Kconfig linux-2.6.29.6/grsecurity/Kconfig 33817diff -urNp linux-2.6.30.4/grsecurity/Kconfig linux-2.6.30.4/grsecurity/Kconfig
34444--- linux-2.6.29.6/grsecurity/Kconfig 1969-12-31 19:00:00.000000000 -0500 33818--- linux-2.6.30.4/grsecurity/Kconfig 1969-12-31 19:00:00.000000000 -0500
34445+++ linux-2.6.29.6/grsecurity/Kconfig 2009-07-23 17:36:47.298949106 -0400 33819+++ linux-2.6.30.4/grsecurity/Kconfig 2009-07-30 11:21:32.668508126 -0400
34446@@ -0,0 +1,894 @@ 33820@@ -0,0 +1,895 @@
34447+# 33821+#
34448+# grecurity configuration 33822+# grecurity configuration
34449+# 33823+#
@@ -34596,11 +33970,11 @@ diff -urNp linux-2.6.29.6/grsecurity/Kconfig linux-2.6.29.6/grsecurity/Kconfig
34596+ select PAX_EI_PAX 33970+ select PAX_EI_PAX
34597+ select PAX_PT_PAX_FLAGS 33971+ select PAX_PT_PAX_FLAGS
34598+ select PAX_HAVE_ACL_FLAGS 33972+ select PAX_HAVE_ACL_FLAGS
34599+ select PAX_KERNEXEC if (X86 && !EFI && !COMPAT_VDSO && !PARAVIRT && (!X86_32 || X86_WP_WORKS_OK)) 33973+ select PAX_KERNEXEC if (X86 && (!X86_32 || X86_WP_WORKS_OK))
34600+ select PAX_MEMORY_UDEREF if (!X86_64 && !COMPAT_VDSO) 33974+ select PAX_MEMORY_UDEREF if (X86_32)
34601+ select PAX_RANDKSTACK if (X86_TSC && !X86_64) 33975+ select PAX_RANDKSTACK if (X86_TSC && !X86_64)
34602+ select PAX_SEGMEXEC if (X86 && !X86_64) 33976+ select PAX_SEGMEXEC if (X86_32)
34603+ select PAX_PAGEEXEC if (!X86) 33977+ select PAX_PAGEEXEC
34604+ select PAX_EMUPLT if (ALPHA || PARISC || PPC32 || SPARC32 || SPARC64) 33978+ select PAX_EMUPLT if (ALPHA || PARISC || PPC32 || SPARC32 || SPARC64)
34605+ select PAX_DLRESOLVE if (SPARC32 || SPARC64) 33979+ select PAX_DLRESOLVE if (SPARC32 || SPARC64)
34606+ select PAX_SYSCALL if (PPC32) 33980+ select PAX_SYSCALL if (PPC32)
@@ -34692,6 +34066,7 @@ diff -urNp linux-2.6.29.6/grsecurity/Kconfig linux-2.6.29.6/grsecurity/Kconfig
34692+ 34066+
34693+config GRKERNSEC_PROC_MEMMAP 34067+config GRKERNSEC_PROC_MEMMAP
34694+ bool "Remove addresses from /proc/<pid>/[smaps|maps|stat]" 34068+ bool "Remove addresses from /proc/<pid>/[smaps|maps|stat]"
34069+ default y if (PAX_NOEXEC || PAX_ASLR)
34695+ depends on PAX_NOEXEC || PAX_ASLR 34070+ depends on PAX_NOEXEC || PAX_ASLR
34696+ help 34071+ help
34697+ If you say Y here, the /proc/<pid>/maps and /proc/<pid>/stat files will 34072+ If you say Y here, the /proc/<pid>/maps and /proc/<pid>/stat files will
@@ -34962,8 +34337,8 @@ diff -urNp linux-2.6.29.6/grsecurity/Kconfig linux-2.6.29.6/grsecurity/Kconfig
34962+ depends on GRKERNSEC_CHROOT 34337+ depends on GRKERNSEC_CHROOT
34963+ help 34338+ help
34964+ If you say Y here, processes inside a chroot will not be able to 34339+ If you say Y here, processes inside a chroot will not be able to
34965+ kill, send signals with fcntl, ptrace, capget, getpgid, getsid, 34340+ kill, send signals with fcntl, ptrace, capget, getpgid, setpgid,
34966+ or view any process outside of the chroot. If the sysctl 34341+ getsid, or view any process outside of the chroot. If the sysctl
34967+ option is enabled, a sysctl option with name "chroot_findtask" is 34342+ option is enabled, a sysctl option with name "chroot_findtask" is
34968+ created. 34343+ created.
34969+ 34344+
@@ -35338,9 +34713,9 @@ diff -urNp linux-2.6.29.6/grsecurity/Kconfig linux-2.6.29.6/grsecurity/Kconfig
35338+endmenu 34713+endmenu
35339+ 34714+
35340+endmenu 34715+endmenu
35341diff -urNp linux-2.6.29.6/grsecurity/Makefile linux-2.6.29.6/grsecurity/Makefile 34716diff -urNp linux-2.6.30.4/grsecurity/Makefile linux-2.6.30.4/grsecurity/Makefile
35342--- linux-2.6.29.6/grsecurity/Makefile 1969-12-31 19:00:00.000000000 -0500 34717--- linux-2.6.30.4/grsecurity/Makefile 1969-12-31 19:00:00.000000000 -0500
35343+++ linux-2.6.29.6/grsecurity/Makefile 2009-07-23 17:34:32.180729893 -0400 34718+++ linux-2.6.30.4/grsecurity/Makefile 2009-07-30 11:10:49.352668479 -0400
35344@@ -0,0 +1,21 @@ 34719@@ -0,0 +1,21 @@
35345+# grsecurity's ACL system was originally written in 2001 by Michael Dalton 34720+# grsecurity's ACL system was originally written in 2001 by Michael Dalton
35346+# during 2001-2005 it has been completely redesigned by Brad Spengler 34721+# during 2001-2005 it has been completely redesigned by Brad Spengler
@@ -35363,55 +34738,9 @@ diff -urNp linux-2.6.29.6/grsecurity/Makefile linux-2.6.29.6/grsecurity/Makefile
35363+obj-y += grsec_disabled.o 34738+obj-y += grsec_disabled.o
35364+endif 34739+endif
35365+ 34740+
35366diff -urNp linux-2.6.29.6/include/acpi/processor.h linux-2.6.29.6/include/acpi/processor.h 34741diff -urNp linux-2.6.30.4/include/asm-generic/futex.h linux-2.6.30.4/include/asm-generic/futex.h
35367--- linux-2.6.29.6/include/acpi/processor.h 2009-07-02 19:41:20.000000000 -0400 34742--- linux-2.6.30.4/include/asm-generic/futex.h 2009-07-24 17:47:51.000000000 -0400
35368+++ linux-2.6.29.6/include/acpi/processor.h 2009-07-23 18:40:28.648332539 -0400 34743+++ linux-2.6.30.4/include/asm-generic/futex.h 2009-07-30 09:48:10.105294791 -0400
35369@@ -322,7 +322,7 @@ static inline int acpi_processor_ppc_has
35370 int acpi_processor_tstate_has_changed(struct acpi_processor *pr);
35371 int acpi_processor_get_throttling_info(struct acpi_processor *pr);
35372 extern int acpi_processor_set_throttling(struct acpi_processor *pr, int state);
35373-extern struct file_operations acpi_processor_throttling_fops;
35374+extern const struct file_operations acpi_processor_throttling_fops;
35375 extern void acpi_processor_throttling_init(void);
35376 /* in processor_idle.c */
35377 int acpi_processor_power_init(struct acpi_processor *pr,
35378@@ -336,7 +336,7 @@ extern struct cpuidle_driver acpi_idle_d
35379
35380 /* in processor_thermal.c */
35381 int acpi_processor_get_limit_info(struct acpi_processor *pr);
35382-extern struct file_operations acpi_processor_limit_fops;
35383+extern const struct file_operations acpi_processor_limit_fops;
35384 extern struct thermal_cooling_device_ops processor_cooling_ops;
35385 #ifdef CONFIG_CPU_FREQ
35386 void acpi_thermal_cpufreq_init(void);
35387diff -urNp linux-2.6.29.6/include/asm-frv/atomic.h linux-2.6.29.6/include/asm-frv/atomic.h
35388--- linux-2.6.29.6/include/asm-frv/atomic.h 2009-07-02 19:41:20.000000000 -0400
35389+++ linux-2.6.29.6/include/asm-frv/atomic.h 2009-07-23 17:34:32.180729893 -0400
35390@@ -114,6 +114,10 @@ static inline void atomic_dec(atomic_t *
35391 atomic_sub_return(1, v);
35392 }
35393
35394+#define atomic_inc_unchecked(v) atomic_inc(v)
35395+#define atomic_add_unchecked(i,v) atomic_add((i),(v))
35396+#define atomic_sub_unchecked(i,v) atomic_sub((i),(v))
35397+
35398 #define atomic_dec_return(v) atomic_sub_return(1, (v))
35399 #define atomic_inc_return(v) atomic_add_return(1, (v))
35400
35401diff -urNp linux-2.6.29.6/include/asm-frv/kmap_types.h linux-2.6.29.6/include/asm-frv/kmap_types.h
35402--- linux-2.6.29.6/include/asm-frv/kmap_types.h 2009-07-02 19:41:20.000000000 -0400
35403+++ linux-2.6.29.6/include/asm-frv/kmap_types.h 2009-07-23 17:34:32.180729893 -0400
35404@@ -23,6 +23,7 @@ enum km_type {
35405 KM_IRQ1,
35406 KM_SOFTIRQ0,
35407 KM_SOFTIRQ1,
35408+ KM_CLEARPAGE,
35409 KM_TYPE_NR
35410 };
35411
35412diff -urNp linux-2.6.29.6/include/asm-generic/futex.h linux-2.6.29.6/include/asm-generic/futex.h
35413--- linux-2.6.29.6/include/asm-generic/futex.h 2009-07-02 19:41:20.000000000 -0400
35414+++ linux-2.6.29.6/include/asm-generic/futex.h 2009-07-23 17:34:32.180729893 -0400
35415@@ -6,7 +6,7 @@ 34744@@ -6,7 +6,7 @@
35416 #include <asm/errno.h> 34745 #include <asm/errno.h>
35417 34746
@@ -35430,9 +34759,9 @@ diff -urNp linux-2.6.29.6/include/asm-generic/futex.h linux-2.6.29.6/include/asm
35430 { 34759 {
35431 return -ENOSYS; 34760 return -ENOSYS;
35432 } 34761 }
35433diff -urNp linux-2.6.29.6/include/asm-generic/int-l64.h linux-2.6.29.6/include/asm-generic/int-l64.h 34762diff -urNp linux-2.6.30.4/include/asm-generic/int-l64.h linux-2.6.30.4/include/asm-generic/int-l64.h
35434--- linux-2.6.29.6/include/asm-generic/int-l64.h 2009-07-02 19:41:20.000000000 -0400 34763--- linux-2.6.30.4/include/asm-generic/int-l64.h 2009-07-24 17:47:51.000000000 -0400
35435+++ linux-2.6.29.6/include/asm-generic/int-l64.h 2009-07-23 17:34:32.180729893 -0400 34764+++ linux-2.6.30.4/include/asm-generic/int-l64.h 2009-07-30 09:48:10.105294791 -0400
35436@@ -44,6 +44,8 @@ typedef unsigned int u32; 34765@@ -44,6 +44,8 @@ typedef unsigned int u32;
35437 typedef signed long s64; 34766 typedef signed long s64;
35438 typedef unsigned long u64; 34767 typedef unsigned long u64;
@@ -35442,9 +34771,9 @@ diff -urNp linux-2.6.29.6/include/asm-generic/int-l64.h linux-2.6.29.6/include/a
35442 #define S8_C(x) x 34771 #define S8_C(x) x
35443 #define U8_C(x) x ## U 34772 #define U8_C(x) x ## U
35444 #define S16_C(x) x 34773 #define S16_C(x) x
35445diff -urNp linux-2.6.29.6/include/asm-generic/int-ll64.h linux-2.6.29.6/include/asm-generic/int-ll64.h 34774diff -urNp linux-2.6.30.4/include/asm-generic/int-ll64.h linux-2.6.30.4/include/asm-generic/int-ll64.h
35446--- linux-2.6.29.6/include/asm-generic/int-ll64.h 2009-07-02 19:41:20.000000000 -0400 34775--- linux-2.6.30.4/include/asm-generic/int-ll64.h 2009-07-24 17:47:51.000000000 -0400
35447+++ linux-2.6.29.6/include/asm-generic/int-ll64.h 2009-07-23 17:34:32.180729893 -0400 34776+++ linux-2.6.30.4/include/asm-generic/int-ll64.h 2009-07-30 09:48:10.105294791 -0400
35448@@ -49,6 +49,8 @@ typedef unsigned int u32; 34777@@ -49,6 +49,8 @@ typedef unsigned int u32;
35449 typedef signed long long s64; 34778 typedef signed long long s64;
35450 typedef unsigned long long u64; 34779 typedef unsigned long long u64;
@@ -35454,10 +34783,10 @@ diff -urNp linux-2.6.29.6/include/asm-generic/int-ll64.h linux-2.6.29.6/include/
35454 #define S8_C(x) x 34783 #define S8_C(x) x
35455 #define U8_C(x) x ## U 34784 #define U8_C(x) x ## U
35456 #define S16_C(x) x 34785 #define S16_C(x) x
35457diff -urNp linux-2.6.29.6/include/asm-generic/vmlinux.lds.h linux-2.6.29.6/include/asm-generic/vmlinux.lds.h 34786diff -urNp linux-2.6.30.4/include/asm-generic/vmlinux.lds.h linux-2.6.30.4/include/asm-generic/vmlinux.lds.h
35458--- linux-2.6.29.6/include/asm-generic/vmlinux.lds.h 2009-07-02 19:41:20.000000000 -0400 34787--- linux-2.6.30.4/include/asm-generic/vmlinux.lds.h 2009-07-24 17:47:51.000000000 -0400
35459+++ linux-2.6.29.6/include/asm-generic/vmlinux.lds.h 2009-07-23 17:34:32.181776916 -0400 34788+++ linux-2.6.30.4/include/asm-generic/vmlinux.lds.h 2009-08-04 17:52:34.399966119 -0400
35460@@ -88,6 +88,7 @@ 34789@@ -121,6 +121,7 @@
35461 .rodata : AT(ADDR(.rodata) - LOAD_OFFSET) { \ 34790 .rodata : AT(ADDR(.rodata) - LOAD_OFFSET) { \
35462 VMLINUX_SYMBOL(__start_rodata) = .; \ 34791 VMLINUX_SYMBOL(__start_rodata) = .; \
35463 *(.rodata) *(.rodata.*) \ 34792 *(.rodata) *(.rodata.*) \
@@ -35465,71 +34794,30 @@ diff -urNp linux-2.6.29.6/include/asm-generic/vmlinux.lds.h linux-2.6.29.6/inclu
35465 *(__vermagic) /* Kernel version magic */ \ 34794 *(__vermagic) /* Kernel version magic */ \
35466 *(__markers_strings) /* Markers: strings */ \ 34795 *(__markers_strings) /* Markers: strings */ \
35467 *(__tracepoints_strings)/* Tracepoints: strings */ \ 34796 *(__tracepoints_strings)/* Tracepoints: strings */ \
35468diff -urNp linux-2.6.29.6/include/asm-m32r/atomic.h linux-2.6.29.6/include/asm-m32r/atomic.h 34797@@ -476,8 +477,10 @@
35469--- linux-2.6.29.6/include/asm-m32r/atomic.h 2009-07-02 19:41:20.000000000 -0400 34798 VMLINUX_SYMBOL(__per_cpu_load) = .; \
35470+++ linux-2.6.29.6/include/asm-m32r/atomic.h 2009-07-23 17:34:32.181776916 -0400 34799 .data.percpu vaddr : AT(VMLINUX_SYMBOL(__per_cpu_load) \
35471@@ -308,6 +308,10 @@ static __inline__ void atomic_set_mask(u 34800 - LOAD_OFFSET) { \
35472 local_irq_restore(flags); 34801+ VMLINUX_SYMBOL(__per_cpu_load) = . + __per_cpu_load; \
35473 } 34802 VMLINUX_SYMBOL(__per_cpu_start) = .; \
35474 34803 *(.data.percpu.first) \
35475+#define atomic_inc_unchecked(v) atomic_inc(v) 34804+ . = ALIGN(PAGE_SIZE); \
35476+#define atomic_add_unchecked(i,v) atomic_add((i),(v)) 34805 *(.data.percpu.page_aligned) \
35477+#define atomic_sub_unchecked(i,v) atomic_sub((i),(v)) 34806 *(.data.percpu) \
35478+ 34807 *(.data.percpu.shared_aligned) \
35479 /* Atomic operations are already serializing on m32r */ 34808diff -urNp linux-2.6.30.4/include/drm/drm_pciids.h linux-2.6.30.4/include/drm/drm_pciids.h
35480 #define smp_mb__before_atomic_dec() barrier() 34809--- linux-2.6.30.4/include/drm/drm_pciids.h 2009-07-24 17:47:51.000000000 -0400
35481 #define smp_mb__after_atomic_dec() barrier() 34810+++ linux-2.6.30.4/include/drm/drm_pciids.h 2009-07-30 09:48:10.106233963 -0400
35482diff -urNp linux-2.6.29.6/include/asm-m32r/kmap_types.h linux-2.6.29.6/include/asm-m32r/kmap_types.h 34811@@ -356,7 +356,7 @@
35483--- linux-2.6.29.6/include/asm-m32r/kmap_types.h 2009-07-02 19:41:20.000000000 -0400 34812 {0x1002, 0x9614, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RS780|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \
35484+++ linux-2.6.29.6/include/asm-m32r/kmap_types.h 2009-07-23 17:34:32.181776916 -0400 34813 {0x1002, 0x9615, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RS780|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \
35485@@ -21,7 +21,8 @@ D(9) KM_IRQ0, 34814 {0x1002, 0x9616, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RS780|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \
35486 D(10) KM_IRQ1,
35487 D(11) KM_SOFTIRQ0,
35488 D(12) KM_SOFTIRQ1,
35489-D(13) KM_TYPE_NR
35490+D(13) KM_CLEARPAGE,
35491+D(14) KM_TYPE_NR
35492 };
35493
35494 #undef D
35495diff -urNp linux-2.6.29.6/include/asm-mn10300/atomic.h linux-2.6.29.6/include/asm-mn10300/atomic.h
35496--- linux-2.6.29.6/include/asm-mn10300/atomic.h 2009-07-02 19:41:20.000000000 -0400
35497+++ linux-2.6.29.6/include/asm-mn10300/atomic.h 2009-07-23 17:34:32.181776916 -0400
35498@@ -145,6 +145,10 @@ static inline void atomic_clear_mask(uns
35499 #define atomic_xchg(ptr, v) (xchg(&(ptr)->counter, (v)))
35500 #define atomic_cmpxchg(v, old, new) (cmpxchg(&((v)->counter), (old), (new)))
35501
35502+#define atomic_inc_unchecked(v) atomic_inc(v)
35503+#define atomic_add_unchecked(i,v) atomic_add((i),(v))
35504+#define atomic_sub_unchecked(i,v) atomic_sub((i),(v))
35505+
35506 /* Atomic operations are already serializing on MN10300??? */
35507 #define smp_mb__before_atomic_dec() barrier()
35508 #define smp_mb__after_atomic_dec() barrier()
35509diff -urNp linux-2.6.29.6/include/asm-mn10300/kmap_types.h linux-2.6.29.6/include/asm-mn10300/kmap_types.h
35510--- linux-2.6.29.6/include/asm-mn10300/kmap_types.h 2009-07-02 19:41:20.000000000 -0400
35511+++ linux-2.6.29.6/include/asm-mn10300/kmap_types.h 2009-07-23 17:34:32.181776916 -0400
35512@@ -25,6 +25,7 @@ enum km_type {
35513 KM_IRQ1,
35514 KM_SOFTIRQ0,
35515 KM_SOFTIRQ1,
35516+ KM_CLEARPAGE,
35517 KM_TYPE_NR
35518 };
35519
35520diff -urNp linux-2.6.29.6/include/drm/drm_pciids.h linux-2.6.29.6/include/drm/drm_pciids.h
35521--- linux-2.6.29.6/include/drm/drm_pciids.h 2009-07-02 19:41:20.000000000 -0400
35522+++ linux-2.6.29.6/include/drm/drm_pciids.h 2009-07-23 17:34:32.182748165 -0400
35523@@ -243,7 +243,7 @@
35524 {0x1002, 0x796d, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RS740|RADEON_IS_IGP|RADEON_NEW_MEMMAP|RADEON_IS_IGPGART}, \
35525 {0x1002, 0x796e, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RS740|RADEON_IS_IGP|RADEON_NEW_MEMMAP|RADEON_IS_IGPGART}, \
35526 {0x1002, 0x796f, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RS740|RADEON_IS_IGP|RADEON_NEW_MEMMAP|RADEON_IS_IGPGART}, \
35527- {0, 0, 0} 34815- {0, 0, 0}
35528+ {0, 0, 0, 0, 0, 0} 34816+ {0, 0, 0, 0, 0, 0}
35529 34817
35530 #define r128_PCI_IDS \ 34818 #define r128_PCI_IDS \
35531 {0x1002, 0x4c45, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, \ 34819 {0x1002, 0x4c45, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, \
35532@@ -283,14 +283,14 @@ 34820@@ -396,14 +396,14 @@
35533 {0x1002, 0x5446, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, \ 34821 {0x1002, 0x5446, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, \
35534 {0x1002, 0x544C, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, \ 34822 {0x1002, 0x544C, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, \
35535 {0x1002, 0x5452, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, \ 34823 {0x1002, 0x5452, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, \
@@ -35546,7 +34834,7 @@ diff -urNp linux-2.6.29.6/include/drm/drm_pciids.h linux-2.6.29.6/include/drm/dr
35546 34834
35547 #define mach64_PCI_IDS \ 34835 #define mach64_PCI_IDS \
35548 {0x1002, 0x4749, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, \ 34836 {0x1002, 0x4749, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, \
35549@@ -313,7 +313,7 @@ 34837@@ -426,7 +426,7 @@
35550 {0x1002, 0x4c53, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, \ 34838 {0x1002, 0x4c53, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, \
35551 {0x1002, 0x4c4d, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, \ 34839 {0x1002, 0x4c4d, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, \
35552 {0x1002, 0x4c4e, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, \ 34840 {0x1002, 0x4c4e, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, \
@@ -35555,7 +34843,7 @@ diff -urNp linux-2.6.29.6/include/drm/drm_pciids.h linux-2.6.29.6/include/drm/dr
35555 34843
35556 #define sisdrv_PCI_IDS \ 34844 #define sisdrv_PCI_IDS \
35557 {0x1039, 0x0300, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, \ 34845 {0x1039, 0x0300, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, \
35558@@ -324,7 +324,7 @@ 34846@@ -437,7 +437,7 @@
35559 {0x1039, 0x7300, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, \ 34847 {0x1039, 0x7300, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, \
35560 {0x18CA, 0x0040, PCI_ANY_ID, PCI_ANY_ID, 0, 0, SIS_CHIP_315}, \ 34848 {0x18CA, 0x0040, PCI_ANY_ID, PCI_ANY_ID, 0, 0, SIS_CHIP_315}, \
35561 {0x18CA, 0x0042, PCI_ANY_ID, PCI_ANY_ID, 0, 0, SIS_CHIP_315}, \ 34849 {0x18CA, 0x0042, PCI_ANY_ID, PCI_ANY_ID, 0, 0, SIS_CHIP_315}, \
@@ -35564,7 +34852,7 @@ diff -urNp linux-2.6.29.6/include/drm/drm_pciids.h linux-2.6.29.6/include/drm/dr
35564 34852
35565 #define tdfx_PCI_IDS \ 34853 #define tdfx_PCI_IDS \
35566 {0x121a, 0x0003, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, \ 34854 {0x121a, 0x0003, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, \
35567@@ -333,7 +333,7 @@ 34855@@ -446,7 +446,7 @@
35568 {0x121a, 0x0007, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, \ 34856 {0x121a, 0x0007, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, \
35569 {0x121a, 0x0009, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, \ 34857 {0x121a, 0x0009, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, \
35570 {0x121a, 0x000b, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, \ 34858 {0x121a, 0x000b, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, \
@@ -35573,7 +34861,7 @@ diff -urNp linux-2.6.29.6/include/drm/drm_pciids.h linux-2.6.29.6/include/drm/dr
35573 34861
35574 #define viadrv_PCI_IDS \ 34862 #define viadrv_PCI_IDS \
35575 {0x1106, 0x3022, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, \ 34863 {0x1106, 0x3022, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, \
35576@@ -345,25 +345,25 @@ 34864@@ -458,14 +458,14 @@
35577 {0x1106, 0x3343, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, \ 34865 {0x1106, 0x3343, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, \
35578 {0x1106, 0x3230, PCI_ANY_ID, PCI_ANY_ID, 0, 0, VIA_DX9_0}, \ 34866 {0x1106, 0x3230, PCI_ANY_ID, PCI_ANY_ID, 0, 0, VIA_DX9_0}, \
35579 {0x1106, 0x3157, PCI_ANY_ID, PCI_ANY_ID, 0, 0, VIA_PRO_GROUP_A}, \ 34867 {0x1106, 0x3157, PCI_ANY_ID, PCI_ANY_ID, 0, 0, VIA_PRO_GROUP_A}, \
@@ -35590,9 +34878,10 @@ diff -urNp linux-2.6.29.6/include/drm/drm_pciids.h linux-2.6.29.6/include/drm/dr
35590 34878
35591 #define i830_PCI_IDS \ 34879 #define i830_PCI_IDS \
35592 {0x8086, 0x3577, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, \ 34880 {0x8086, 0x3577, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, \
35593 {0x8086, 0x2562, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, \ 34881@@ -473,11 +473,11 @@
35594 {0x8086, 0x3582, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, \ 34882 {0x8086, 0x3582, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, \
35595 {0x8086, 0x2572, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, \ 34883 {0x8086, 0x2572, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, \
34884 {0x8086, 0x358e, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, \
35596- {0, 0, 0} 34885- {0, 0, 0}
35597+ {0, 0, 0, 0, 0, 0} 34886+ {0, 0, 0, 0, 0, 0}
35598 34887
@@ -35603,7 +34892,7 @@ diff -urNp linux-2.6.29.6/include/drm/drm_pciids.h linux-2.6.29.6/include/drm/dr
35603 34892
35604 #define savage_PCI_IDS \ 34893 #define savage_PCI_IDS \
35605 {0x5333, 0x8a20, PCI_ANY_ID, PCI_ANY_ID, 0, 0, S3_SAVAGE3D}, \ 34894 {0x5333, 0x8a20, PCI_ANY_ID, PCI_ANY_ID, 0, 0, S3_SAVAGE3D}, \
35606@@ -389,10 +389,10 @@ 34895@@ -503,10 +503,10 @@
35607 {0x5333, 0x8d02, PCI_ANY_ID, PCI_ANY_ID, 0, 0, S3_TWISTER}, \ 34896 {0x5333, 0x8d02, PCI_ANY_ID, PCI_ANY_ID, 0, 0, S3_TWISTER}, \
35608 {0x5333, 0x8d03, PCI_ANY_ID, PCI_ANY_ID, 0, 0, S3_PROSAVAGEDDR}, \ 34897 {0x5333, 0x8d03, PCI_ANY_ID, PCI_ANY_ID, 0, 0, S3_PROSAVAGEDDR}, \
35609 {0x5333, 0x8d04, PCI_ANY_ID, PCI_ANY_ID, 0, 0, S3_PROSAVAGEDDR}, \ 34898 {0x5333, 0x8d04, PCI_ANY_ID, PCI_ANY_ID, 0, 0, S3_PROSAVAGEDDR}, \
@@ -35616,16 +34905,16 @@ diff -urNp linux-2.6.29.6/include/drm/drm_pciids.h linux-2.6.29.6/include/drm/dr
35616 34905
35617 #define i915_PCI_IDS \ 34906 #define i915_PCI_IDS \
35618 {0x8086, 0x3577, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_DISPLAY_VGA << 8, 0xffff00, 0}, \ 34907 {0x8086, 0x3577, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_DISPLAY_VGA << 8, 0xffff00, 0}, \
35619@@ -419,4 +419,4 @@ 34908@@ -536,4 +536,4 @@
35620 {0x8086, 0x2e12, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_DISPLAY_VGA << 8, 0xffff00, 0}, \ 34909 {0x8086, 0xa001, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_DISPLAY_VGA << 8, 0xffff00, 0}, \
35621 {0x8086, 0x2e22, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_DISPLAY_VGA << 8, 0xffff00, 0}, \ 34910 {0x8086, 0xa011, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_DISPLAY_VGA << 8, 0xffff00, 0}, \
35622 {0x8086, 0x2e32, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_DISPLAY_VGA << 8, 0xffff00, 0}, \ 34911 {0x8086, 0x35e8, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_DISPLAY_VGA << 8, 0xffff00, 0}, \
35623- {0, 0, 0} 34912- {0, 0, 0}
35624+ {0, 0, 0, 0, 0, 0} 34913+ {0, 0, 0, 0, 0, 0}
35625diff -urNp linux-2.6.29.6/include/drm/drmP.h linux-2.6.29.6/include/drm/drmP.h 34914diff -urNp linux-2.6.30.4/include/drm/drmP.h linux-2.6.30.4/include/drm/drmP.h
35626--- linux-2.6.29.6/include/drm/drmP.h 2009-07-02 19:41:20.000000000 -0400 34915--- linux-2.6.30.4/include/drm/drmP.h 2009-07-24 17:47:51.000000000 -0400
35627+++ linux-2.6.29.6/include/drm/drmP.h 2009-07-23 18:40:27.472293076 -0400 34916+++ linux-2.6.30.4/include/drm/drmP.h 2009-07-30 09:48:10.106233963 -0400
35628@@ -769,7 +769,7 @@ struct drm_driver { 34917@@ -783,7 +783,7 @@ struct drm_driver {
35629 void (*gem_free_object) (struct drm_gem_object *obj); 34918 void (*gem_free_object) (struct drm_gem_object *obj);
35630 34919
35631 /* Driver private ops for this object */ 34920 /* Driver private ops for this object */
@@ -35634,7 +34923,7 @@ diff -urNp linux-2.6.29.6/include/drm/drmP.h linux-2.6.29.6/include/drm/drmP.h
35634 34923
35635 int major; 34924 int major;
35636 int minor; 34925 int minor;
35637@@ -825,7 +825,7 @@ struct drm_device { 34926@@ -886,7 +886,7 @@ struct drm_device {
35638 34927
35639 /** \name Usage Counters */ 34928 /** \name Usage Counters */
35640 /*@{ */ 34929 /*@{ */
@@ -35643,7 +34932,7 @@ diff -urNp linux-2.6.29.6/include/drm/drmP.h linux-2.6.29.6/include/drm/drmP.h
35643 atomic_t ioctl_count; /**< Outstanding IOCTLs pending */ 34932 atomic_t ioctl_count; /**< Outstanding IOCTLs pending */
35644 atomic_t vma_count; /**< Outstanding vma areas open */ 34933 atomic_t vma_count; /**< Outstanding vma areas open */
35645 int buf_use; /**< Buffers in use -- cannot alloc */ 34934 int buf_use; /**< Buffers in use -- cannot alloc */
35646@@ -836,7 +836,7 @@ struct drm_device { 34935@@ -897,7 +897,7 @@ struct drm_device {
35647 /*@{ */ 34936 /*@{ */
35648 unsigned long counters; 34937 unsigned long counters;
35649 enum drm_stat_type types[15]; 34938 enum drm_stat_type types[15];
@@ -35652,9 +34941,9 @@ diff -urNp linux-2.6.29.6/include/drm/drmP.h linux-2.6.29.6/include/drm/drmP.h
35652 /*@} */ 34941 /*@} */
35653 34942
35654 struct list_head filelist; 34943 struct list_head filelist;
35655diff -urNp linux-2.6.29.6/include/linux/a.out.h linux-2.6.29.6/include/linux/a.out.h 34944diff -urNp linux-2.6.30.4/include/linux/a.out.h linux-2.6.30.4/include/linux/a.out.h
35656--- linux-2.6.29.6/include/linux/a.out.h 2009-07-02 19:41:20.000000000 -0400 34945--- linux-2.6.30.4/include/linux/a.out.h 2009-07-24 17:47:51.000000000 -0400
35657+++ linux-2.6.29.6/include/linux/a.out.h 2009-07-23 17:34:32.184929094 -0400 34946+++ linux-2.6.30.4/include/linux/a.out.h 2009-07-30 09:48:10.107682096 -0400
35658@@ -39,6 +39,14 @@ enum machine_type { 34947@@ -39,6 +39,14 @@ enum machine_type {
35659 M_MIPS2 = 152 /* MIPS R6000/R4000 binary */ 34948 M_MIPS2 = 152 /* MIPS R6000/R4000 binary */
35660 }; 34949 };
@@ -35670,9 +34959,9 @@ diff -urNp linux-2.6.29.6/include/linux/a.out.h linux-2.6.29.6/include/linux/a.o
35670 #if !defined (N_MAGIC) 34959 #if !defined (N_MAGIC)
35671 #define N_MAGIC(exec) ((exec).a_info & 0xffff) 34960 #define N_MAGIC(exec) ((exec).a_info & 0xffff)
35672 #endif 34961 #endif
35673diff -urNp linux-2.6.29.6/include/linux/atmdev.h linux-2.6.29.6/include/linux/atmdev.h 34962diff -urNp linux-2.6.30.4/include/linux/atmdev.h linux-2.6.30.4/include/linux/atmdev.h
35674--- linux-2.6.29.6/include/linux/atmdev.h 2009-07-02 19:41:20.000000000 -0400 34963--- linux-2.6.30.4/include/linux/atmdev.h 2009-07-24 17:47:51.000000000 -0400
35675+++ linux-2.6.29.6/include/linux/atmdev.h 2009-07-23 17:34:32.185714643 -0400 34964+++ linux-2.6.30.4/include/linux/atmdev.h 2009-07-30 09:48:10.107682096 -0400
35676@@ -237,7 +237,7 @@ struct compat_atm_iobuf { 34965@@ -237,7 +237,7 @@ struct compat_atm_iobuf {
35677 #endif 34966 #endif
35678 34967
@@ -35682,10 +34971,10 @@ diff -urNp linux-2.6.29.6/include/linux/atmdev.h linux-2.6.29.6/include/linux/at
35682 __AAL_STAT_ITEMS 34971 __AAL_STAT_ITEMS
35683 #undef __HANDLE_ITEM 34972 #undef __HANDLE_ITEM
35684 }; 34973 };
35685diff -urNp linux-2.6.29.6/include/linux/binfmts.h linux-2.6.29.6/include/linux/binfmts.h 34974diff -urNp linux-2.6.30.4/include/linux/binfmts.h linux-2.6.30.4/include/linux/binfmts.h
35686--- linux-2.6.29.6/include/linux/binfmts.h 2009-07-02 19:41:20.000000000 -0400 34975--- linux-2.6.30.4/include/linux/binfmts.h 2009-07-24 17:47:51.000000000 -0400
35687+++ linux-2.6.29.6/include/linux/binfmts.h 2009-07-23 17:34:32.186791450 -0400 34976+++ linux-2.6.30.4/include/linux/binfmts.h 2009-07-30 09:48:10.107682096 -0400
35688@@ -79,6 +79,7 @@ struct linux_binfmt { 34977@@ -78,6 +78,7 @@ struct linux_binfmt {
35689 int (*load_binary)(struct linux_binprm *, struct pt_regs * regs); 34978 int (*load_binary)(struct linux_binprm *, struct pt_regs * regs);
35690 int (*load_shlib)(struct file *); 34979 int (*load_shlib)(struct file *);
35691 int (*core_dump)(long signr, struct pt_regs *regs, struct file *file, unsigned long limit); 34980 int (*core_dump)(long signr, struct pt_regs *regs, struct file *file, unsigned long limit);
@@ -35693,9 +34982,9 @@ diff -urNp linux-2.6.29.6/include/linux/binfmts.h linux-2.6.29.6/include/linux/b
35693 unsigned long min_coredump; /* minimal dump size */ 34982 unsigned long min_coredump; /* minimal dump size */
35694 int hasvdso; 34983 int hasvdso;
35695 }; 34984 };
35696diff -urNp linux-2.6.29.6/include/linux/cache.h linux-2.6.29.6/include/linux/cache.h 34985diff -urNp linux-2.6.30.4/include/linux/cache.h linux-2.6.30.4/include/linux/cache.h
35697--- linux-2.6.29.6/include/linux/cache.h 2009-07-02 19:41:20.000000000 -0400 34986--- linux-2.6.30.4/include/linux/cache.h 2009-07-24 17:47:51.000000000 -0400
35698+++ linux-2.6.29.6/include/linux/cache.h 2009-07-23 17:34:32.186791450 -0400 34987+++ linux-2.6.30.4/include/linux/cache.h 2009-07-30 09:48:10.107682096 -0400
35699@@ -16,6 +16,10 @@ 34988@@ -16,6 +16,10 @@
35700 #define __read_mostly 34989 #define __read_mostly
35701 #endif 34990 #endif
@@ -35707,9 +34996,9 @@ diff -urNp linux-2.6.29.6/include/linux/cache.h linux-2.6.29.6/include/linux/cac
35707 #ifndef ____cacheline_aligned 34996 #ifndef ____cacheline_aligned
35708 #define ____cacheline_aligned __attribute__((__aligned__(SMP_CACHE_BYTES))) 34997 #define ____cacheline_aligned __attribute__((__aligned__(SMP_CACHE_BYTES)))
35709 #endif 34998 #endif
35710diff -urNp linux-2.6.29.6/include/linux/capability.h linux-2.6.29.6/include/linux/capability.h 34999diff -urNp linux-2.6.30.4/include/linux/capability.h linux-2.6.30.4/include/linux/capability.h
35711--- linux-2.6.29.6/include/linux/capability.h 2009-07-02 19:41:20.000000000 -0400 35000--- linux-2.6.30.4/include/linux/capability.h 2009-07-24 17:47:51.000000000 -0400
35712+++ linux-2.6.29.6/include/linux/capability.h 2009-07-23 17:34:32.186791450 -0400 35001+++ linux-2.6.30.4/include/linux/capability.h 2009-07-30 11:10:49.423442785 -0400
35713@@ -563,6 +563,7 @@ extern const kernel_cap_t __cap_init_eff 35002@@ -563,6 +563,7 @@ extern const kernel_cap_t __cap_init_eff
35714 (security_real_capable_noaudit((t), (cap)) == 0) 35003 (security_real_capable_noaudit((t), (cap)) == 0)
35715 35004
@@ -35718,10 +35007,10 @@ diff -urNp linux-2.6.29.6/include/linux/capability.h linux-2.6.29.6/include/linu
35718 35007
35719 /* audit system wants to get cap info from files as well */ 35008 /* audit system wants to get cap info from files as well */
35720 struct dentry; 35009 struct dentry;
35721diff -urNp linux-2.6.29.6/include/linux/cgroup.h linux-2.6.29.6/include/linux/cgroup.h 35010diff -urNp linux-2.6.30.4/include/linux/cgroup.h linux-2.6.30.4/include/linux/cgroup.h
35722--- linux-2.6.29.6/include/linux/cgroup.h 2009-07-02 19:41:20.000000000 -0400 35011--- linux-2.6.30.4/include/linux/cgroup.h 2009-07-24 17:47:51.000000000 -0400
35723+++ linux-2.6.29.6/include/linux/cgroup.h 2009-07-23 18:40:28.658648615 -0400 35012+++ linux-2.6.30.4/include/linux/cgroup.h 2009-07-30 09:48:10.107682096 -0400
35724@@ -35,7 +35,7 @@ extern void cgroup_exit(struct task_stru 35013@@ -37,7 +37,7 @@ extern void cgroup_exit(struct task_stru
35725 extern int cgroupstats_build(struct cgroupstats *stats, 35014 extern int cgroupstats_build(struct cgroupstats *stats,
35726 struct dentry *dentry); 35015 struct dentry *dentry);
35727 35016
@@ -35730,9 +35019,9 @@ diff -urNp linux-2.6.29.6/include/linux/cgroup.h linux-2.6.29.6/include/linux/cg
35730 35019
35731 /* Define the enumeration of all cgroup subsystems */ 35020 /* Define the enumeration of all cgroup subsystems */
35732 #define SUBSYS(_x) _x ## _subsys_id, 35021 #define SUBSYS(_x) _x ## _subsys_id,
35733diff -urNp linux-2.6.29.6/include/linux/cpumask.h linux-2.6.29.6/include/linux/cpumask.h 35022diff -urNp linux-2.6.30.4/include/linux/cpumask.h linux-2.6.30.4/include/linux/cpumask.h
35734--- linux-2.6.29.6/include/linux/cpumask.h 2009-07-02 19:41:20.000000000 -0400 35023--- linux-2.6.30.4/include/linux/cpumask.h 2009-07-24 17:47:51.000000000 -0400
35735+++ linux-2.6.29.6/include/linux/cpumask.h 2009-07-23 17:34:32.187810630 -0400 35024+++ linux-2.6.30.4/include/linux/cpumask.h 2009-07-30 09:48:10.109008378 -0400
35736@@ -142,7 +142,6 @@ 35025@@ -142,7 +142,6 @@
35737 #include <linux/bitmap.h> 35026 #include <linux/bitmap.h>
35738 35027
@@ -35741,21 +35030,9 @@ diff -urNp linux-2.6.29.6/include/linux/cpumask.h linux-2.6.29.6/include/linux/c
35741 35030
35742 #ifndef CONFIG_DISABLE_OBSOLETE_CPUMASK_FUNCTIONS 35031 #ifndef CONFIG_DISABLE_OBSOLETE_CPUMASK_FUNCTIONS
35743 #define cpu_set(cpu, dst) __cpu_set((cpu), &(dst)) 35032 #define cpu_set(cpu, dst) __cpu_set((cpu), &(dst))
35744diff -urNp linux-2.6.29.6/include/linux/dcache.h linux-2.6.29.6/include/linux/dcache.h 35033diff -urNp linux-2.6.30.4/include/linux/elf.h linux-2.6.30.4/include/linux/elf.h
35745--- linux-2.6.29.6/include/linux/dcache.h 2009-07-02 19:41:20.000000000 -0400 35034--- linux-2.6.30.4/include/linux/elf.h 2009-07-24 17:47:51.000000000 -0400
35746+++ linux-2.6.29.6/include/linux/dcache.h 2009-07-23 18:40:28.672304095 -0400 35035+++ linux-2.6.30.4/include/linux/elf.h 2009-07-30 09:48:10.109008378 -0400
35747@@ -112,7 +112,7 @@ struct dentry {
35748 struct list_head d_subdirs; /* our children */
35749 struct list_head d_alias; /* inode alias list */
35750 unsigned long d_time; /* used by d_revalidate */
35751- struct dentry_operations *d_op;
35752+ const struct dentry_operations *d_op;
35753 struct super_block *d_sb; /* The root of the dentry tree */
35754 void *d_fsdata; /* fs-specific data */
35755
35756diff -urNp linux-2.6.29.6/include/linux/elf.h linux-2.6.29.6/include/linux/elf.h
35757--- linux-2.6.29.6/include/linux/elf.h 2009-07-02 19:41:20.000000000 -0400
35758+++ linux-2.6.29.6/include/linux/elf.h 2009-07-23 17:34:32.187810630 -0400
35759@@ -49,6 +49,17 @@ typedef __s64 Elf64_Sxword; 35036@@ -49,6 +49,17 @@ typedef __s64 Elf64_Sxword;
35760 #define PT_GNU_EH_FRAME 0x6474e550 35037 #define PT_GNU_EH_FRAME 0x6474e550
35761 35038
@@ -35828,10 +35105,21 @@ diff -urNp linux-2.6.29.6/include/linux/elf.h linux-2.6.29.6/include/linux/elf.h
35828 35105
35829 #endif 35106 #endif
35830 35107
35831diff -urNp linux-2.6.29.6/include/linux/fs.h linux-2.6.29.6/include/linux/fs.h 35108diff -urNp linux-2.6.30.4/include/linux/fs.h linux-2.6.30.4/include/linux/fs.h
35832--- linux-2.6.29.6/include/linux/fs.h 2009-07-02 19:41:20.000000000 -0400 35109--- linux-2.6.30.4/include/linux/fs.h 2009-07-24 17:47:51.000000000 -0400
35833+++ linux-2.6.29.6/include/linux/fs.h 2009-07-23 18:40:28.682280722 -0400 35110+++ linux-2.6.30.4/include/linux/fs.h 2009-08-01 14:57:12.341093728 -0400
35834@@ -2207,7 +2207,7 @@ static int __fops ## _open(struct inode 35111@@ -87,6 +87,10 @@ struct inodes_stat_t {
35112 */
35113 #define FMODE_NOCMTIME ((__force fmode_t)2048)
35114
35115+/* Hack for grsec so as not to require read permission simply to execute
35116+ a binary */
35117+#define FMODE_GREXEC ((__force fmode_t)8192)
35118+
35119 /*
35120 * The below are the various read and write types that we support. Some of
35121 * them include behavioral modifiers that send information down to the
35122@@ -2423,7 +2427,7 @@ static int __fops ## _open(struct inode
35835 __simple_attr_check_format(__fmt, 0ull); \ 35123 __simple_attr_check_format(__fmt, 0ull); \
35836 return simple_attr_open(inode, file, __get, __set, __fmt); \ 35124 return simple_attr_open(inode, file, __get, __set, __fmt); \
35837 } \ 35125 } \
@@ -35840,9 +35128,9 @@ diff -urNp linux-2.6.29.6/include/linux/fs.h linux-2.6.29.6/include/linux/fs.h
35840 .owner = THIS_MODULE, \ 35128 .owner = THIS_MODULE, \
35841 .open = __fops ## _open, \ 35129 .open = __fops ## _open, \
35842 .release = simple_attr_release, \ 35130 .release = simple_attr_release, \
35843diff -urNp linux-2.6.29.6/include/linux/fs_struct.h linux-2.6.29.6/include/linux/fs_struct.h 35131diff -urNp linux-2.6.30.4/include/linux/fs_struct.h linux-2.6.30.4/include/linux/fs_struct.h
35844--- linux-2.6.29.6/include/linux/fs_struct.h 2009-07-02 19:41:20.000000000 -0400 35132--- linux-2.6.30.4/include/linux/fs_struct.h 2009-07-24 17:47:51.000000000 -0400
35845+++ linux-2.6.29.6/include/linux/fs_struct.h 2009-07-23 17:34:32.187810630 -0400 35133+++ linux-2.6.30.4/include/linux/fs_struct.h 2009-07-30 09:48:10.109883773 -0400
35846@@ -4,7 +4,7 @@ 35134@@ -4,7 +4,7 @@
35847 #include <linux/path.h> 35135 #include <linux/path.h>
35848 35136
@@ -35852,9 +35140,9 @@ diff -urNp linux-2.6.29.6/include/linux/fs_struct.h linux-2.6.29.6/include/linux
35852 rwlock_t lock; 35140 rwlock_t lock;
35853 int umask; 35141 int umask;
35854 int in_exec; 35142 int in_exec;
35855diff -urNp linux-2.6.29.6/include/linux/genhd.h linux-2.6.29.6/include/linux/genhd.h 35143diff -urNp linux-2.6.30.4/include/linux/genhd.h linux-2.6.30.4/include/linux/genhd.h
35856--- linux-2.6.29.6/include/linux/genhd.h 2009-07-02 19:41:20.000000000 -0400 35144--- linux-2.6.30.4/include/linux/genhd.h 2009-07-24 17:47:51.000000000 -0400
35857+++ linux-2.6.29.6/include/linux/genhd.h 2009-07-23 17:34:32.188714513 -0400 35145+++ linux-2.6.30.4/include/linux/genhd.h 2009-07-30 09:48:10.109883773 -0400
35858@@ -159,7 +159,7 @@ struct gendisk { 35146@@ -159,7 +159,7 @@ struct gendisk {
35859 35147
35860 struct timer_rand_state *random; 35148 struct timer_rand_state *random;
@@ -35864,9 +35152,9 @@ diff -urNp linux-2.6.29.6/include/linux/genhd.h linux-2.6.29.6/include/linux/gen
35864 struct work_struct async_notify; 35152 struct work_struct async_notify;
35865 #ifdef CONFIG_BLK_DEV_INTEGRITY 35153 #ifdef CONFIG_BLK_DEV_INTEGRITY
35866 struct blk_integrity *integrity; 35154 struct blk_integrity *integrity;
35867diff -urNp linux-2.6.29.6/include/linux/gracl.h linux-2.6.29.6/include/linux/gracl.h 35155diff -urNp linux-2.6.30.4/include/linux/gracl.h linux-2.6.30.4/include/linux/gracl.h
35868--- linux-2.6.29.6/include/linux/gracl.h 1969-12-31 19:00:00.000000000 -0500 35156--- linux-2.6.30.4/include/linux/gracl.h 1969-12-31 19:00:00.000000000 -0500
35869+++ linux-2.6.29.6/include/linux/gracl.h 2009-07-23 17:34:32.188714513 -0400 35157+++ linux-2.6.30.4/include/linux/gracl.h 2009-07-30 11:10:49.440849797 -0400
35870@@ -0,0 +1,318 @@ 35158@@ -0,0 +1,318 @@
35871+#ifndef GR_ACL_H 35159+#ifndef GR_ACL_H
35872+#define GR_ACL_H 35160+#define GR_ACL_H
@@ -36186,9 +35474,9 @@ diff -urNp linux-2.6.29.6/include/linux/gracl.h linux-2.6.29.6/include/linux/gra
36186+ 35474+
36187+#endif 35475+#endif
36188+ 35476+
36189diff -urNp linux-2.6.29.6/include/linux/gralloc.h linux-2.6.29.6/include/linux/gralloc.h 35477diff -urNp linux-2.6.30.4/include/linux/gralloc.h linux-2.6.30.4/include/linux/gralloc.h
36190--- linux-2.6.29.6/include/linux/gralloc.h 1969-12-31 19:00:00.000000000 -0500 35478--- linux-2.6.30.4/include/linux/gralloc.h 1969-12-31 19:00:00.000000000 -0500
36191+++ linux-2.6.29.6/include/linux/gralloc.h 2009-07-23 17:34:32.188714513 -0400 35479+++ linux-2.6.30.4/include/linux/gralloc.h 2009-07-30 11:10:49.444477054 -0400
36192@@ -0,0 +1,9 @@ 35480@@ -0,0 +1,9 @@
36193+#ifndef __GRALLOC_H 35481+#ifndef __GRALLOC_H
36194+#define __GRALLOC_H 35482+#define __GRALLOC_H
@@ -36199,9 +35487,9 @@ diff -urNp linux-2.6.29.6/include/linux/gralloc.h linux-2.6.29.6/include/linux/g
36199+void *acl_alloc_num(unsigned long num, unsigned long len); 35487+void *acl_alloc_num(unsigned long num, unsigned long len);
36200+ 35488+
36201+#endif 35489+#endif
36202diff -urNp linux-2.6.29.6/include/linux/grdefs.h linux-2.6.29.6/include/linux/grdefs.h 35490diff -urNp linux-2.6.30.4/include/linux/grdefs.h linux-2.6.30.4/include/linux/grdefs.h
36203--- linux-2.6.29.6/include/linux/grdefs.h 1969-12-31 19:00:00.000000000 -0500 35491--- linux-2.6.30.4/include/linux/grdefs.h 1969-12-31 19:00:00.000000000 -0500
36204+++ linux-2.6.29.6/include/linux/grdefs.h 2009-07-23 17:34:32.188714513 -0400 35492+++ linux-2.6.30.4/include/linux/grdefs.h 2009-07-30 11:10:49.454486092 -0400
36205@@ -0,0 +1,136 @@ 35493@@ -0,0 +1,136 @@
36206+#ifndef GRDEFS_H 35494+#ifndef GRDEFS_H
36207+#define GRDEFS_H 35495+#define GRDEFS_H
@@ -36339,9 +35627,9 @@ diff -urNp linux-2.6.29.6/include/linux/grdefs.h linux-2.6.29.6/include/linux/gr
36339+}; 35627+};
36340+ 35628+
36341+#endif 35629+#endif
36342diff -urNp linux-2.6.29.6/include/linux/grinternal.h linux-2.6.29.6/include/linux/grinternal.h 35630diff -urNp linux-2.6.30.4/include/linux/grinternal.h linux-2.6.30.4/include/linux/grinternal.h
36343--- linux-2.6.29.6/include/linux/grinternal.h 1969-12-31 19:00:00.000000000 -0500 35631--- linux-2.6.30.4/include/linux/grinternal.h 1969-12-31 19:00:00.000000000 -0500
36344+++ linux-2.6.29.6/include/linux/grinternal.h 2009-07-23 17:34:32.188714513 -0400 35632+++ linux-2.6.30.4/include/linux/grinternal.h 2009-07-30 11:10:49.454486092 -0400
36345@@ -0,0 +1,211 @@ 35633@@ -0,0 +1,211 @@
36346+#ifndef __GRINTERNAL_H 35634+#ifndef __GRINTERNAL_H
36347+#define __GRINTERNAL_H 35635+#define __GRINTERNAL_H
@@ -36554,9 +35842,9 @@ diff -urNp linux-2.6.29.6/include/linux/grinternal.h linux-2.6.29.6/include/linu
36554+#endif 35842+#endif
36555+ 35843+
36556+#endif 35844+#endif
36557diff -urNp linux-2.6.29.6/include/linux/grmsg.h linux-2.6.29.6/include/linux/grmsg.h 35845diff -urNp linux-2.6.30.4/include/linux/grmsg.h linux-2.6.30.4/include/linux/grmsg.h
36558--- linux-2.6.29.6/include/linux/grmsg.h 1969-12-31 19:00:00.000000000 -0500 35846--- linux-2.6.30.4/include/linux/grmsg.h 1969-12-31 19:00:00.000000000 -0500
36559+++ linux-2.6.29.6/include/linux/grmsg.h 2009-07-23 17:34:32.188714513 -0400 35847+++ linux-2.6.30.4/include/linux/grmsg.h 2009-07-30 11:10:49.454486092 -0400
36560@@ -0,0 +1,108 @@ 35848@@ -0,0 +1,108 @@
36561+#define DEFAULTSECMSG "%.256s[%.16s:%d] uid/euid:%u/%u gid/egid:%u/%u, parent %.256s[%.16s:%d] uid/euid:%u/%u gid/egid:%u/%u" 35849+#define DEFAULTSECMSG "%.256s[%.16s:%d] uid/euid:%u/%u gid/egid:%u/%u, parent %.256s[%.16s:%d] uid/euid:%u/%u gid/egid:%u/%u"
36562+#define GR_ACL_PROCACCT_MSG "%.256s[%.16s:%d] IP:%u.%u.%u.%u TTY:%.64s uid/euid:%u/%u gid/egid:%u/%u run time:[%ud %uh %um %us] cpu time:[%ud %uh %um %us] %s with exit code %ld, parent %.256s[%.16s:%d] IP:%u.%u.%u.%u TTY:%.64s uid/euid:%u/%u gid/egid:%u/%u" 35850+#define GR_ACL_PROCACCT_MSG "%.256s[%.16s:%d] IP:%u.%u.%u.%u TTY:%.64s uid/euid:%u/%u gid/egid:%u/%u run time:[%ud %uh %um %us] cpu time:[%ud %uh %um %us] %s with exit code %ld, parent %.256s[%.16s:%d] IP:%u.%u.%u.%u TTY:%.64s uid/euid:%u/%u gid/egid:%u/%u"
@@ -36666,13 +35954,14 @@ diff -urNp linux-2.6.29.6/include/linux/grmsg.h linux-2.6.29.6/include/linux/grm
36666+#define GR_SHMR_AUDIT_MSG "shared memory of uid:%u euid:%u removed by " 35954+#define GR_SHMR_AUDIT_MSG "shared memory of uid:%u euid:%u removed by "
36667+#define GR_RESOURCE_MSG "denied resource overstep by requesting %lu for %.16s against limit %lu for " 35955+#define GR_RESOURCE_MSG "denied resource overstep by requesting %lu for %.16s against limit %lu for "
36668+#define GR_TEXTREL_AUDIT_MSG "text relocation in %s, VMA:0x%08lx 0x%08lx by " 35956+#define GR_TEXTREL_AUDIT_MSG "text relocation in %s, VMA:0x%08lx 0x%08lx by "
36669diff -urNp linux-2.6.29.6/include/linux/grsecurity.h linux-2.6.29.6/include/linux/grsecurity.h 35957diff -urNp linux-2.6.30.4/include/linux/grsecurity.h linux-2.6.30.4/include/linux/grsecurity.h
36670--- linux-2.6.29.6/include/linux/grsecurity.h 1969-12-31 19:00:00.000000000 -0500 35958--- linux-2.6.30.4/include/linux/grsecurity.h 1969-12-31 19:00:00.000000000 -0500
36671+++ linux-2.6.29.6/include/linux/grsecurity.h 2009-07-23 17:34:32.189932774 -0400 35959+++ linux-2.6.30.4/include/linux/grsecurity.h 2009-07-30 11:54:10.952982697 -0400
36672@@ -0,0 +1,201 @@ 35960@@ -0,0 +1,202 @@
36673+#ifndef GR_SECURITY_H 35961+#ifndef GR_SECURITY_H
36674+#define GR_SECURITY_H 35962+#define GR_SECURITY_H
36675+#include <linux/fs.h> 35963+#include <linux/fs.h>
35964+#include <linux/fs_struct.h>
36676+#include <linux/binfmts.h> 35965+#include <linux/binfmts.h>
36677+#include <linux/gracl.h> 35966+#include <linux/gracl.h>
36678+ 35967+
@@ -36871,10 +36160,10 @@ diff -urNp linux-2.6.29.6/include/linux/grsecurity.h linux-2.6.29.6/include/linu
36871+#endif 36160+#endif
36872+ 36161+
36873+#endif 36162+#endif
36874diff -urNp linux-2.6.29.6/include/linux/highmem.h linux-2.6.29.6/include/linux/highmem.h 36163diff -urNp linux-2.6.30.4/include/linux/highmem.h linux-2.6.30.4/include/linux/highmem.h
36875--- linux-2.6.29.6/include/linux/highmem.h 2009-07-02 19:41:20.000000000 -0400 36164--- linux-2.6.30.4/include/linux/highmem.h 2009-07-24 17:47:51.000000000 -0400
36876+++ linux-2.6.29.6/include/linux/highmem.h 2009-07-23 17:34:32.189932774 -0400 36165+++ linux-2.6.30.4/include/linux/highmem.h 2009-07-30 09:48:10.109883773 -0400
36877@@ -124,6 +124,18 @@ static inline void clear_highpage(struct 36166@@ -135,6 +135,18 @@ static inline void clear_highpage(struct
36878 kunmap_atomic(kaddr, KM_USER0); 36167 kunmap_atomic(kaddr, KM_USER0);
36879 } 36168 }
36880 36169
@@ -36893,9 +36182,9 @@ diff -urNp linux-2.6.29.6/include/linux/highmem.h linux-2.6.29.6/include/linux/h
36893 static inline void zero_user_segments(struct page *page, 36182 static inline void zero_user_segments(struct page *page,
36894 unsigned start1, unsigned end1, 36183 unsigned start1, unsigned end1,
36895 unsigned start2, unsigned end2) 36184 unsigned start2, unsigned end2)
36896diff -urNp linux-2.6.29.6/include/linux/hugetlb.h linux-2.6.29.6/include/linux/hugetlb.h 36185diff -urNp linux-2.6.30.4/include/linux/hugetlb.h linux-2.6.30.4/include/linux/hugetlb.h
36897--- linux-2.6.29.6/include/linux/hugetlb.h 2009-07-02 19:41:20.000000000 -0400 36186--- linux-2.6.30.4/include/linux/hugetlb.h 2009-07-24 17:47:51.000000000 -0400
36898+++ linux-2.6.29.6/include/linux/hugetlb.h 2009-07-23 18:40:28.693352210 -0400 36187+++ linux-2.6.30.4/include/linux/hugetlb.h 2009-07-30 09:48:10.109883773 -0400
36899@@ -138,7 +138,7 @@ static inline struct hugetlbfs_sb_info * 36188@@ -138,7 +138,7 @@ static inline struct hugetlbfs_sb_info *
36900 } 36189 }
36901 36190
@@ -36905,9 +36194,9 @@ diff -urNp linux-2.6.29.6/include/linux/hugetlb.h linux-2.6.29.6/include/linux/h
36905 struct file *hugetlb_file_setup(const char *name, size_t, int); 36194 struct file *hugetlb_file_setup(const char *name, size_t, int);
36906 int hugetlb_get_quota(struct address_space *mapping, long delta); 36195 int hugetlb_get_quota(struct address_space *mapping, long delta);
36907 void hugetlb_put_quota(struct address_space *mapping, long delta); 36196 void hugetlb_put_quota(struct address_space *mapping, long delta);
36908diff -urNp linux-2.6.29.6/include/linux/jbd2.h linux-2.6.29.6/include/linux/jbd2.h 36197diff -urNp linux-2.6.30.4/include/linux/jbd2.h linux-2.6.30.4/include/linux/jbd2.h
36909--- linux-2.6.29.6/include/linux/jbd2.h 2009-07-02 19:41:20.000000000 -0400 36198--- linux-2.6.30.4/include/linux/jbd2.h 2009-07-24 17:47:51.000000000 -0400
36910+++ linux-2.6.29.6/include/linux/jbd2.h 2009-07-23 17:34:32.189932774 -0400 36199+++ linux-2.6.30.4/include/linux/jbd2.h 2009-07-30 09:48:10.111182036 -0400
36911@@ -66,7 +66,7 @@ extern u8 jbd2_journal_enable_debug; 36200@@ -66,7 +66,7 @@ extern u8 jbd2_journal_enable_debug;
36912 } \ 36201 } \
36913 } while (0) 36202 } while (0)
@@ -36917,9 +36206,9 @@ diff -urNp linux-2.6.29.6/include/linux/jbd2.h linux-2.6.29.6/include/linux/jbd2
36917 #endif 36206 #endif
36918 36207
36919 static inline void *jbd2_alloc(size_t size, gfp_t flags) 36208 static inline void *jbd2_alloc(size_t size, gfp_t flags)
36920diff -urNp linux-2.6.29.6/include/linux/jbd.h linux-2.6.29.6/include/linux/jbd.h 36209diff -urNp linux-2.6.30.4/include/linux/jbd.h linux-2.6.30.4/include/linux/jbd.h
36921--- linux-2.6.29.6/include/linux/jbd.h 2009-07-02 19:41:20.000000000 -0400 36210--- linux-2.6.30.4/include/linux/jbd.h 2009-07-24 17:47:51.000000000 -0400
36922+++ linux-2.6.29.6/include/linux/jbd.h 2009-07-23 17:34:32.189932774 -0400 36211+++ linux-2.6.30.4/include/linux/jbd.h 2009-07-30 09:48:10.111182036 -0400
36923@@ -66,7 +66,7 @@ extern u8 journal_enable_debug; 36212@@ -66,7 +66,7 @@ extern u8 journal_enable_debug;
36924 } \ 36213 } \
36925 } while (0) 36214 } while (0)
@@ -36929,10 +36218,10 @@ diff -urNp linux-2.6.29.6/include/linux/jbd.h linux-2.6.29.6/include/linux/jbd.h
36929 #endif 36218 #endif
36930 36219
36931 static inline void *jbd_alloc(size_t size, gfp_t flags) 36220 static inline void *jbd_alloc(size_t size, gfp_t flags)
36932diff -urNp linux-2.6.29.6/include/linux/kvm_host.h linux-2.6.29.6/include/linux/kvm_host.h 36221diff -urNp linux-2.6.30.4/include/linux/kvm_host.h linux-2.6.30.4/include/linux/kvm_host.h
36933--- linux-2.6.29.6/include/linux/kvm_host.h 2009-07-02 19:41:20.000000000 -0400 36222--- linux-2.6.30.4/include/linux/kvm_host.h 2009-07-24 17:47:51.000000000 -0400
36934+++ linux-2.6.29.6/include/linux/kvm_host.h 2009-07-23 17:34:32.189932774 -0400 36223+++ linux-2.6.30.4/include/linux/kvm_host.h 2009-07-30 09:48:10.112173628 -0400
36935@@ -155,7 +155,7 @@ void kvm_vcpu_uninit(struct kvm_vcpu *vc 36224@@ -172,7 +172,7 @@ void kvm_vcpu_uninit(struct kvm_vcpu *vc
36936 void vcpu_load(struct kvm_vcpu *vcpu); 36225 void vcpu_load(struct kvm_vcpu *vcpu);
36937 void vcpu_put(struct kvm_vcpu *vcpu); 36226 void vcpu_put(struct kvm_vcpu *vcpu);
36938 36227
@@ -36941,8 +36230,8 @@ diff -urNp linux-2.6.29.6/include/linux/kvm_host.h linux-2.6.29.6/include/linux/
36941 struct module *module); 36230 struct module *module);
36942 void kvm_exit(void); 36231 void kvm_exit(void);
36943 36232
36944@@ -263,7 +263,7 @@ int kvm_arch_vcpu_ioctl_debug_guest(stru 36233@@ -279,7 +279,7 @@ int kvm_arch_vcpu_ioctl_set_guest_debug(
36945 struct kvm_debug_guest *dbg); 36234 struct kvm_guest_debug *dbg);
36946 int kvm_arch_vcpu_ioctl_run(struct kvm_vcpu *vcpu, struct kvm_run *kvm_run); 36235 int kvm_arch_vcpu_ioctl_run(struct kvm_vcpu *vcpu, struct kvm_run *kvm_run);
36947 36236
36948-int kvm_arch_init(void *opaque); 36237-int kvm_arch_init(void *opaque);
@@ -36950,9 +36239,9 @@ diff -urNp linux-2.6.29.6/include/linux/kvm_host.h linux-2.6.29.6/include/linux/
36950 void kvm_arch_exit(void); 36239 void kvm_arch_exit(void);
36951 36240
36952 int kvm_arch_vcpu_init(struct kvm_vcpu *vcpu); 36241 int kvm_arch_vcpu_init(struct kvm_vcpu *vcpu);
36953diff -urNp linux-2.6.29.6/include/linux/libata.h linux-2.6.29.6/include/linux/libata.h 36242diff -urNp linux-2.6.30.4/include/linux/libata.h linux-2.6.30.4/include/linux/libata.h
36954--- linux-2.6.29.6/include/linux/libata.h 2009-07-02 19:41:20.000000000 -0400 36243--- linux-2.6.30.4/include/linux/libata.h 2009-07-24 17:47:51.000000000 -0400
36955+++ linux-2.6.29.6/include/linux/libata.h 2009-07-23 17:34:32.190921738 -0400 36244+++ linux-2.6.30.4/include/linux/libata.h 2009-07-30 09:48:10.113041063 -0400
36956@@ -64,11 +64,11 @@ 36245@@ -64,11 +64,11 @@
36957 #ifdef ATA_VERBOSE_DEBUG 36246 #ifdef ATA_VERBOSE_DEBUG
36958 #define VPRINTK(fmt, args...) printk(KERN_ERR "%s: " fmt, __func__, ## args) 36247 #define VPRINTK(fmt, args...) printk(KERN_ERR "%s: " fmt, __func__, ## args)
@@ -36968,9 +36257,9 @@ diff -urNp linux-2.6.29.6/include/linux/libata.h linux-2.6.29.6/include/linux/li
36968 #endif /* ATA_DEBUG */ 36257 #endif /* ATA_DEBUG */
36969 36258
36970 #define BPRINTK(fmt, args...) if (ap->flags & ATA_FLAG_DEBUGMSG) printk(KERN_ERR "%s: " fmt, __func__, ## args) 36259 #define BPRINTK(fmt, args...) if (ap->flags & ATA_FLAG_DEBUGMSG) printk(KERN_ERR "%s: " fmt, __func__, ## args)
36971diff -urNp linux-2.6.29.6/include/linux/mm.h linux-2.6.29.6/include/linux/mm.h 36260diff -urNp linux-2.6.30.4/include/linux/mm.h linux-2.6.30.4/include/linux/mm.h
36972--- linux-2.6.29.6/include/linux/mm.h 2009-07-02 19:41:20.000000000 -0400 36261--- linux-2.6.30.4/include/linux/mm.h 2009-07-24 17:47:51.000000000 -0400
36973+++ linux-2.6.29.6/include/linux/mm.h 2009-07-23 17:34:32.190921738 -0400 36262+++ linux-2.6.30.4/include/linux/mm.h 2009-07-30 09:48:10.113041063 -0400
36974@@ -39,6 +39,7 @@ extern unsigned long mmap_min_addr; 36263@@ -39,6 +39,7 @@ extern unsigned long mmap_min_addr;
36975 #include <asm/page.h> 36264 #include <asm/page.h>
36976 #include <asm/pgtable.h> 36265 #include <asm/pgtable.h>
@@ -36979,18 +36268,18 @@ diff -urNp linux-2.6.29.6/include/linux/mm.h linux-2.6.29.6/include/linux/mm.h
36979 36268
36980 #define nth_page(page,n) pfn_to_page(page_to_pfn((page)) + (n)) 36269 #define nth_page(page,n) pfn_to_page(page_to_pfn((page)) + (n))
36981 36270
36982@@ -105,6 +106,10 @@ extern unsigned int kobjsize(const void 36271@@ -106,6 +107,10 @@ extern unsigned int kobjsize(const void
36983 #define VM_MIXEDMAP 0x10000000 /* Can contain "struct page" and pure PFN pages */
36984 #define VM_SAO 0x20000000 /* Strong Access Ordering (powerpc) */ 36272 #define VM_SAO 0x20000000 /* Strong Access Ordering (powerpc) */
36273 #define VM_PFN_AT_MMAP 0x40000000 /* PFNMAP vma that is fully mapped at mmap time */
36985 36274
36986+#ifdef CONFIG_PAX_PAGEEXEC 36275+#ifdef CONFIG_PAX_PAGEEXEC
36987+#define VM_PAGEEXEC 0x40000000 /* vma->vm_page_prot needs special handling */ 36276+#define VM_PAGEEXEC 0x80000000 /* vma->vm_page_prot needs special handling */
36988+#endif 36277+#endif
36989+ 36278+
36990 #ifndef VM_STACK_DEFAULT_FLAGS /* arch can override this */ 36279 #ifndef VM_STACK_DEFAULT_FLAGS /* arch can override this */
36991 #define VM_STACK_DEFAULT_FLAGS VM_DATA_DEFAULT_FLAGS 36280 #define VM_STACK_DEFAULT_FLAGS VM_DATA_DEFAULT_FLAGS
36992 #endif 36281 #endif
36993@@ -899,6 +904,8 @@ struct shrinker { 36282@@ -888,6 +893,8 @@ struct shrinker {
36994 extern void register_shrinker(struct shrinker *); 36283 extern void register_shrinker(struct shrinker *);
36995 extern void unregister_shrinker(struct shrinker *); 36284 extern void unregister_shrinker(struct shrinker *);
36996 36285
@@ -36999,7 +36288,7 @@ diff -urNp linux-2.6.29.6/include/linux/mm.h linux-2.6.29.6/include/linux/mm.h
36999 int vma_wants_writenotify(struct vm_area_struct *vma); 36288 int vma_wants_writenotify(struct vm_area_struct *vma);
37000 36289
37001 extern pte_t *get_locked_pte(struct mm_struct *mm, unsigned long addr, spinlock_t **ptl); 36290 extern pte_t *get_locked_pte(struct mm_struct *mm, unsigned long addr, spinlock_t **ptl);
37002@@ -1170,6 +1177,7 @@ out: 36291@@ -1159,6 +1166,7 @@ out:
37003 } 36292 }
37004 36293
37005 extern int do_munmap(struct mm_struct *, unsigned long, size_t); 36294 extern int do_munmap(struct mm_struct *, unsigned long, size_t);
@@ -37007,7 +36296,7 @@ diff -urNp linux-2.6.29.6/include/linux/mm.h linux-2.6.29.6/include/linux/mm.h
37007 36296
37008 extern unsigned long do_brk(unsigned long, unsigned long); 36297 extern unsigned long do_brk(unsigned long, unsigned long);
37009 36298
37010@@ -1223,6 +1231,10 @@ extern struct vm_area_struct * find_vma( 36299@@ -1212,6 +1220,10 @@ extern struct vm_area_struct * find_vma(
37011 extern struct vm_area_struct * find_vma_prev(struct mm_struct * mm, unsigned long addr, 36300 extern struct vm_area_struct * find_vma_prev(struct mm_struct * mm, unsigned long addr,
37012 struct vm_area_struct **pprev); 36301 struct vm_area_struct **pprev);
37013 36302
@@ -37018,7 +36307,7 @@ diff -urNp linux-2.6.29.6/include/linux/mm.h linux-2.6.29.6/include/linux/mm.h
37018 /* Look up the first VMA which intersects the interval start_addr..end_addr-1, 36307 /* Look up the first VMA which intersects the interval start_addr..end_addr-1,
37019 NULL if none. Assume start_addr < end_addr. */ 36308 NULL if none. Assume start_addr < end_addr. */
37020 static inline struct vm_area_struct * find_vma_intersection(struct mm_struct * mm, unsigned long start_addr, unsigned long end_addr) 36309 static inline struct vm_area_struct * find_vma_intersection(struct mm_struct * mm, unsigned long start_addr, unsigned long end_addr)
37021@@ -1239,7 +1251,6 @@ static inline unsigned long vma_pages(st 36310@@ -1228,7 +1240,6 @@ static inline unsigned long vma_pages(st
37022 return (vma->vm_end - vma->vm_start) >> PAGE_SHIFT; 36311 return (vma->vm_end - vma->vm_start) >> PAGE_SHIFT;
37023 } 36312 }
37024 36313
@@ -37026,7 +36315,7 @@ diff -urNp linux-2.6.29.6/include/linux/mm.h linux-2.6.29.6/include/linux/mm.h
37026 struct vm_area_struct *find_extend_vma(struct mm_struct *, unsigned long addr); 36315 struct vm_area_struct *find_extend_vma(struct mm_struct *, unsigned long addr);
37027 int remap_pfn_range(struct vm_area_struct *, unsigned long addr, 36316 int remap_pfn_range(struct vm_area_struct *, unsigned long addr,
37028 unsigned long pfn, unsigned long size, pgprot_t); 36317 unsigned long pfn, unsigned long size, pgprot_t);
37029@@ -1331,5 +1342,12 @@ void vmemmap_populate_print_last(void); 36318@@ -1320,5 +1331,12 @@ void vmemmap_populate_print_last(void);
37030 extern void *alloc_locked_buffer(size_t size); 36319 extern void *alloc_locked_buffer(size_t size);
37031 extern void free_locked_buffer(void *buffer, size_t size); 36320 extern void free_locked_buffer(void *buffer, size_t size);
37032 extern void release_locked_buffer(void *buffer, size_t size); 36321 extern void release_locked_buffer(void *buffer, size_t size);
@@ -37039,10 +36328,10 @@ diff -urNp linux-2.6.29.6/include/linux/mm.h linux-2.6.29.6/include/linux/mm.h
37039+ 36328+
37040 #endif /* __KERNEL__ */ 36329 #endif /* __KERNEL__ */
37041 #endif /* _LINUX_MM_H */ 36330 #endif /* _LINUX_MM_H */
37042diff -urNp linux-2.6.29.6/include/linux/mm_types.h linux-2.6.29.6/include/linux/mm_types.h 36331diff -urNp linux-2.6.30.4/include/linux/mm_types.h linux-2.6.30.4/include/linux/mm_types.h
37043--- linux-2.6.29.6/include/linux/mm_types.h 2009-07-02 19:41:20.000000000 -0400 36332--- linux-2.6.30.4/include/linux/mm_types.h 2009-07-24 17:47:51.000000000 -0400
37044+++ linux-2.6.29.6/include/linux/mm_types.h 2009-07-23 18:40:27.472293076 -0400 36333+++ linux-2.6.30.4/include/linux/mm_types.h 2009-07-30 09:48:10.114071629 -0400
37045@@ -159,7 +159,7 @@ struct vm_area_struct { 36334@@ -163,7 +163,7 @@ struct vm_area_struct {
37046 struct anon_vma *anon_vma; /* Serialized by page_table_lock */ 36335 struct anon_vma *anon_vma; /* Serialized by page_table_lock */
37047 36336
37048 /* Function pointers to deal with this struct. */ 36337 /* Function pointers to deal with this struct. */
@@ -37051,7 +36340,7 @@ diff -urNp linux-2.6.29.6/include/linux/mm_types.h linux-2.6.29.6/include/linux/
37051 36340
37052 /* Information about our backing store: */ 36341 /* Information about our backing store: */
37053 unsigned long vm_pgoff; /* Offset (within vm_file) in PAGE_SIZE 36342 unsigned long vm_pgoff; /* Offset (within vm_file) in PAGE_SIZE
37054@@ -174,6 +174,8 @@ struct vm_area_struct { 36343@@ -178,6 +178,8 @@ struct vm_area_struct {
37055 #ifdef CONFIG_NUMA 36344 #ifdef CONFIG_NUMA
37056 struct mempolicy *vm_policy; /* NUMA policy for the VMA */ 36345 struct mempolicy *vm_policy; /* NUMA policy for the VMA */
37057 #endif 36346 #endif
@@ -37060,7 +36349,7 @@ diff -urNp linux-2.6.29.6/include/linux/mm_types.h linux-2.6.29.6/include/linux/
37060 }; 36349 };
37061 36350
37062 struct core_thread { 36351 struct core_thread {
37063@@ -274,6 +276,24 @@ struct mm_struct { 36352@@ -278,6 +280,24 @@ struct mm_struct {
37064 #ifdef CONFIG_MMU_NOTIFIER 36353 #ifdef CONFIG_MMU_NOTIFIER
37065 struct mmu_notifier_mm *mmu_notifier_mm; 36354 struct mmu_notifier_mm *mmu_notifier_mm;
37066 #endif 36355 #endif
@@ -37085,10 +36374,10 @@ diff -urNp linux-2.6.29.6/include/linux/mm_types.h linux-2.6.29.6/include/linux/
37085 }; 36374 };
37086 36375
37087 /* Future-safe accessor for struct mm_struct's cpu_vm_mask. */ 36376 /* Future-safe accessor for struct mm_struct's cpu_vm_mask. */
37088diff -urNp linux-2.6.29.6/include/linux/module.h linux-2.6.29.6/include/linux/module.h 36377diff -urNp linux-2.6.30.4/include/linux/module.h linux-2.6.30.4/include/linux/module.h
37089--- linux-2.6.29.6/include/linux/module.h 2009-07-02 19:41:20.000000000 -0400 36378--- linux-2.6.30.4/include/linux/module.h 2009-07-24 17:47:51.000000000 -0400
37090+++ linux-2.6.29.6/include/linux/module.h 2009-07-23 17:34:32.191875265 -0400 36379+++ linux-2.6.30.4/include/linux/module.h 2009-07-30 09:48:10.114071629 -0400
37091@@ -278,16 +278,16 @@ struct module 36380@@ -282,16 +282,16 @@ struct module
37092 int (*init)(void); 36381 int (*init)(void);
37093 36382
37094 /* If this is non-NULL, vfree after init() returns */ 36383 /* If this is non-NULL, vfree after init() returns */
@@ -37109,9 +36398,9 @@ diff -urNp linux-2.6.29.6/include/linux/module.h linux-2.6.29.6/include/linux/mo
37109 36398
37110 /* Arch-specific module values */ 36399 /* Arch-specific module values */
37111 struct mod_arch_specific arch; 36400 struct mod_arch_specific arch;
37112@@ -363,16 +363,46 @@ struct module *module_text_address(unsig 36401@@ -374,16 +374,46 @@ struct module *__module_address(unsigned
37113 struct module *__module_text_address(unsigned long addr); 36402 bool is_module_address(unsigned long addr);
37114 int is_module_address(unsigned long addr); 36403 bool is_module_text_address(unsigned long addr);
37115 36404
37116+static inline int within_module_range(unsigned long addr, void *start, unsigned long size) 36405+static inline int within_module_range(unsigned long addr, void *start, unsigned long size)
37117+{ 36406+{
@@ -37159,8 +36448,8 @@ diff -urNp linux-2.6.29.6/include/linux/module.h linux-2.6.29.6/include/linux/mo
37159+ return within_module_init_rx(addr, mod) || within_module_init_rw(addr, mod); 36448+ return within_module_init_rx(addr, mod) || within_module_init_rw(addr, mod);
37160 } 36449 }
37161 36450
37162 /* Returns 0 and fills in value, defined and namebuf, or -ERANGE if 36451 /* Search for module by name: must hold module_mutex. */
37163@@ -396,7 +426,11 @@ void symbol_put_addr(void *addr); 36452@@ -436,7 +466,11 @@ void symbol_put_addr(void *addr);
37164 static inline local_t *__module_ref_addr(struct module *mod, int cpu) 36453 static inline local_t *__module_ref_addr(struct module *mod, int cpu)
37165 { 36454 {
37166 #ifdef CONFIG_SMP 36455 #ifdef CONFIG_SMP
@@ -37172,9 +36461,9 @@ diff -urNp linux-2.6.29.6/include/linux/module.h linux-2.6.29.6/include/linux/mo
37172 #else 36461 #else
37173 return &mod->ref; 36462 return &mod->ref;
37174 #endif 36463 #endif
37175diff -urNp linux-2.6.29.6/include/linux/moduleloader.h linux-2.6.29.6/include/linux/moduleloader.h 36464diff -urNp linux-2.6.30.4/include/linux/moduleloader.h linux-2.6.30.4/include/linux/moduleloader.h
37176--- linux-2.6.29.6/include/linux/moduleloader.h 2009-07-02 19:41:20.000000000 -0400 36465--- linux-2.6.30.4/include/linux/moduleloader.h 2009-07-24 17:47:51.000000000 -0400
37177+++ linux-2.6.29.6/include/linux/moduleloader.h 2009-07-23 17:34:32.192794045 -0400 36466+++ linux-2.6.30.4/include/linux/moduleloader.h 2009-07-30 09:48:10.114071629 -0400
37178@@ -20,9 +20,21 @@ unsigned int arch_mod_section_prepend(st 36467@@ -20,9 +20,21 @@ unsigned int arch_mod_section_prepend(st
37179 sections. Returns NULL on failure. */ 36468 sections. Returns NULL on failure. */
37180 void *module_alloc(unsigned long size); 36469 void *module_alloc(unsigned long size);
@@ -37197,9 +36486,9 @@ diff -urNp linux-2.6.29.6/include/linux/moduleloader.h linux-2.6.29.6/include/li
37197 /* Apply the given relocation to the (simplified) ELF. Return -error 36486 /* Apply the given relocation to the (simplified) ELF. Return -error
37198 or 0. */ 36487 or 0. */
37199 int apply_relocate(Elf_Shdr *sechdrs, 36488 int apply_relocate(Elf_Shdr *sechdrs,
37200diff -urNp linux-2.6.29.6/include/linux/namei.h linux-2.6.29.6/include/linux/namei.h 36489diff -urNp linux-2.6.30.4/include/linux/namei.h linux-2.6.30.4/include/linux/namei.h
37201--- linux-2.6.29.6/include/linux/namei.h 2009-07-02 19:41:20.000000000 -0400 36490--- linux-2.6.30.4/include/linux/namei.h 2009-07-24 17:47:51.000000000 -0400
37202+++ linux-2.6.29.6/include/linux/namei.h 2009-07-23 17:34:32.192794045 -0400 36491+++ linux-2.6.30.4/include/linux/namei.h 2009-07-30 09:48:10.115035001 -0400
37203@@ -21,7 +21,7 @@ struct nameidata { 36492@@ -21,7 +21,7 @@ struct nameidata {
37204 unsigned int flags; 36493 unsigned int flags;
37205 int last_type; 36494 int last_type;
@@ -37209,7 +36498,7 @@ diff -urNp linux-2.6.29.6/include/linux/namei.h linux-2.6.29.6/include/linux/nam
37209 36498
37210 /* Intent data */ 36499 /* Intent data */
37211 union { 36500 union {
37212@@ -84,12 +84,12 @@ extern int follow_up(struct vfsmount **, 36501@@ -83,12 +83,12 @@ extern int follow_up(struct vfsmount **,
37213 extern struct dentry *lock_rename(struct dentry *, struct dentry *); 36502 extern struct dentry *lock_rename(struct dentry *, struct dentry *);
37214 extern void unlock_rename(struct dentry *, struct dentry *); 36503 extern void unlock_rename(struct dentry *, struct dentry *);
37215 36504
@@ -37224,10 +36513,10 @@ diff -urNp linux-2.6.29.6/include/linux/namei.h linux-2.6.29.6/include/linux/nam
37224 { 36513 {
37225 return nd->saved_names[nd->depth]; 36514 return nd->saved_names[nd->depth];
37226 } 36515 }
37227diff -urNp linux-2.6.29.6/include/linux/nfsd/nfsd.h linux-2.6.29.6/include/linux/nfsd/nfsd.h 36516diff -urNp linux-2.6.30.4/include/linux/nfsd/nfsd.h linux-2.6.30.4/include/linux/nfsd/nfsd.h
37228--- linux-2.6.29.6/include/linux/nfsd/nfsd.h 2009-07-02 19:41:20.000000000 -0400 36517--- linux-2.6.30.4/include/linux/nfsd/nfsd.h 2009-07-24 17:47:51.000000000 -0400
37229+++ linux-2.6.29.6/include/linux/nfsd/nfsd.h 2009-07-23 18:40:28.718303595 -0400 36518+++ linux-2.6.30.4/include/linux/nfsd/nfsd.h 2009-07-30 09:48:10.115035001 -0400
37230@@ -56,7 +56,7 @@ extern struct svc_version nfsd_version2, 36519@@ -57,7 +57,7 @@ extern u32 nfsd_supported_minorversion
37231 extern struct mutex nfsd_mutex; 36520 extern struct mutex nfsd_mutex;
37232 extern struct svc_serv *nfsd_serv; 36521 extern struct svc_serv *nfsd_serv;
37233 36522
@@ -37236,33 +36525,9 @@ diff -urNp linux-2.6.29.6/include/linux/nfsd/nfsd.h linux-2.6.29.6/include/linux
37236 36525
37237 /* 36526 /*
37238 * Function prototypes. 36527 * Function prototypes.
37239diff -urNp linux-2.6.29.6/include/linux/nfs_fs.h linux-2.6.29.6/include/linux/nfs_fs.h 36528diff -urNp linux-2.6.30.4/include/linux/nodemask.h linux-2.6.30.4/include/linux/nodemask.h
37240--- linux-2.6.29.6/include/linux/nfs_fs.h 2009-07-02 19:41:20.000000000 -0400 36529--- linux-2.6.30.4/include/linux/nodemask.h 2009-07-24 17:47:51.000000000 -0400
37241+++ linux-2.6.29.6/include/linux/nfs_fs.h 2009-07-23 18:40:28.706582042 -0400 36530+++ linux-2.6.30.4/include/linux/nodemask.h 2009-07-30 09:48:10.115035001 -0400
37242@@ -415,7 +415,7 @@ extern const struct inode_operations nfs
37243 extern const struct inode_operations nfs3_dir_inode_operations;
37244 #endif /* CONFIG_NFS_V3 */
37245 extern const struct file_operations nfs_dir_operations;
37246-extern struct dentry_operations nfs_dentry_operations;
37247+extern const struct dentry_operations nfs_dentry_operations;
37248
37249 extern void nfs_force_lookup_revalidate(struct inode *dir);
37250 extern int nfs_instantiate(struct dentry *dentry, struct nfs_fh *fh, struct nfs_fattr *fattr);
37251diff -urNp linux-2.6.29.6/include/linux/nfs_xdr.h linux-2.6.29.6/include/linux/nfs_xdr.h
37252--- linux-2.6.29.6/include/linux/nfs_xdr.h 2009-07-02 19:41:20.000000000 -0400
37253+++ linux-2.6.29.6/include/linux/nfs_xdr.h 2009-07-23 18:40:28.713831736 -0400
37254@@ -785,7 +785,7 @@ struct nfs_access_entry;
37255 */
37256 struct nfs_rpc_ops {
37257 u32 version; /* Protocol version */
37258- struct dentry_operations *dentry_ops;
37259+ const struct dentry_operations *dentry_ops;
37260 const struct inode_operations *dir_inode_ops;
37261 const struct inode_operations *file_inode_ops;
37262
37263diff -urNp linux-2.6.29.6/include/linux/nodemask.h linux-2.6.29.6/include/linux/nodemask.h
37264--- linux-2.6.29.6/include/linux/nodemask.h 2009-07-02 19:41:20.000000000 -0400
37265+++ linux-2.6.29.6/include/linux/nodemask.h 2009-07-23 17:34:32.192794045 -0400
37266@@ -442,11 +442,11 @@ static inline int num_node_state(enum no 36531@@ -442,11 +442,11 @@ static inline int num_node_state(enum no
37267 36532
37268 #define any_online_node(mask) \ 36533 #define any_online_node(mask) \
@@ -37279,9 +36544,9 @@ diff -urNp linux-2.6.29.6/include/linux/nodemask.h linux-2.6.29.6/include/linux/
37279 }) 36544 })
37280 36545
37281 #define num_online_nodes() num_node_state(N_ONLINE) 36546 #define num_online_nodes() num_node_state(N_ONLINE)
37282diff -urNp linux-2.6.29.6/include/linux/oprofile.h linux-2.6.29.6/include/linux/oprofile.h 36547diff -urNp linux-2.6.30.4/include/linux/oprofile.h linux-2.6.30.4/include/linux/oprofile.h
37283--- linux-2.6.29.6/include/linux/oprofile.h 2009-07-02 19:41:20.000000000 -0400 36548--- linux-2.6.30.4/include/linux/oprofile.h 2009-07-24 17:47:51.000000000 -0400
37284+++ linux-2.6.29.6/include/linux/oprofile.h 2009-07-23 17:34:32.192794045 -0400 36549+++ linux-2.6.30.4/include/linux/oprofile.h 2009-07-30 09:48:10.116076362 -0400
37285@@ -128,7 +128,7 @@ int oprofilefs_create_ro_ulong(struct su 36550@@ -128,7 +128,7 @@ int oprofilefs_create_ro_ulong(struct su
37286 36551
37287 /** Create a file for read-only access to an atomic_t. */ 36552 /** Create a file for read-only access to an atomic_t. */
@@ -37291,33 +36556,9 @@ diff -urNp linux-2.6.29.6/include/linux/oprofile.h linux-2.6.29.6/include/linux/
37291 36556
37292 /** create a directory */ 36557 /** create a directory */
37293 struct dentry * oprofilefs_mkdir(struct super_block * sb, struct dentry * root, 36558 struct dentry * oprofilefs_mkdir(struct super_block * sb, struct dentry * root,
37294diff -urNp linux-2.6.29.6/include/linux/percpu.h linux-2.6.29.6/include/linux/percpu.h 36559diff -urNp linux-2.6.30.4/include/linux/poison.h linux-2.6.30.4/include/linux/poison.h
37295--- linux-2.6.29.6/include/linux/percpu.h 2009-07-02 19:41:20.000000000 -0400 36560--- linux-2.6.30.4/include/linux/poison.h 2009-07-24 17:47:51.000000000 -0400
37296+++ linux-2.6.29.6/include/linux/percpu.h 2009-07-23 17:34:32.192794045 -0400 36561+++ linux-2.6.30.4/include/linux/poison.h 2009-07-30 09:48:10.116076362 -0400
37297@@ -50,7 +50,7 @@
37298 #endif
37299
37300 #define PERCPU_ENOUGH_ROOM \
37301- (__per_cpu_end - __per_cpu_start + PERCPU_MODULE_RESERVE)
37302+ ((unsigned long)(__per_cpu_end - __per_cpu_start + PERCPU_MODULE_RESERVE))
37303 #endif /* PERCPU_ENOUGH_ROOM */
37304
37305 /*
37306diff -urNp linux-2.6.29.6/include/linux/personality.h linux-2.6.29.6/include/linux/personality.h
37307--- linux-2.6.29.6/include/linux/personality.h 2009-07-02 19:41:20.000000000 -0400
37308+++ linux-2.6.29.6/include/linux/personality.h 2009-07-23 17:34:32.192794045 -0400
37309@@ -40,7 +40,7 @@ enum {
37310 * Security-relevant compatibility flags that must be
37311 * cleared upon setuid or setgid exec:
37312 */
37313-#define PER_CLEAR_ON_SETID (READ_IMPLIES_EXEC|ADDR_NO_RANDOMIZE)
37314+#define PER_CLEAR_ON_SETID (READ_IMPLIES_EXEC|ADDR_NO_RANDOMIZE|ADDR_COMPAT_LAYOUT|MMAP_PAGE_ZERO)
37315
37316 /*
37317 * Personality types.
37318diff -urNp linux-2.6.29.6/include/linux/poison.h linux-2.6.29.6/include/linux/poison.h
37319--- linux-2.6.29.6/include/linux/poison.h 2009-07-02 19:41:20.000000000 -0400
37320+++ linux-2.6.29.6/include/linux/poison.h 2009-07-23 17:34:32.193834517 -0400
37321@@ -7,8 +7,8 @@ 36562@@ -7,8 +7,8 @@
37322 * under normal circumstances, used to verify that nobody uses 36563 * under normal circumstances, used to verify that nobody uses
37323 * non-initialized list entries. 36564 * non-initialized list entries.
@@ -37329,10 +36570,10 @@ diff -urNp linux-2.6.29.6/include/linux/poison.h linux-2.6.29.6/include/linux/po
37329 36570
37330 /********** include/linux/timer.h **********/ 36571 /********** include/linux/timer.h **********/
37331 /* 36572 /*
37332diff -urNp linux-2.6.29.6/include/linux/proc_fs.h linux-2.6.29.6/include/linux/proc_fs.h 36573diff -urNp linux-2.6.30.4/include/linux/proc_fs.h linux-2.6.30.4/include/linux/proc_fs.h
37333--- linux-2.6.29.6/include/linux/proc_fs.h 2009-07-02 19:41:20.000000000 -0400 36574--- linux-2.6.30.4/include/linux/proc_fs.h 2009-07-24 17:47:51.000000000 -0400
37334+++ linux-2.6.29.6/include/linux/proc_fs.h 2009-07-23 17:34:32.193834517 -0400 36575+++ linux-2.6.30.4/include/linux/proc_fs.h 2009-07-30 11:10:49.495569147 -0400
37335@@ -174,6 +174,19 @@ static inline struct proc_dir_entry *pro 36576@@ -170,6 +170,19 @@ static inline struct proc_dir_entry *pro
37336 return proc_create_data(name, mode, parent, proc_fops, NULL); 36577 return proc_create_data(name, mode, parent, proc_fops, NULL);
37337 } 36578 }
37338 36579
@@ -37352,21 +36593,9 @@ diff -urNp linux-2.6.29.6/include/linux/proc_fs.h linux-2.6.29.6/include/linux/p
37352 static inline struct proc_dir_entry *create_proc_read_entry(const char *name, 36593 static inline struct proc_dir_entry *create_proc_read_entry(const char *name,
37353 mode_t mode, struct proc_dir_entry *base, 36594 mode_t mode, struct proc_dir_entry *base,
37354 read_proc_t *read_proc, void * data) 36595 read_proc_t *read_proc, void * data)
37355diff -urNp linux-2.6.29.6/include/linux/raid/md_k.h linux-2.6.29.6/include/linux/raid/md_k.h 36596diff -urNp linux-2.6.30.4/include/linux/random.h linux-2.6.30.4/include/linux/random.h
37356--- linux-2.6.29.6/include/linux/raid/md_k.h 2009-07-02 19:41:20.000000000 -0400 36597--- linux-2.6.30.4/include/linux/random.h 2009-07-24 17:47:51.000000000 -0400
37357+++ linux-2.6.29.6/include/linux/raid/md_k.h 2009-07-23 17:34:32.193834517 -0400 36598+++ linux-2.6.30.4/include/linux/random.h 2009-07-30 09:48:10.116076362 -0400
37358@@ -293,7 +293,7 @@ static inline void rdev_dec_pending(mdk_
37359
37360 static inline void md_sync_acct(struct block_device *bdev, unsigned long nr_sectors)
37361 {
37362- atomic_add(nr_sectors, &bdev->bd_contains->bd_disk->sync_io);
37363+ atomic_add_unchecked(nr_sectors, &bdev->bd_contains->bd_disk->sync_io);
37364 }
37365
37366 struct mdk_personality
37367diff -urNp linux-2.6.29.6/include/linux/random.h linux-2.6.29.6/include/linux/random.h
37368--- linux-2.6.29.6/include/linux/random.h 2009-07-02 19:41:20.000000000 -0400
37369+++ linux-2.6.29.6/include/linux/random.h 2009-07-23 17:34:32.193834517 -0400
37370@@ -74,6 +74,11 @@ unsigned long randomize_range(unsigned l 36599@@ -74,6 +74,11 @@ unsigned long randomize_range(unsigned l
37371 u32 random32(void); 36600 u32 random32(void);
37372 void srandom32(u32 seed); 36601 void srandom32(u32 seed);
@@ -37379,10 +36608,10 @@ diff -urNp linux-2.6.29.6/include/linux/random.h linux-2.6.29.6/include/linux/ra
37379 #endif /* __KERNEL___ */ 36608 #endif /* __KERNEL___ */
37380 36609
37381 #endif /* _LINUX_RANDOM_H */ 36610 #endif /* _LINUX_RANDOM_H */
37382diff -urNp linux-2.6.29.6/include/linux/reiserfs_fs_sb.h linux-2.6.29.6/include/linux/reiserfs_fs_sb.h 36611diff -urNp linux-2.6.30.4/include/linux/reiserfs_fs_sb.h linux-2.6.30.4/include/linux/reiserfs_fs_sb.h
37383--- linux-2.6.29.6/include/linux/reiserfs_fs_sb.h 2009-07-02 19:41:20.000000000 -0400 36612--- linux-2.6.30.4/include/linux/reiserfs_fs_sb.h 2009-07-24 17:47:51.000000000 -0400
37384+++ linux-2.6.29.6/include/linux/reiserfs_fs_sb.h 2009-07-23 17:34:32.194808945 -0400 36613+++ linux-2.6.30.4/include/linux/reiserfs_fs_sb.h 2009-07-30 09:48:10.116076362 -0400
37385@@ -374,7 +374,7 @@ struct reiserfs_sb_info { 36614@@ -377,7 +377,7 @@ struct reiserfs_sb_info {
37386 /* Comment? -Hans */ 36615 /* Comment? -Hans */
37387 wait_queue_head_t s_wait; 36616 wait_queue_head_t s_wait;
37388 /* To be obsoleted soon by per buffer seals.. -Hans */ 36617 /* To be obsoleted soon by per buffer seals.. -Hans */
@@ -37391,18 +36620,18 @@ diff -urNp linux-2.6.29.6/include/linux/reiserfs_fs_sb.h linux-2.6.29.6/include/
37391 // tree gets re-balanced 36620 // tree gets re-balanced
37392 unsigned long s_properties; /* File system properties. Currently holds 36621 unsigned long s_properties; /* File system properties. Currently holds
37393 on-disk FS format */ 36622 on-disk FS format */
37394diff -urNp linux-2.6.29.6/include/linux/sched.h linux-2.6.29.6/include/linux/sched.h 36623diff -urNp linux-2.6.30.4/include/linux/sched.h linux-2.6.30.4/include/linux/sched.h
37395--- linux-2.6.29.6/include/linux/sched.h 2009-07-02 19:41:20.000000000 -0400 36624--- linux-2.6.30.4/include/linux/sched.h 2009-07-30 20:32:40.547619620 -0400
37396+++ linux-2.6.29.6/include/linux/sched.h 2009-07-23 17:34:32.195781799 -0400 36625+++ linux-2.6.30.4/include/linux/sched.h 2009-07-30 20:32:48.019825232 -0400
37397@@ -97,6 +97,7 @@ struct futex_pi_state; 36626@@ -98,6 +98,7 @@ struct robust_list_head;
37398 struct robust_list_head;
37399 struct bio; 36627 struct bio;
37400 struct bts_tracer; 36628 struct bts_tracer;
36629 struct fs_struct;
37401+struct linux_binprm; 36630+struct linux_binprm;
37402 36631
37403 /* 36632 /*
37404 * List of flags we want to share for kernel threads, 36633 * List of flags we want to share for kernel threads,
37405@@ -606,6 +607,15 @@ struct signal_struct { 36634@@ -604,6 +605,15 @@ struct signal_struct {
37406 unsigned audit_tty; 36635 unsigned audit_tty;
37407 struct tty_audit_buf *tty_audit_buf; 36636 struct tty_audit_buf *tty_audit_buf;
37408 #endif 36637 #endif
@@ -37418,7 +36647,7 @@ diff -urNp linux-2.6.29.6/include/linux/sched.h linux-2.6.29.6/include/linux/sch
37418 }; 36647 };
37419 36648
37420 /* Context switch must be unlocked if interrupts are to be enabled */ 36649 /* Context switch must be unlocked if interrupts are to be enabled */
37421@@ -1114,7 +1124,7 @@ struct sched_rt_entity { 36650@@ -1116,7 +1126,7 @@ struct sched_rt_entity {
37422 36651
37423 struct task_struct { 36652 struct task_struct {
37424 volatile long state; /* -1 unrunnable, 0 runnable, >0 stopped */ 36653 volatile long state; /* -1 unrunnable, 0 runnable, >0 stopped */
@@ -37427,19 +36656,7 @@ diff -urNp linux-2.6.29.6/include/linux/sched.h linux-2.6.29.6/include/linux/sch
37427 atomic_t usage; 36656 atomic_t usage;
37428 unsigned int flags; /* per process flags, defined below */ 36657 unsigned int flags; /* per process flags, defined below */
37429 unsigned int ptrace; 36658 unsigned int ptrace;
37430@@ -1179,10 +1189,9 @@ struct task_struct { 36659@@ -1227,8 +1237,8 @@ struct task_struct {
37431 pid_t pid;
37432 pid_t tgid;
37433
37434-#ifdef CONFIG_CC_STACKPROTECTOR
37435 /* Canary value for the -fstack-protector gcc feature */
37436 unsigned long stack_canary;
37437-#endif
37438+
37439 /*
37440 * pointers to (original) parent process, youngest child, younger sibling,
37441 * older sibling, respectively. (p->father can be replaced with
37442@@ -1223,8 +1232,8 @@ struct task_struct {
37443 struct list_head thread_group; 36660 struct list_head thread_group;
37444 36661
37445 struct completion *vfork_done; /* for vfork() */ 36662 struct completion *vfork_done; /* for vfork() */
@@ -37450,7 +36667,7 @@ diff -urNp linux-2.6.29.6/include/linux/sched.h linux-2.6.29.6/include/linux/sch
37450 36667
37451 cputime_t utime, stime, utimescaled, stimescaled; 36668 cputime_t utime, stime, utimescaled, stimescaled;
37452 cputime_t gtime; 36669 cputime_t gtime;
37453@@ -1418,8 +1427,66 @@ struct task_struct { 36670@@ -1429,8 +1439,66 @@ struct task_struct {
37454 /* state flags for use by tracers */ 36671 /* state flags for use by tracers */
37455 unsigned long trace; 36672 unsigned long trace;
37456 #endif 36673 #endif
@@ -37517,7 +36734,7 @@ diff -urNp linux-2.6.29.6/include/linux/sched.h linux-2.6.29.6/include/linux/sch
37517 /* Future-safe accessor for struct task_struct's cpus_allowed. */ 36734 /* Future-safe accessor for struct task_struct's cpus_allowed. */
37518 #define tsk_cpumask(tsk) (&(tsk)->cpus_allowed) 36735 #define tsk_cpumask(tsk) (&(tsk)->cpus_allowed)
37519 36736
37520@@ -1961,7 +2028,7 @@ extern void __cleanup_sighand(struct sig 36737@@ -1988,7 +2056,7 @@ extern void __cleanup_sighand(struct sig
37521 extern void exit_itimers(struct signal_struct *); 36738 extern void exit_itimers(struct signal_struct *);
37522 extern void flush_itimer_signals(void); 36739 extern void flush_itimer_signals(void);
37523 36740
@@ -37526,7 +36743,7 @@ diff -urNp linux-2.6.29.6/include/linux/sched.h linux-2.6.29.6/include/linux/sch
37526 36743
37527 extern void daemonize(const char *, ...); 36744 extern void daemonize(const char *, ...);
37528 extern int allow_signal(int); 36745 extern int allow_signal(int);
37529@@ -2066,8 +2133,8 @@ static inline void unlock_task_sighand(s 36746@@ -2098,8 +2166,8 @@ static inline void unlock_task_sighand(s
37530 36747
37531 #ifndef __HAVE_THREAD_FUNCTIONS 36748 #ifndef __HAVE_THREAD_FUNCTIONS
37532 36749
@@ -37537,9 +36754,18 @@ diff -urNp linux-2.6.29.6/include/linux/sched.h linux-2.6.29.6/include/linux/sch
37537 36754
37538 static inline void setup_thread_stack(struct task_struct *p, struct task_struct *org) 36755 static inline void setup_thread_stack(struct task_struct *p, struct task_struct *org)
37539 { 36756 {
37540diff -urNp linux-2.6.29.6/include/linux/screen_info.h linux-2.6.29.6/include/linux/screen_info.h 36757@@ -2114,7 +2182,7 @@ static inline unsigned long *end_of_stac
37541--- linux-2.6.29.6/include/linux/screen_info.h 2009-07-02 19:41:20.000000000 -0400 36758
37542+++ linux-2.6.29.6/include/linux/screen_info.h 2009-07-23 17:34:32.195781799 -0400 36759 #endif
36760
36761-static inline int object_is_on_stack(void *obj)
36762+static inline int object_is_on_stack(const void *obj)
36763 {
36764 void *stack = task_stack_page(current);
36765
36766diff -urNp linux-2.6.30.4/include/linux/screen_info.h linux-2.6.30.4/include/linux/screen_info.h
36767--- linux-2.6.30.4/include/linux/screen_info.h 2009-07-24 17:47:51.000000000 -0400
36768+++ linux-2.6.30.4/include/linux/screen_info.h 2009-07-30 09:48:10.117039309 -0400
37543@@ -42,7 +42,8 @@ struct screen_info { 36769@@ -42,7 +42,8 @@ struct screen_info {
37544 __u16 pages; /* 0x32 */ 36770 __u16 pages; /* 0x32 */
37545 __u16 vesa_attributes; /* 0x34 */ 36771 __u16 vesa_attributes; /* 0x34 */
@@ -37550,20 +36776,20 @@ diff -urNp linux-2.6.29.6/include/linux/screen_info.h linux-2.6.29.6/include/lin
37550 } __attribute__((packed)); 36776 } __attribute__((packed));
37551 36777
37552 #define VIDEO_TYPE_MDA 0x10 /* Monochrome Text Display */ 36778 #define VIDEO_TYPE_MDA 0x10 /* Monochrome Text Display */
37553diff -urNp linux-2.6.29.6/include/linux/security.h linux-2.6.29.6/include/linux/security.h 36779diff -urNp linux-2.6.30.4/include/linux/security.h linux-2.6.30.4/include/linux/security.h
37554--- linux-2.6.29.6/include/linux/security.h 2009-07-02 19:41:20.000000000 -0400 36780--- linux-2.6.30.4/include/linux/security.h 2009-07-24 17:47:51.000000000 -0400
37555+++ linux-2.6.29.6/include/linux/security.h 2009-07-23 17:34:32.196774213 -0400 36781+++ linux-2.6.30.4/include/linux/security.h 2009-07-30 11:22:42.449401037 -0400
37556@@ -32,6 +32,7 @@ 36782@@ -33,6 +33,7 @@
37557 #include <linux/sched.h>
37558 #include <linux/key.h> 36783 #include <linux/key.h>
37559 #include <linux/xfrm.h> 36784 #include <linux/xfrm.h>
36785 #include <linux/gfp.h>
37560+#include <linux/grsecurity.h> 36786+#include <linux/grsecurity.h>
37561 #include <net/flow.h> 36787 #include <net/flow.h>
37562 36788
37563 /* Maximum number of letters for an LSM name string */ 36789 /* Maximum number of letters for an LSM name string */
37564diff -urNp linux-2.6.29.6/include/linux/shm.h linux-2.6.29.6/include/linux/shm.h 36790diff -urNp linux-2.6.30.4/include/linux/shm.h linux-2.6.30.4/include/linux/shm.h
37565--- linux-2.6.29.6/include/linux/shm.h 2009-07-02 19:41:20.000000000 -0400 36791--- linux-2.6.30.4/include/linux/shm.h 2009-07-24 17:47:51.000000000 -0400
37566+++ linux-2.6.29.6/include/linux/shm.h 2009-07-23 17:34:32.196774213 -0400 36792+++ linux-2.6.30.4/include/linux/shm.h 2009-07-30 11:10:49.530519651 -0400
37567@@ -95,6 +95,10 @@ struct shmid_kernel /* private to the ke 36793@@ -95,6 +95,10 @@ struct shmid_kernel /* private to the ke
37568 pid_t shm_cprid; 36794 pid_t shm_cprid;
37569 pid_t shm_lprid; 36795 pid_t shm_lprid;
@@ -37575,9 +36801,9 @@ diff -urNp linux-2.6.29.6/include/linux/shm.h linux-2.6.29.6/include/linux/shm.h
37575 }; 36801 };
37576 36802
37577 /* shm_mode upper byte flags */ 36803 /* shm_mode upper byte flags */
37578diff -urNp linux-2.6.29.6/include/linux/slab.h linux-2.6.29.6/include/linux/slab.h 36804diff -urNp linux-2.6.30.4/include/linux/slab.h linux-2.6.30.4/include/linux/slab.h
37579--- linux-2.6.29.6/include/linux/slab.h 2009-07-02 19:41:20.000000000 -0400 36805--- linux-2.6.30.4/include/linux/slab.h 2009-07-24 17:47:51.000000000 -0400
37580+++ linux-2.6.29.6/include/linux/slab.h 2009-07-23 17:34:32.196774213 -0400 36806+++ linux-2.6.30.4/include/linux/slab.h 2009-07-30 09:48:10.117976173 -0400
37581@@ -73,10 +73,9 @@ 36807@@ -73,10 +73,9 @@
37582 * ZERO_SIZE_PTR can be passed to kfree though in the same way that NULL can. 36808 * ZERO_SIZE_PTR can be passed to kfree though in the same way that NULL can.
37583 * Both make kfree a no-op. 36809 * Both make kfree a no-op.
@@ -37599,45 +36825,47 @@ diff -urNp linux-2.6.29.6/include/linux/slab.h linux-2.6.29.6/include/linux/slab
37599 36825
37600 /* 36826 /*
37601 * Allocator specific definitions. These are mainly used to establish optimized 36827 * Allocator specific definitions. These are mainly used to establish optimized
37602@@ -317,4 +317,35 @@ static inline void *kzalloc_node(size_t 36828@@ -317,4 +317,37 @@ static inline void *kzalloc_node(size_t
37603 return kmalloc_node(size, flags | __GFP_ZERO, node); 36829 return kmalloc_node(size, flags | __GFP_ZERO, node);
37604 } 36830 }
37605 36831
37606+#define kmalloc(x,y) \ 36832+#define kmalloc(x, y) \
37607+ ({ \ 36833+({ \
37608+ void *___retval; \ 36834+ void *___retval; \
37609+ intoverflow_t ___x = (intoverflow_t)x; \ 36835+ intoverflow_t ___x = (intoverflow_t)x; \
37610+ if (likely(___x <= ULONG_MAX)) \ 36836+ if (WARN(___x > ULONG_MAX, "kmalloc size overflow\n"))\
37611+ ___retval = kmalloc((size_t)___x, y); \ 36837+ ___retval = NULL; \
37612+ else \ 36838+ else \
37613+ ___retval = NULL; \ 36839+ ___retval = kmalloc((size_t)___x, (y)); \
37614+ ___retval; \ 36840+ ___retval; \
37615+ }) 36841+})
37616+#define kmalloc_node(x,y,z) \ 36842+
37617+ ({ \ 36843+#define kmalloc_node(x, y, z) \
37618+ void *___retval; \ 36844+({ \
37619+ intoverflow_t ___x = (intoverflow_t)x; \ 36845+ void *___retval; \
37620+ if (likely(___x <= ULONG_MAX)) \ 36846+ intoverflow_t ___x = (intoverflow_t)x; \
37621+ ___retval = kmalloc_node((size_t)___x, y, z); \ 36847+ if (WARN(___x > ULONG_MAX, "kmalloc_node size overflow\n"))\
37622+ else \ 36848+ ___retval = NULL; \
37623+ ___retval = NULL; \ 36849+ else \
37624+ ___retval; \ 36850+ ___retval = kmalloc_node((size_t)___x, (y), (z));\
37625+ }) 36851+ ___retval; \
37626+#define kzalloc(x,y) \ 36852+})
37627+ ({ \ 36853+
37628+ void *___retval; \ 36854+#define kzalloc(x, y) \
37629+ intoverflow_t ___x = (intoverflow_t)x; \ 36855+({ \
37630+ if (likely(___x <= ULONG_MAX)) \ 36856+ void *___retval; \
37631+ ___retval = kzalloc((size_t)___x, y); \ 36857+ intoverflow_t ___x = (intoverflow_t)x; \
37632+ else \ 36858+ if (WARN(___x > ULONG_MAX, "kzalloc size overflow\n"))\
37633+ ___retval = NULL; \ 36859+ ___retval = NULL; \
37634+ ___retval; \ 36860+ else \
37635+ }) 36861+ ___retval = kzalloc((size_t)___x, (y)); \
36862+ ___retval; \
36863+})
37636+ 36864+
37637 #endif /* _LINUX_SLAB_H */ 36865 #endif /* _LINUX_SLAB_H */
37638diff -urNp linux-2.6.29.6/include/linux/slub_def.h linux-2.6.29.6/include/linux/slub_def.h 36866diff -urNp linux-2.6.30.4/include/linux/slub_def.h linux-2.6.30.4/include/linux/slub_def.h
37639--- linux-2.6.29.6/include/linux/slub_def.h 2009-07-02 19:41:20.000000000 -0400 36867--- linux-2.6.30.4/include/linux/slub_def.h 2009-07-24 17:47:51.000000000 -0400
37640+++ linux-2.6.29.6/include/linux/slub_def.h 2009-07-23 17:34:32.196774213 -0400 36868+++ linux-2.6.30.4/include/linux/slub_def.h 2009-07-30 09:48:10.117976173 -0400
37641@@ -85,7 +85,7 @@ struct kmem_cache { 36869@@ -85,7 +85,7 @@ struct kmem_cache {
37642 struct kmem_cache_order_objects max; 36870 struct kmem_cache_order_objects max;
37643 struct kmem_cache_order_objects min; 36871 struct kmem_cache_order_objects min;
@@ -37647,9 +36875,9 @@ diff -urNp linux-2.6.29.6/include/linux/slub_def.h linux-2.6.29.6/include/linux/
37647 void (*ctor)(void *); 36875 void (*ctor)(void *);
37648 int inuse; /* Offset to metadata */ 36876 int inuse; /* Offset to metadata */
37649 int align; /* Alignment */ 36877 int align; /* Alignment */
37650diff -urNp linux-2.6.29.6/include/linux/sonet.h linux-2.6.29.6/include/linux/sonet.h 36878diff -urNp linux-2.6.30.4/include/linux/sonet.h linux-2.6.30.4/include/linux/sonet.h
37651--- linux-2.6.29.6/include/linux/sonet.h 2009-07-02 19:41:20.000000000 -0400 36879--- linux-2.6.30.4/include/linux/sonet.h 2009-07-24 17:47:51.000000000 -0400
37652+++ linux-2.6.29.6/include/linux/sonet.h 2009-07-23 17:34:37.460011249 -0400 36880+++ linux-2.6.30.4/include/linux/sonet.h 2009-07-30 09:48:10.118663996 -0400
37653@@ -61,7 +61,7 @@ struct sonet_stats { 36881@@ -61,7 +61,7 @@ struct sonet_stats {
37654 #include <asm/atomic.h> 36882 #include <asm/atomic.h>
37655 36883
@@ -37659,9 +36887,9 @@ diff -urNp linux-2.6.29.6/include/linux/sonet.h linux-2.6.29.6/include/linux/son
37659 __SONET_ITEMS 36887 __SONET_ITEMS
37660 #undef __HANDLE_ITEM 36888 #undef __HANDLE_ITEM
37661 }; 36889 };
37662diff -urNp linux-2.6.29.6/include/linux/sysctl.h linux-2.6.29.6/include/linux/sysctl.h 36890diff -urNp linux-2.6.30.4/include/linux/sysctl.h linux-2.6.30.4/include/linux/sysctl.h
37663--- linux-2.6.29.6/include/linux/sysctl.h 2009-07-02 19:41:20.000000000 -0400 36891--- linux-2.6.30.4/include/linux/sysctl.h 2009-07-24 17:47:51.000000000 -0400
37664+++ linux-2.6.29.6/include/linux/sysctl.h 2009-07-23 17:34:32.197772567 -0400 36892+++ linux-2.6.30.4/include/linux/sysctl.h 2009-07-30 09:48:10.118663996 -0400
37665@@ -165,7 +165,11 @@ enum 36893@@ -165,7 +165,11 @@ enum
37666 KERN_PANIC_ON_NMI=76, /* int: whether we will panic on an unrecovered */ 36894 KERN_PANIC_ON_NMI=76, /* int: whether we will panic on an unrecovered */
37667 }; 36895 };
@@ -37675,9 +36903,9 @@ diff -urNp linux-2.6.29.6/include/linux/sysctl.h linux-2.6.29.6/include/linux/sy
37675 36903
37676 /* CTL_VM names: */ 36904 /* CTL_VM names: */
37677 enum 36905 enum
37678diff -urNp linux-2.6.29.6/include/linux/thread_info.h linux-2.6.29.6/include/linux/thread_info.h 36906diff -urNp linux-2.6.30.4/include/linux/thread_info.h linux-2.6.30.4/include/linux/thread_info.h
37679--- linux-2.6.29.6/include/linux/thread_info.h 2009-07-02 19:41:20.000000000 -0400 36907--- linux-2.6.30.4/include/linux/thread_info.h 2009-07-24 17:47:51.000000000 -0400
37680+++ linux-2.6.29.6/include/linux/thread_info.h 2009-07-23 17:34:32.197772567 -0400 36908+++ linux-2.6.30.4/include/linux/thread_info.h 2009-07-30 09:48:10.118663996 -0400
37681@@ -23,7 +23,7 @@ struct restart_block { 36909@@ -23,7 +23,7 @@ struct restart_block {
37682 }; 36910 };
37683 /* For futex_wait */ 36911 /* For futex_wait */
@@ -37687,9 +36915,9 @@ diff -urNp linux-2.6.29.6/include/linux/thread_info.h linux-2.6.29.6/include/lin
37687 u32 val; 36915 u32 val;
37688 u32 flags; 36916 u32 flags;
37689 u32 bitset; 36917 u32 bitset;
37690diff -urNp linux-2.6.29.6/include/linux/tty_ldisc.h linux-2.6.29.6/include/linux/tty_ldisc.h 36918diff -urNp linux-2.6.30.4/include/linux/tty_ldisc.h linux-2.6.30.4/include/linux/tty_ldisc.h
37691--- linux-2.6.29.6/include/linux/tty_ldisc.h 2009-07-02 19:41:20.000000000 -0400 36919--- linux-2.6.30.4/include/linux/tty_ldisc.h 2009-07-24 17:47:51.000000000 -0400
37692+++ linux-2.6.29.6/include/linux/tty_ldisc.h 2009-07-23 17:34:32.197772567 -0400 36920+++ linux-2.6.30.4/include/linux/tty_ldisc.h 2009-07-30 09:48:10.118663996 -0400
37693@@ -139,12 +139,12 @@ struct tty_ldisc_ops { 36921@@ -139,12 +139,12 @@ struct tty_ldisc_ops {
37694 36922
37695 struct module *owner; 36923 struct module *owner;
@@ -37705,10 +36933,10 @@ diff -urNp linux-2.6.29.6/include/linux/tty_ldisc.h linux-2.6.29.6/include/linux
37705 }; 36933 };
37706 36934
37707 #define TTY_LDISC_MAGIC 0x5403 36935 #define TTY_LDISC_MAGIC 0x5403
37708diff -urNp linux-2.6.29.6/include/linux/types.h linux-2.6.29.6/include/linux/types.h 36936diff -urNp linux-2.6.30.4/include/linux/types.h linux-2.6.30.4/include/linux/types.h
37709--- linux-2.6.29.6/include/linux/types.h 2009-07-02 19:41:20.000000000 -0400 36937--- linux-2.6.30.4/include/linux/types.h 2009-07-24 17:47:51.000000000 -0400
37710+++ linux-2.6.29.6/include/linux/types.h 2009-07-23 17:34:32.197772567 -0400 36938+++ linux-2.6.30.4/include/linux/types.h 2009-07-30 09:48:10.118663996 -0400
37711@@ -198,10 +198,26 @@ typedef struct { 36939@@ -191,10 +191,26 @@ typedef struct {
37712 volatile int counter; 36940 volatile int counter;
37713 } atomic_t; 36941 } atomic_t;
37714 36942
@@ -37735,9 +36963,9 @@ diff -urNp linux-2.6.29.6/include/linux/types.h linux-2.6.29.6/include/linux/typ
37735 #endif 36963 #endif
37736 36964
37737 struct ustat { 36965 struct ustat {
37738diff -urNp linux-2.6.29.6/include/linux/uaccess.h linux-2.6.29.6/include/linux/uaccess.h 36966diff -urNp linux-2.6.30.4/include/linux/uaccess.h linux-2.6.30.4/include/linux/uaccess.h
37739--- linux-2.6.29.6/include/linux/uaccess.h 2009-07-02 19:41:20.000000000 -0400 36967--- linux-2.6.30.4/include/linux/uaccess.h 2009-07-24 17:47:51.000000000 -0400
37740+++ linux-2.6.29.6/include/linux/uaccess.h 2009-07-23 17:34:32.197772567 -0400 36968+++ linux-2.6.30.4/include/linux/uaccess.h 2009-07-30 09:48:10.118663996 -0400
37741@@ -76,11 +76,11 @@ static inline unsigned long __copy_from_ 36969@@ -76,11 +76,11 @@ static inline unsigned long __copy_from_
37742 long ret; \ 36970 long ret; \
37743 mm_segment_t old_fs = get_fs(); \ 36971 mm_segment_t old_fs = get_fs(); \
@@ -37752,9 +36980,9 @@ diff -urNp linux-2.6.29.6/include/linux/uaccess.h linux-2.6.29.6/include/linux/u
37752 ret; \ 36980 ret; \
37753 }) 36981 })
37754 36982
37755diff -urNp linux-2.6.29.6/include/linux/vmalloc.h linux-2.6.29.6/include/linux/vmalloc.h 36983diff -urNp linux-2.6.30.4/include/linux/vmalloc.h linux-2.6.30.4/include/linux/vmalloc.h
37756--- linux-2.6.29.6/include/linux/vmalloc.h 2009-07-02 19:41:20.000000000 -0400 36984--- linux-2.6.30.4/include/linux/vmalloc.h 2009-07-24 17:47:51.000000000 -0400
37757+++ linux-2.6.29.6/include/linux/vmalloc.h 2009-07-23 17:34:32.197772567 -0400 36985+++ linux-2.6.30.4/include/linux/vmalloc.h 2009-07-30 09:48:10.119975963 -0400
37758@@ -13,6 +13,11 @@ struct vm_area_struct; /* vma defining 36986@@ -13,6 +13,11 @@ struct vm_area_struct; /* vma defining
37759 #define VM_MAP 0x00000004 /* vmap()ed pages */ 36987 #define VM_MAP 0x00000004 /* vmap()ed pages */
37760 #define VM_USERMAP 0x00000008 /* suitable for remap_vmalloc_range */ 36988 #define VM_USERMAP 0x00000008 /* suitable for remap_vmalloc_range */
@@ -37767,86 +36995,92 @@ diff -urNp linux-2.6.29.6/include/linux/vmalloc.h linux-2.6.29.6/include/linux/v
37767 /* bits [20..32] reserved for arch specific ioremap internals */ 36995 /* bits [20..32] reserved for arch specific ioremap internals */
37768 36996
37769 /* 36997 /*
37770@@ -111,4 +116,75 @@ extern long vwrite(char *buf, char *addr 36998@@ -115,4 +120,81 @@ extern rwlock_t vmlist_lock;
37771 extern rwlock_t vmlist_lock;
37772 extern struct vm_struct *vmlist; 36999 extern struct vm_struct *vmlist;
37773 37000 extern __init void vm_area_register_early(struct vm_struct *vm, size_t align);
37774+#define vmalloc(x) \ 37001
37775+ ({ \ 37002+#define vmalloc(x) \
37776+ void *___retval; \ 37003+({ \
37777+ intoverflow_t ___x = (intoverflow_t)x; \ 37004+ void *___retval; \
37778+ if (likely(___x <= ULONG_MAX)) \ 37005+ intoverflow_t ___x = (intoverflow_t)x; \
37779+ ___retval = vmalloc((unsigned long)___x); \ 37006+ if (WARN(___x > ULONG_MAX, "vmalloc size overflow\n")) \
37780+ else \ 37007+ ___retval = NULL; \
37781+ ___retval = NULL; \ 37008+ else \
37782+ ___retval; \ 37009+ ___retval = vmalloc((unsigned long)___x); \
37783+ }) 37010+ ___retval; \
37784+#define __vmalloc(x,y,z) \ 37011+})
37785+ ({ \ 37012+
37786+ void *___retval; \ 37013+#define __vmalloc(x, y, z) \
37787+ intoverflow_t ___x = (intoverflow_t)x; \ 37014+({ \
37788+ if (likely(___x <= ULONG_MAX)) \ 37015+ void *___retval; \
37789+ ___retval = __vmalloc((unsigned long)___x, y, z); \ 37016+ intoverflow_t ___x = (intoverflow_t)x; \
37790+ else \ 37017+ if (WARN(___x > ULONG_MAX, "__vmalloc size overflow\n"))\
37791+ ___retval = NULL; \ 37018+ ___retval = NULL; \
37792+ ___retval; \ 37019+ else \
37793+ }) 37020+ ___retval = __vmalloc((unsigned long)___x, (y), (z));\
37794+#define vmalloc_user(x) \ 37021+ ___retval; \
37795+ ({ \ 37022+})
37796+ void *___retval; \ 37023+
37797+ intoverflow_t ___x = (intoverflow_t)x; \ 37024+#define vmalloc_user(x) \
37798+ if (likely(___x <= ULONG_MAX)) \ 37025+({ \
37799+ ___retval = vmalloc_user((unsigned long)___x); \ 37026+ void *___retval; \
37800+ else \ 37027+ intoverflow_t ___x = (intoverflow_t)x; \
37801+ ___retval = NULL; \ 37028+ if (WARN(___x > ULONG_MAX, "vmalloc_user size overflow\n"))\
37802+ ___retval; \ 37029+ ___retval = NULL; \
37803+ }) 37030+ else \
37804+#define vmalloc_exec(x) \ 37031+ ___retval = vmalloc_user((unsigned long)___x); \
37805+ ({ \ 37032+ ___retval; \
37806+ void *___retval; \ 37033+})
37807+ intoverflow_t ___x = (intoverflow_t)x; \ 37034+
37808+ if (likely(___x <= ULONG_MAX)) \ 37035+#define vmalloc_exec(x) \
37809+ ___retval = vmalloc_exec((unsigned long)___x); \ 37036+({ \
37810+ else \ 37037+ void *___retval; \
37811+ ___retval = NULL; \ 37038+ intoverflow_t ___x = (intoverflow_t)x; \
37812+ ___retval; \ 37039+ if (WARN(___x > ULONG_MAX, "vmalloc_exec size overflow\n"))\
37813+ }) 37040+ ___retval = NULL; \
37814+#define vmalloc_node(x,y) \ 37041+ else \
37815+ ({ \ 37042+ ___retval = vmalloc_exec((unsigned long)___x); \
37816+ void *___retval; \ 37043+ ___retval; \
37817+ intoverflow_t ___x = (intoverflow_t)x; \ 37044+})
37818+ if (likely(___x <= ULONG_MAX)) \ 37045+
37819+ ___retval = vmalloc_node((unsigned long)___x,y); \ 37046+#define vmalloc_node(x, y) \
37820+ else \ 37047+({ \
37821+ ___retval = NULL; \ 37048+ void *___retval; \
37822+ ___retval; \ 37049+ intoverflow_t ___x = (intoverflow_t)x; \
37823+ }) 37050+ if (WARN(___x > ULONG_MAX, "vmalloc_node size overflow\n"))\
37824+#define vmalloc_32(x) \ 37051+ ___retval = NULL; \
37825+ ({ \ 37052+ else \
37826+ void *___retval; \ 37053+ ___retval = vmalloc_node((unsigned long)___x, (y));\
37827+ intoverflow_t ___x = (intoverflow_t)x; \ 37054+ ___retval; \
37828+ if (likely(___x <= ULONG_MAX)) \ 37055+})
37829+ ___retval = vmalloc_32((unsigned long)___x); \ 37056+
37830+ else \ 37057+#define vmalloc_32(x) \
37831+ ___retval = NULL; \ 37058+({ \
37832+ ___retval; \ 37059+ void *___retval; \
37833+ }) 37060+ intoverflow_t ___x = (intoverflow_t)x; \
37834+#define vmalloc_32_user(x) \ 37061+ if (WARN(___x > ULONG_MAX, "vmalloc_32 size overflow\n"))\
37835+ ({ \ 37062+ ___retval = NULL; \
37836+ void *___retval; \ 37063+ else \
37837+ intoverflow_t ___x = (intoverflow_t)x; \ 37064+ ___retval = vmalloc_32((unsigned long)___x); \
37838+ if (likely(___x <= ULONG_MAX)) \ 37065+ ___retval; \
37839+ ___retval = vmalloc_32_user((unsigned long)___x); \ 37066+})
37840+ else \ 37067+
37841+ ___retval = NULL; \ 37068+#define vmalloc_32_user(x) \
37842+ ___retval; \ 37069+({ \
37843+ }) 37070+ void *___retval; \
37071+ intoverflow_t ___x = (intoverflow_t)x; \
37072+ if (WARN(___x > ULONG_MAX, "vmalloc_32_user size overflow\n"))\
37073+ ___retval = NULL; \
37074+ else \
37075+ ___retval = vmalloc_32_user((unsigned long)___x);\
37076+ ___retval; \
37077+})
37844+ 37078+
37845 #endif /* _LINUX_VMALLOC_H */ 37079 #endif /* _LINUX_VMALLOC_H */
37846diff -urNp linux-2.6.29.6/include/net/sctp/sctp.h linux-2.6.29.6/include/net/sctp/sctp.h 37080diff -urNp linux-2.6.30.4/include/net/sctp/sctp.h linux-2.6.30.4/include/net/sctp/sctp.h
37847--- linux-2.6.29.6/include/net/sctp/sctp.h 2009-07-02 19:41:20.000000000 -0400 37081--- linux-2.6.30.4/include/net/sctp/sctp.h 2009-07-24 17:47:51.000000000 -0400
37848+++ linux-2.6.29.6/include/net/sctp/sctp.h 2009-07-23 17:34:32.198741602 -0400 37082+++ linux-2.6.30.4/include/net/sctp/sctp.h 2009-07-30 09:48:10.119975963 -0400
37849@@ -310,8 +310,8 @@ extern int sctp_debug_flag; 37083@@ -305,8 +305,8 @@ extern int sctp_debug_flag;
37850 37084
37851 #else /* SCTP_DEBUG */ 37085 #else /* SCTP_DEBUG */
37852 37086
@@ -37857,10 +37091,10 @@ diff -urNp linux-2.6.29.6/include/net/sctp/sctp.h linux-2.6.29.6/include/net/sct
37857 #define SCTP_ENABLE_DEBUG 37091 #define SCTP_ENABLE_DEBUG
37858 #define SCTP_DISABLE_DEBUG 37092 #define SCTP_DISABLE_DEBUG
37859 #define SCTP_ASSERT(expr, str, func) 37093 #define SCTP_ASSERT(expr, str, func)
37860diff -urNp linux-2.6.29.6/include/sound/core.h linux-2.6.29.6/include/sound/core.h 37094diff -urNp linux-2.6.30.4/include/sound/core.h linux-2.6.30.4/include/sound/core.h
37861--- linux-2.6.29.6/include/sound/core.h 2009-07-02 19:41:20.000000000 -0400 37095--- linux-2.6.30.4/include/sound/core.h 2009-07-24 17:47:51.000000000 -0400
37862+++ linux-2.6.29.6/include/sound/core.h 2009-07-23 17:34:32.198741602 -0400 37096+++ linux-2.6.30.4/include/sound/core.h 2009-07-30 09:48:10.119975963 -0400
37863@@ -427,7 +427,7 @@ static inline int __snd_bug_on(int cond) 37097@@ -439,7 +439,7 @@ static inline int __snd_bug_on(int cond)
37864 */ 37098 */
37865 #define snd_printdd(format, args...) snd_printk(format, ##args) 37099 #define snd_printdd(format, args...) snd_printk(format, ##args)
37866 #else 37100 #else
@@ -37869,9 +37103,9 @@ diff -urNp linux-2.6.29.6/include/sound/core.h linux-2.6.29.6/include/sound/core
37869 #endif 37103 #endif
37870 37104
37871 37105
37872diff -urNp linux-2.6.29.6/include/video/uvesafb.h linux-2.6.29.6/include/video/uvesafb.h 37106diff -urNp linux-2.6.30.4/include/video/uvesafb.h linux-2.6.30.4/include/video/uvesafb.h
37873--- linux-2.6.29.6/include/video/uvesafb.h 2009-07-02 19:41:20.000000000 -0400 37107--- linux-2.6.30.4/include/video/uvesafb.h 2009-07-24 17:47:51.000000000 -0400
37874+++ linux-2.6.29.6/include/video/uvesafb.h 2009-07-23 17:34:32.198741602 -0400 37108+++ linux-2.6.30.4/include/video/uvesafb.h 2009-07-30 09:48:10.120938150 -0400
37875@@ -177,6 +177,7 @@ struct uvesafb_par { 37109@@ -177,6 +177,7 @@ struct uvesafb_par {
37876 u8 ypan; /* 0 - nothing, 1 - ypan, 2 - ywrap */ 37110 u8 ypan; /* 0 - nothing, 1 - ypan, 2 - ywrap */
37877 u8 pmi_setpal; /* PMI for palette changes */ 37111 u8 pmi_setpal; /* PMI for palette changes */
@@ -37880,10 +37114,10 @@ diff -urNp linux-2.6.29.6/include/video/uvesafb.h linux-2.6.29.6/include/video/u
37880 void *pmi_start; 37114 void *pmi_start;
37881 void *pmi_pal; 37115 void *pmi_pal;
37882 u8 *vbe_state_orig; /* 37116 u8 *vbe_state_orig; /*
37883diff -urNp linux-2.6.29.6/init/do_mounts.c linux-2.6.29.6/init/do_mounts.c 37117diff -urNp linux-2.6.30.4/init/do_mounts.c linux-2.6.30.4/init/do_mounts.c
37884--- linux-2.6.29.6/init/do_mounts.c 2009-07-02 19:41:20.000000000 -0400 37118--- linux-2.6.30.4/init/do_mounts.c 2009-07-24 17:47:51.000000000 -0400
37885+++ linux-2.6.29.6/init/do_mounts.c 2009-07-23 17:34:32.198741602 -0400 37119+++ linux-2.6.30.4/init/do_mounts.c 2009-07-30 09:48:10.121806882 -0400
37886@@ -215,11 +215,11 @@ static void __init get_fs_names(char *pa 37120@@ -216,11 +216,11 @@ static void __init get_fs_names(char *pa
37887 37121
37888 static int __init do_mount_root(char *name, char *fs, int flags, void *data) 37122 static int __init do_mount_root(char *name, char *fs, int flags, void *data)
37889 { 37123 {
@@ -37897,7 +37131,7 @@ diff -urNp linux-2.6.29.6/init/do_mounts.c linux-2.6.29.6/init/do_mounts.c
37897 ROOT_DEV = current->fs->pwd.mnt->mnt_sb->s_dev; 37131 ROOT_DEV = current->fs->pwd.mnt->mnt_sb->s_dev;
37898 printk("VFS: Mounted root (%s filesystem)%s on device %u:%u.\n", 37132 printk("VFS: Mounted root (%s filesystem)%s on device %u:%u.\n",
37899 current->fs->pwd.mnt->mnt_sb->s_type->name, 37133 current->fs->pwd.mnt->mnt_sb->s_type->name,
37900@@ -309,18 +309,18 @@ void __init change_floppy(char *fmt, ... 37134@@ -310,18 +310,18 @@ void __init change_floppy(char *fmt, ...
37901 va_start(args, fmt); 37135 va_start(args, fmt);
37902 vsprintf(buf, fmt, args); 37136 vsprintf(buf, fmt, args);
37903 va_end(args); 37137 va_end(args);
@@ -37919,7 +37153,7 @@ diff -urNp linux-2.6.29.6/init/do_mounts.c linux-2.6.29.6/init/do_mounts.c
37919 termios.c_lflag |= ICANON; 37153 termios.c_lflag |= ICANON;
37920 sys_ioctl(fd, TCSETSF, (long)&termios); 37154 sys_ioctl(fd, TCSETSF, (long)&termios);
37921 sys_close(fd); 37155 sys_close(fd);
37922@@ -413,7 +413,7 @@ void __init prepare_namespace(void) 37156@@ -414,7 +414,7 @@ void __init prepare_namespace(void)
37923 37157
37924 mount_root(); 37158 mount_root();
37925 out: 37159 out:
@@ -37929,10 +37163,10 @@ diff -urNp linux-2.6.29.6/init/do_mounts.c linux-2.6.29.6/init/do_mounts.c
37929+ sys_chroot((char __user *)"."); 37163+ sys_chroot((char __user *)".");
37930 } 37164 }
37931 37165
37932diff -urNp linux-2.6.29.6/init/do_mounts.h linux-2.6.29.6/init/do_mounts.h 37166diff -urNp linux-2.6.30.4/init/do_mounts.h linux-2.6.30.4/init/do_mounts.h
37933--- linux-2.6.29.6/init/do_mounts.h 2009-07-02 19:41:20.000000000 -0400 37167--- linux-2.6.30.4/init/do_mounts.h 2009-07-24 17:47:51.000000000 -0400
37934+++ linux-2.6.29.6/init/do_mounts.h 2009-07-23 17:34:32.198741602 -0400 37168+++ linux-2.6.30.4/init/do_mounts.h 2009-07-30 09:48:10.121806882 -0400
37935@@ -14,15 +14,15 @@ extern int root_mountflags; 37169@@ -15,15 +15,15 @@ extern int root_mountflags;
37936 37170
37937 static inline int create_dev(char *name, dev_t dev) 37171 static inline int create_dev(char *name, dev_t dev)
37938 { 37172 {
@@ -37951,9 +37185,9 @@ diff -urNp linux-2.6.29.6/init/do_mounts.h linux-2.6.29.6/init/do_mounts.h
37951 return 0; 37185 return 0;
37952 if (!S_ISBLK(stat.st_mode)) 37186 if (!S_ISBLK(stat.st_mode))
37953 return 0; 37187 return 0;
37954diff -urNp linux-2.6.29.6/init/do_mounts_initrd.c linux-2.6.29.6/init/do_mounts_initrd.c 37188diff -urNp linux-2.6.30.4/init/do_mounts_initrd.c linux-2.6.30.4/init/do_mounts_initrd.c
37955--- linux-2.6.29.6/init/do_mounts_initrd.c 2009-07-02 19:41:20.000000000 -0400 37189--- linux-2.6.30.4/init/do_mounts_initrd.c 2009-07-24 17:47:51.000000000 -0400
37956+++ linux-2.6.29.6/init/do_mounts_initrd.c 2009-07-23 17:34:32.199729497 -0400 37190+++ linux-2.6.30.4/init/do_mounts_initrd.c 2009-07-30 09:48:10.121806882 -0400
37957@@ -32,7 +32,7 @@ static int __init do_linuxrc(void * shel 37191@@ -32,7 +32,7 @@ static int __init do_linuxrc(void * shel
37958 sys_close(old_fd);sys_close(root_fd); 37192 sys_close(old_fd);sys_close(root_fd);
37959 sys_close(0);sys_close(1);sys_close(2); 37193 sys_close(0);sys_close(1);sys_close(2);
@@ -38037,10 +37271,10 @@ diff -urNp linux-2.6.29.6/init/do_mounts_initrd.c linux-2.6.29.6/init/do_mounts_
38037+ sys_unlink((const char __user *)"/initrd.image"); 37271+ sys_unlink((const char __user *)"/initrd.image");
38038 return 0; 37272 return 0;
38039 } 37273 }
38040diff -urNp linux-2.6.29.6/init/do_mounts_md.c linux-2.6.29.6/init/do_mounts_md.c 37274diff -urNp linux-2.6.30.4/init/do_mounts_md.c linux-2.6.30.4/init/do_mounts_md.c
38041--- linux-2.6.29.6/init/do_mounts_md.c 2009-07-02 19:41:20.000000000 -0400 37275--- linux-2.6.30.4/init/do_mounts_md.c 2009-07-24 17:47:51.000000000 -0400
38042+++ linux-2.6.29.6/init/do_mounts_md.c 2009-07-23 17:34:32.199729497 -0400 37276+++ linux-2.6.30.4/init/do_mounts_md.c 2009-07-30 09:48:10.121806882 -0400
38043@@ -171,7 +171,7 @@ static void __init md_setup_drive(void) 37277@@ -170,7 +170,7 @@ static void __init md_setup_drive(void)
38044 partitioned ? "_d" : "", minor, 37278 partitioned ? "_d" : "", minor,
38045 md_setup_args[ent].device_names); 37279 md_setup_args[ent].device_names);
38046 37280
@@ -38049,7 +37283,7 @@ diff -urNp linux-2.6.29.6/init/do_mounts_md.c linux-2.6.29.6/init/do_mounts_md.c
38049 if (fd < 0) { 37283 if (fd < 0) {
38050 printk(KERN_ERR "md: open failed - cannot start " 37284 printk(KERN_ERR "md: open failed - cannot start "
38051 "array %s\n", name); 37285 "array %s\n", name);
38052@@ -234,7 +234,7 @@ static void __init md_setup_drive(void) 37286@@ -233,7 +233,7 @@ static void __init md_setup_drive(void)
38053 * array without it 37287 * array without it
38054 */ 37288 */
38055 sys_close(fd); 37289 sys_close(fd);
@@ -38058,7 +37292,7 @@ diff -urNp linux-2.6.29.6/init/do_mounts_md.c linux-2.6.29.6/init/do_mounts_md.c
38058 sys_ioctl(fd, BLKRRPART, 0); 37292 sys_ioctl(fd, BLKRRPART, 0);
38059 } 37293 }
38060 sys_close(fd); 37294 sys_close(fd);
38061@@ -284,7 +284,7 @@ static void __init autodetect_raid(void) 37295@@ -283,7 +283,7 @@ static void __init autodetect_raid(void)
38062 37296
38063 wait_for_device_probe(); 37297 wait_for_device_probe();
38064 37298
@@ -38067,10 +37301,10 @@ diff -urNp linux-2.6.29.6/init/do_mounts_md.c linux-2.6.29.6/init/do_mounts_md.c
38067 if (fd >= 0) { 37301 if (fd >= 0) {
38068 sys_ioctl(fd, RAID_AUTORUN, raid_autopart); 37302 sys_ioctl(fd, RAID_AUTORUN, raid_autopart);
38069 sys_close(fd); 37303 sys_close(fd);
38070diff -urNp linux-2.6.29.6/init/initramfs.c linux-2.6.29.6/init/initramfs.c 37304diff -urNp linux-2.6.30.4/init/initramfs.c linux-2.6.30.4/init/initramfs.c
38071--- linux-2.6.29.6/init/initramfs.c 2009-07-02 19:41:20.000000000 -0400 37305--- linux-2.6.30.4/init/initramfs.c 2009-07-24 17:47:51.000000000 -0400
38072+++ linux-2.6.29.6/init/initramfs.c 2009-07-23 17:34:32.199729497 -0400 37306+++ linux-2.6.30.4/init/initramfs.c 2009-07-30 09:48:10.121806882 -0400
38073@@ -276,7 +276,7 @@ static int __init maybe_link(void) 37307@@ -271,7 +271,7 @@ static int __init maybe_link(void)
38074 if (nlink >= 2) { 37308 if (nlink >= 2) {
38075 char *old = find_link(major, minor, ino, mode, collected); 37309 char *old = find_link(major, minor, ino, mode, collected);
38076 if (old) 37310 if (old)
@@ -38079,7 +37313,7 @@ diff -urNp linux-2.6.29.6/init/initramfs.c linux-2.6.29.6/init/initramfs.c
38079 } 37313 }
38080 return 0; 37314 return 0;
38081 } 37315 }
38082@@ -285,11 +285,11 @@ static void __init clean_path(char *path 37316@@ -280,11 +280,11 @@ static void __init clean_path(char *path
38083 { 37317 {
38084 struct stat st; 37318 struct stat st;
38085 37319
@@ -38094,7 +37328,7 @@ diff -urNp linux-2.6.29.6/init/initramfs.c linux-2.6.29.6/init/initramfs.c
38094 } 37328 }
38095 } 37329 }
38096 37330
38097@@ -312,7 +312,7 @@ static int __init do_name(void) 37331@@ -305,7 +305,7 @@ static int __init do_name(void)
38098 int openflags = O_WRONLY|O_CREAT; 37332 int openflags = O_WRONLY|O_CREAT;
38099 if (ml != 1) 37333 if (ml != 1)
38100 openflags |= O_TRUNC; 37334 openflags |= O_TRUNC;
@@ -38103,7 +37337,7 @@ diff -urNp linux-2.6.29.6/init/initramfs.c linux-2.6.29.6/init/initramfs.c
38103 37337
38104 if (wfd >= 0) { 37338 if (wfd >= 0) {
38105 sys_fchown(wfd, uid, gid); 37339 sys_fchown(wfd, uid, gid);
38106@@ -323,16 +323,16 @@ static int __init do_name(void) 37340@@ -317,16 +317,16 @@ static int __init do_name(void)
38107 } 37341 }
38108 } 37342 }
38109 } else if (S_ISDIR(mode)) { 37343 } else if (S_ISDIR(mode)) {
@@ -38126,7 +37360,7 @@ diff -urNp linux-2.6.29.6/init/initramfs.c linux-2.6.29.6/init/initramfs.c
38126 do_utime(collected, mtime); 37360 do_utime(collected, mtime);
38127 } 37361 }
38128 } 37362 }
38129@@ -342,7 +342,7 @@ static int __init do_name(void) 37363@@ -336,7 +336,7 @@ static int __init do_name(void)
38130 static int __init do_copy(void) 37364 static int __init do_copy(void)
38131 { 37365 {
38132 if (count >= body_len) { 37366 if (count >= body_len) {
@@ -38135,7 +37369,7 @@ diff -urNp linux-2.6.29.6/init/initramfs.c linux-2.6.29.6/init/initramfs.c
38135 sys_close(wfd); 37369 sys_close(wfd);
38136 do_utime(vcollected, mtime); 37370 do_utime(vcollected, mtime);
38137 kfree(vcollected); 37371 kfree(vcollected);
38138@@ -350,7 +350,7 @@ static int __init do_copy(void) 37372@@ -344,7 +344,7 @@ static int __init do_copy(void)
38139 state = SkipIt; 37373 state = SkipIt;
38140 return 0; 37374 return 0;
38141 } else { 37375 } else {
@@ -38144,7 +37378,7 @@ diff -urNp linux-2.6.29.6/init/initramfs.c linux-2.6.29.6/init/initramfs.c
38144 body_len -= count; 37378 body_len -= count;
38145 eat(count); 37379 eat(count);
38146 return 1; 37380 return 1;
38147@@ -361,8 +361,8 @@ static int __init do_symlink(void) 37381@@ -355,8 +355,8 @@ static int __init do_symlink(void)
38148 { 37382 {
38149 collected[N_ALIGN(name_len) + body_len] = '\0'; 37383 collected[N_ALIGN(name_len) + body_len] = '\0';
38150 clean_path(collected, 0); 37384 clean_path(collected, 0);
@@ -38155,10 +37389,10 @@ diff -urNp linux-2.6.29.6/init/initramfs.c linux-2.6.29.6/init/initramfs.c
38155 do_utime(collected, mtime); 37389 do_utime(collected, mtime);
38156 state = SkipIt; 37390 state = SkipIt;
38157 next_state = Reset; 37391 next_state = Reset;
38158diff -urNp linux-2.6.29.6/init/Kconfig linux-2.6.29.6/init/Kconfig 37392diff -urNp linux-2.6.30.4/init/Kconfig linux-2.6.30.4/init/Kconfig
38159--- linux-2.6.29.6/init/Kconfig 2009-07-02 19:41:20.000000000 -0400 37393--- linux-2.6.30.4/init/Kconfig 2009-07-24 17:47:51.000000000 -0400
38160+++ linux-2.6.29.6/init/Kconfig 2009-07-23 17:34:32.199729497 -0400 37394+++ linux-2.6.30.4/init/Kconfig 2009-07-30 11:10:49.547309962 -0400
38161@@ -712,6 +712,7 @@ config SYSCTL_SYSCALL 37395@@ -780,6 +780,7 @@ config SYSCTL_SYSCALL
38162 config KALLSYMS 37396 config KALLSYMS
38163 bool "Load all symbols for debugging/ksymoops" if EMBEDDED 37397 bool "Load all symbols for debugging/ksymoops" if EMBEDDED
38164 default y 37398 default y
@@ -38166,7 +37400,7 @@ diff -urNp linux-2.6.29.6/init/Kconfig linux-2.6.29.6/init/Kconfig
38166 help 37400 help
38167 Say Y here to let the kernel print out symbolic crash information and 37401 Say Y here to let the kernel print out symbolic crash information and
38168 symbolic stack backtraces. This increases the size of the kernel 37402 symbolic stack backtraces. This increases the size of the kernel
38169@@ -887,7 +888,7 @@ config SLUB_DEBUG 37403@@ -963,7 +964,7 @@ config SLUB_DEBUG
38170 37404
38171 config COMPAT_BRK 37405 config COMPAT_BRK
38172 bool "Disable heap randomization" 37406 bool "Disable heap randomization"
@@ -38175,7 +37409,7 @@ diff -urNp linux-2.6.29.6/init/Kconfig linux-2.6.29.6/init/Kconfig
38175 help 37409 help
38176 Randomizing heap placement makes heap exploits harder, but it 37410 Randomizing heap placement makes heap exploits harder, but it
38177 also breaks ancient binaries (including anything libc5 based). 37411 also breaks ancient binaries (including anything libc5 based).
38178@@ -960,9 +961,9 @@ config HAVE_GENERIC_DMA_COHERENT 37412@@ -1050,9 +1051,9 @@ config HAVE_GENERIC_DMA_COHERENT
38179 37413
38180 config SLABINFO 37414 config SLABINFO
38181 bool 37415 bool
@@ -38187,10 +37421,10 @@ diff -urNp linux-2.6.29.6/init/Kconfig linux-2.6.29.6/init/Kconfig
38187 37421
38188 config RT_MUTEXES 37422 config RT_MUTEXES
38189 boolean 37423 boolean
38190diff -urNp linux-2.6.29.6/init/main.c linux-2.6.29.6/init/main.c 37424diff -urNp linux-2.6.30.4/init/main.c linux-2.6.30.4/init/main.c
38191--- linux-2.6.29.6/init/main.c 2009-07-02 19:41:20.000000000 -0400 37425--- linux-2.6.30.4/init/main.c 2009-07-24 17:47:51.000000000 -0400
38192+++ linux-2.6.29.6/init/main.c 2009-07-23 17:34:32.200835198 -0400 37426+++ linux-2.6.30.4/init/main.c 2009-07-30 11:10:49.548504780 -0400
38193@@ -96,6 +96,7 @@ static inline void mark_rodata_ro(void) 37427@@ -98,6 +98,7 @@ static inline void mark_rodata_ro(void)
38194 #ifdef CONFIG_TC 37428 #ifdef CONFIG_TC
38195 extern void tc_init(void); 37429 extern void tc_init(void);
38196 #endif 37430 #endif
@@ -38198,7 +37432,7 @@ diff -urNp linux-2.6.29.6/init/main.c linux-2.6.29.6/init/main.c
38198 37432
38199 enum system_states system_state __read_mostly; 37433 enum system_states system_state __read_mostly;
38200 EXPORT_SYMBOL(system_state); 37434 EXPORT_SYMBOL(system_state);
38201@@ -182,6 +183,40 @@ static int __init set_reset_devices(char 37435@@ -184,6 +185,40 @@ static int __init set_reset_devices(char
38202 37436
38203 __setup("reset_devices", set_reset_devices); 37437 __setup("reset_devices", set_reset_devices);
38204 37438
@@ -38239,7 +37473,7 @@ diff -urNp linux-2.6.29.6/init/main.c linux-2.6.29.6/init/main.c
38239 static char * argv_init[MAX_INIT_ARGS+2] = { "init", NULL, }; 37473 static char * argv_init[MAX_INIT_ARGS+2] = { "init", NULL, };
38240 char * envp_init[MAX_INIT_ENVS+2] = { "HOME=/", "TERM=linux", NULL, }; 37474 char * envp_init[MAX_INIT_ENVS+2] = { "HOME=/", "TERM=linux", NULL, };
38241 static const char *panic_later, *panic_param; 37475 static const char *panic_later, *panic_param;
38242@@ -375,7 +410,7 @@ static void __init setup_nr_cpu_ids(void 37476@@ -377,7 +412,7 @@ static void __init setup_nr_cpu_ids(void
38243 } 37477 }
38244 37478
38245 #ifndef CONFIG_HAVE_SETUP_PER_CPU_AREA 37479 #ifndef CONFIG_HAVE_SETUP_PER_CPU_AREA
@@ -38248,7 +37482,7 @@ diff -urNp linux-2.6.29.6/init/main.c linux-2.6.29.6/init/main.c
38248 37482
38249 EXPORT_SYMBOL(__per_cpu_offset); 37483 EXPORT_SYMBOL(__per_cpu_offset);
38250 37484
38251@@ -694,6 +729,7 @@ int do_one_initcall(initcall_t fn) 37485@@ -706,6 +741,7 @@ int do_one_initcall(initcall_t fn)
38252 { 37486 {
38253 int count = preempt_count(); 37487 int count = preempt_count();
38254 ktime_t calltime, delta, rettime; 37488 ktime_t calltime, delta, rettime;
@@ -38256,7 +37490,7 @@ diff -urNp linux-2.6.29.6/init/main.c linux-2.6.29.6/init/main.c
38256 char msgbuf[64]; 37490 char msgbuf[64];
38257 struct boot_trace_call call; 37491 struct boot_trace_call call;
38258 struct boot_trace_ret ret; 37492 struct boot_trace_ret ret;
38259@@ -724,15 +760,15 @@ int do_one_initcall(initcall_t fn) 37493@@ -736,15 +772,15 @@ int do_one_initcall(initcall_t fn)
38260 sprintf(msgbuf, "error code %d ", ret.result); 37494 sprintf(msgbuf, "error code %d ", ret.result);
38261 37495
38262 if (preempt_count() != count) { 37496 if (preempt_count() != count) {
@@ -38276,7 +37510,7 @@ diff -urNp linux-2.6.29.6/init/main.c linux-2.6.29.6/init/main.c
38276 } 37510 }
38277 37511
38278 return ret.result; 37512 return ret.result;
38279@@ -873,6 +909,8 @@ static int __init kernel_init(void * unu 37513@@ -885,6 +921,8 @@ static int __init kernel_init(void * unu
38280 prepare_namespace(); 37514 prepare_namespace();
38281 } 37515 }
38282 37516
@@ -38285,9 +37519,9 @@ diff -urNp linux-2.6.29.6/init/main.c linux-2.6.29.6/init/main.c
38285 /* 37519 /*
38286 * Ok, we have completed the initial bootup, and 37520 * Ok, we have completed the initial bootup, and
38287 * we're essentially up and running. Get rid of the 37521 * we're essentially up and running. Get rid of the
38288diff -urNp linux-2.6.29.6/init/noinitramfs.c linux-2.6.29.6/init/noinitramfs.c 37522diff -urNp linux-2.6.30.4/init/noinitramfs.c linux-2.6.30.4/init/noinitramfs.c
38289--- linux-2.6.29.6/init/noinitramfs.c 2009-07-02 19:41:20.000000000 -0400 37523--- linux-2.6.30.4/init/noinitramfs.c 2009-07-24 17:47:51.000000000 -0400
38290+++ linux-2.6.29.6/init/noinitramfs.c 2009-07-23 17:34:32.200835198 -0400 37524+++ linux-2.6.30.4/init/noinitramfs.c 2009-07-30 09:48:10.122895747 -0400
38291@@ -29,7 +29,7 @@ static int __init default_rootfs(void) 37525@@ -29,7 +29,7 @@ static int __init default_rootfs(void)
38292 { 37526 {
38293 int err; 37527 int err;
@@ -38306,9 +37540,9 @@ diff -urNp linux-2.6.29.6/init/noinitramfs.c linux-2.6.29.6/init/noinitramfs.c
38306 if (err < 0) 37540 if (err < 0)
38307 goto out; 37541 goto out;
38308 37542
38309diff -urNp linux-2.6.29.6/ipc/ipc_sysctl.c linux-2.6.29.6/ipc/ipc_sysctl.c 37543diff -urNp linux-2.6.30.4/ipc/ipc_sysctl.c linux-2.6.30.4/ipc/ipc_sysctl.c
38310--- linux-2.6.29.6/ipc/ipc_sysctl.c 2009-07-02 19:41:20.000000000 -0400 37544--- linux-2.6.30.4/ipc/ipc_sysctl.c 2009-07-24 17:47:51.000000000 -0400
38311+++ linux-2.6.29.6/ipc/ipc_sysctl.c 2009-07-23 17:34:32.200835198 -0400 37545+++ linux-2.6.30.4/ipc/ipc_sysctl.c 2009-07-30 09:48:10.122895747 -0400
38312@@ -267,7 +267,7 @@ static struct ctl_table ipc_kern_table[] 37546@@ -267,7 +267,7 @@ static struct ctl_table ipc_kern_table[]
38313 .extra1 = &zero, 37547 .extra1 = &zero,
38314 .extra2 = &one, 37548 .extra2 = &one,
@@ -38327,10 +37561,10 @@ diff -urNp linux-2.6.29.6/ipc/ipc_sysctl.c linux-2.6.29.6/ipc/ipc_sysctl.c
38327 }; 37561 };
38328 37562
38329 static int __init ipc_sysctl_init(void) 37563 static int __init ipc_sysctl_init(void)
38330diff -urNp linux-2.6.29.6/ipc/mqueue.c linux-2.6.29.6/ipc/mqueue.c 37564diff -urNp linux-2.6.30.4/ipc/mqueue.c linux-2.6.30.4/ipc/mqueue.c
38331--- linux-2.6.29.6/ipc/mqueue.c 2009-07-02 19:41:20.000000000 -0400 37565--- linux-2.6.30.4/ipc/mqueue.c 2009-07-24 17:47:51.000000000 -0400
38332+++ linux-2.6.29.6/ipc/mqueue.c 2009-07-23 18:40:28.718303595 -0400 37566+++ linux-2.6.30.4/ipc/mqueue.c 2009-07-30 11:10:49.559299006 -0400
38333@@ -90,7 +90,7 @@ struct mqueue_inode_info { 37567@@ -76,7 +76,7 @@ struct mqueue_inode_info {
38334 37568
38335 static const struct inode_operations mqueue_dir_inode_operations; 37569 static const struct inode_operations mqueue_dir_inode_operations;
38336 static const struct file_operations mqueue_file_operations; 37570 static const struct file_operations mqueue_file_operations;
@@ -38338,8 +37572,8 @@ diff -urNp linux-2.6.29.6/ipc/mqueue.c linux-2.6.29.6/ipc/mqueue.c
38338+static const struct super_operations mqueue_super_ops; 37572+static const struct super_operations mqueue_super_ops;
38339 static void remove_notification(struct mqueue_inode_info *info); 37573 static void remove_notification(struct mqueue_inode_info *info);
38340 37574
38341 static spinlock_t mq_lock; 37575 static struct kmem_cache *mqueue_inode_cachep;
38342@@ -151,6 +151,7 @@ static struct inode *mqueue_get_inode(st 37576@@ -149,6 +149,7 @@ static struct inode *mqueue_get_inode(st
38343 mq_bytes = (mq_msg_tblsz + 37577 mq_bytes = (mq_msg_tblsz +
38344 (info->attr.mq_maxmsg * info->attr.mq_msgsize)); 37578 (info->attr.mq_maxmsg * info->attr.mq_msgsize));
38345 37579
@@ -38347,7 +37581,7 @@ diff -urNp linux-2.6.29.6/ipc/mqueue.c linux-2.6.29.6/ipc/mqueue.c
38347 spin_lock(&mq_lock); 37581 spin_lock(&mq_lock);
38348 if (u->mq_bytes + mq_bytes < u->mq_bytes || 37582 if (u->mq_bytes + mq_bytes < u->mq_bytes ||
38349 u->mq_bytes + mq_bytes > 37583 u->mq_bytes + mq_bytes >
38350@@ -1189,7 +1190,7 @@ static const struct file_operations mque 37584@@ -1222,7 +1223,7 @@ static const struct file_operations mque
38351 .read = mqueue_read_file, 37585 .read = mqueue_read_file,
38352 }; 37586 };
38353 37587
@@ -38356,9 +37590,9 @@ diff -urNp linux-2.6.29.6/ipc/mqueue.c linux-2.6.29.6/ipc/mqueue.c
38356 .alloc_inode = mqueue_alloc_inode, 37590 .alloc_inode = mqueue_alloc_inode,
38357 .destroy_inode = mqueue_destroy_inode, 37591 .destroy_inode = mqueue_destroy_inode,
38358 .statfs = simple_statfs, 37592 .statfs = simple_statfs,
38359diff -urNp linux-2.6.29.6/ipc/msg.c linux-2.6.29.6/ipc/msg.c 37593diff -urNp linux-2.6.30.4/ipc/msg.c linux-2.6.30.4/ipc/msg.c
38360--- linux-2.6.29.6/ipc/msg.c 2009-07-02 19:41:20.000000000 -0400 37594--- linux-2.6.30.4/ipc/msg.c 2009-07-24 17:47:51.000000000 -0400
38361+++ linux-2.6.29.6/ipc/msg.c 2009-07-23 17:34:32.201947567 -0400 37595+++ linux-2.6.30.4/ipc/msg.c 2009-07-30 11:10:49.568315799 -0400
38362@@ -314,6 +314,7 @@ SYSCALL_DEFINE2(msgget, key_t, key, int, 37596@@ -314,6 +314,7 @@ SYSCALL_DEFINE2(msgget, key_t, key, int,
38363 struct ipc_namespace *ns; 37597 struct ipc_namespace *ns;
38364 struct ipc_ops msg_ops; 37598 struct ipc_ops msg_ops;
@@ -38388,9 +37622,9 @@ diff -urNp linux-2.6.29.6/ipc/msg.c linux-2.6.29.6/ipc/msg.c
38388 freeque(ns, ipcp); 37622 freeque(ns, ipcp);
38389 goto out_up; 37623 goto out_up;
38390 case IPC_SET: 37624 case IPC_SET:
38391diff -urNp linux-2.6.29.6/ipc/sem.c linux-2.6.29.6/ipc/sem.c 37625diff -urNp linux-2.6.30.4/ipc/sem.c linux-2.6.30.4/ipc/sem.c
38392--- linux-2.6.29.6/ipc/sem.c 2009-07-02 19:41:20.000000000 -0400 37626--- linux-2.6.30.4/ipc/sem.c 2009-07-24 17:47:51.000000000 -0400
38393+++ linux-2.6.29.6/ipc/sem.c 2009-07-23 17:34:32.201947567 -0400 37627+++ linux-2.6.30.4/ipc/sem.c 2009-07-30 11:10:49.579322291 -0400
38394@@ -313,6 +313,7 @@ SYSCALL_DEFINE3(semget, key_t, key, int, 37628@@ -313,6 +313,7 @@ SYSCALL_DEFINE3(semget, key_t, key, int,
38395 struct ipc_namespace *ns; 37629 struct ipc_namespace *ns;
38396 struct ipc_ops sem_ops; 37630 struct ipc_ops sem_ops;
@@ -38420,10 +37654,10 @@ diff -urNp linux-2.6.29.6/ipc/sem.c linux-2.6.29.6/ipc/sem.c
38420 freeary(ns, ipcp); 37654 freeary(ns, ipcp);
38421 goto out_up; 37655 goto out_up;
38422 case IPC_SET: 37656 case IPC_SET:
38423diff -urNp linux-2.6.29.6/ipc/shm.c linux-2.6.29.6/ipc/shm.c 37657diff -urNp linux-2.6.30.4/ipc/shm.c linux-2.6.30.4/ipc/shm.c
38424--- linux-2.6.29.6/ipc/shm.c 2009-07-02 19:41:20.000000000 -0400 37658--- linux-2.6.30.4/ipc/shm.c 2009-07-24 17:47:51.000000000 -0400
38425+++ linux-2.6.29.6/ipc/shm.c 2009-07-23 19:29:38.792396623 -0400 37659+++ linux-2.6.30.4/ipc/shm.c 2009-07-30 11:10:49.582310282 -0400
38426@@ -54,7 +54,7 @@ struct shm_file_data { 37660@@ -55,7 +55,7 @@ struct shm_file_data {
38427 #define shm_file_data(file) (*((struct shm_file_data **)&(file)->private_data)) 37661 #define shm_file_data(file) (*((struct shm_file_data **)&(file)->private_data))
38428 37662
38429 static const struct file_operations shm_file_operations; 37663 static const struct file_operations shm_file_operations;
@@ -38432,7 +37666,7 @@ diff -urNp linux-2.6.29.6/ipc/shm.c linux-2.6.29.6/ipc/shm.c
38432 37666
38433 #define shm_ids(ns) ((ns)->ids[IPC_SHM_IDS]) 37667 #define shm_ids(ns) ((ns)->ids[IPC_SHM_IDS])
38434 37668
38435@@ -69,6 +69,14 @@ static void shm_destroy (struct ipc_name 37669@@ -70,6 +70,14 @@ static void shm_destroy (struct ipc_name
38436 static int sysvipc_shm_proc_show(struct seq_file *s, void *it); 37670 static int sysvipc_shm_proc_show(struct seq_file *s, void *it);
38437 #endif 37671 #endif
38438 37672
@@ -38447,7 +37681,7 @@ diff -urNp linux-2.6.29.6/ipc/shm.c linux-2.6.29.6/ipc/shm.c
38447 void shm_init_ns(struct ipc_namespace *ns) 37681 void shm_init_ns(struct ipc_namespace *ns)
38448 { 37682 {
38449 ns->shm_ctlmax = SHMMAX; 37683 ns->shm_ctlmax = SHMMAX;
38450@@ -87,6 +95,8 @@ static void do_shm_rmid(struct ipc_names 37684@@ -88,6 +96,8 @@ static void do_shm_rmid(struct ipc_names
38451 struct shmid_kernel *shp; 37685 struct shmid_kernel *shp;
38452 shp = container_of(ipcp, struct shmid_kernel, shm_perm); 37686 shp = container_of(ipcp, struct shmid_kernel, shm_perm);
38453 37687
@@ -38456,7 +37690,7 @@ diff -urNp linux-2.6.29.6/ipc/shm.c linux-2.6.29.6/ipc/shm.c
38456 if (shp->shm_nattch){ 37690 if (shp->shm_nattch){
38457 shp->shm_perm.mode |= SHM_DEST; 37691 shp->shm_perm.mode |= SHM_DEST;
38458 /* Do not find it any more */ 37692 /* Do not find it any more */
38459@@ -311,7 +321,7 @@ static const struct file_operations shm_ 37693@@ -312,7 +322,7 @@ static const struct file_operations shm_
38460 .get_unmapped_area = shm_get_unmapped_area, 37694 .get_unmapped_area = shm_get_unmapped_area,
38461 }; 37695 };
38462 37696
@@ -38465,7 +37699,7 @@ diff -urNp linux-2.6.29.6/ipc/shm.c linux-2.6.29.6/ipc/shm.c
38465 .open = shm_open, /* callback for a new vm-area open */ 37699 .open = shm_open, /* callback for a new vm-area open */
38466 .close = shm_close, /* callback for when the vm-area is released */ 37700 .close = shm_close, /* callback for when the vm-area is released */
38467 .fault = shm_fault, 37701 .fault = shm_fault,
38468@@ -394,6 +404,14 @@ static int newseg(struct ipc_namespace * 37702@@ -396,6 +406,14 @@ static int newseg(struct ipc_namespace *
38469 shp->shm_lprid = 0; 37703 shp->shm_lprid = 0;
38470 shp->shm_atim = shp->shm_dtim = 0; 37704 shp->shm_atim = shp->shm_dtim = 0;
38471 shp->shm_ctim = get_seconds(); 37705 shp->shm_ctim = get_seconds();
@@ -38480,7 +37714,7 @@ diff -urNp linux-2.6.29.6/ipc/shm.c linux-2.6.29.6/ipc/shm.c
38480 shp->shm_segsz = size; 37714 shp->shm_segsz = size;
38481 shp->shm_nattch = 0; 37715 shp->shm_nattch = 0;
38482 shp->shm_file = file; 37716 shp->shm_file = file;
38483@@ -447,6 +465,7 @@ SYSCALL_DEFINE3(shmget, key_t, key, size 37717@@ -449,6 +467,7 @@ SYSCALL_DEFINE3(shmget, key_t, key, size
38484 struct ipc_namespace *ns; 37718 struct ipc_namespace *ns;
38485 struct ipc_ops shm_ops; 37719 struct ipc_ops shm_ops;
38486 struct ipc_params shm_params; 37720 struct ipc_params shm_params;
@@ -38488,7 +37722,7 @@ diff -urNp linux-2.6.29.6/ipc/shm.c linux-2.6.29.6/ipc/shm.c
38488 37722
38489 ns = current->nsproxy->ipc_ns; 37723 ns = current->nsproxy->ipc_ns;
38490 37724
38491@@ -458,7 +477,11 @@ SYSCALL_DEFINE3(shmget, key_t, key, size 37725@@ -460,7 +479,11 @@ SYSCALL_DEFINE3(shmget, key_t, key, size
38492 shm_params.flg = shmflg; 37726 shm_params.flg = shmflg;
38493 shm_params.u.size = size; 37727 shm_params.u.size = size;
38494 37728
@@ -38501,7 +37735,7 @@ diff -urNp linux-2.6.29.6/ipc/shm.c linux-2.6.29.6/ipc/shm.c
38501 } 37735 }
38502 37736
38503 static inline unsigned long copy_shmid_to_user(void __user *buf, struct shmid64_ds *in, int version) 37737 static inline unsigned long copy_shmid_to_user(void __user *buf, struct shmid64_ds *in, int version)
38504@@ -873,9 +896,21 @@ long do_shmat(int shmid, char __user *sh 37738@@ -877,9 +900,21 @@ long do_shmat(int shmid, char __user *sh
38505 if (err) 37739 if (err)
38506 goto out_unlock; 37740 goto out_unlock;
38507 37741
@@ -38523,10 +37757,10 @@ diff -urNp linux-2.6.29.6/ipc/shm.c linux-2.6.29.6/ipc/shm.c
38523 size = i_size_read(path.dentry->d_inode); 37757 size = i_size_read(path.dentry->d_inode);
38524 shm_unlock(shp); 37758 shm_unlock(shp);
38525 37759
38526diff -urNp linux-2.6.29.6/ipc/util.c linux-2.6.29.6/ipc/util.c 37760diff -urNp linux-2.6.30.4/ipc/util.c linux-2.6.30.4/ipc/util.c
38527--- linux-2.6.29.6/ipc/util.c 2009-07-02 19:41:20.000000000 -0400 37761--- linux-2.6.30.4/ipc/util.c 2009-07-24 17:47:51.000000000 -0400
38528+++ linux-2.6.29.6/ipc/util.c 2009-07-23 18:40:28.718303595 -0400 37762+++ linux-2.6.30.4/ipc/util.c 2009-07-30 09:48:10.123853712 -0400
38529@@ -951,7 +951,7 @@ static int sysvipc_proc_show(struct seq_ 37763@@ -942,7 +942,7 @@ static int sysvipc_proc_show(struct seq_
38530 return iface->show(s, it); 37764 return iface->show(s, it);
38531 } 37765 }
38532 37766
@@ -38535,9 +37769,9 @@ diff -urNp linux-2.6.29.6/ipc/util.c linux-2.6.29.6/ipc/util.c
38535 .start = sysvipc_proc_start, 37769 .start = sysvipc_proc_start,
38536 .stop = sysvipc_proc_stop, 37770 .stop = sysvipc_proc_stop,
38537 .next = sysvipc_proc_next, 37771 .next = sysvipc_proc_next,
38538diff -urNp linux-2.6.29.6/kernel/acct.c linux-2.6.29.6/kernel/acct.c 37772diff -urNp linux-2.6.30.4/kernel/acct.c linux-2.6.30.4/kernel/acct.c
38539--- linux-2.6.29.6/kernel/acct.c 2009-07-02 19:41:20.000000000 -0400 37773--- linux-2.6.30.4/kernel/acct.c 2009-07-24 17:47:51.000000000 -0400
38540+++ linux-2.6.29.6/kernel/acct.c 2009-07-23 17:34:32.202812463 -0400 37774+++ linux-2.6.30.4/kernel/acct.c 2009-07-30 09:48:10.124859675 -0400
38541@@ -574,7 +574,7 @@ static void do_acct_process(struct bsd_a 37775@@ -574,7 +574,7 @@ static void do_acct_process(struct bsd_a
38542 */ 37776 */
38543 flim = current->signal->rlim[RLIMIT_FSIZE].rlim_cur; 37777 flim = current->signal->rlim[RLIMIT_FSIZE].rlim_cur;
@@ -38547,9 +37781,9 @@ diff -urNp linux-2.6.29.6/kernel/acct.c linux-2.6.29.6/kernel/acct.c
38547 sizeof(acct_t), &file->f_pos); 37781 sizeof(acct_t), &file->f_pos);
38548 current->signal->rlim[RLIMIT_FSIZE].rlim_cur = flim; 37782 current->signal->rlim[RLIMIT_FSIZE].rlim_cur = flim;
38549 set_fs(fs); 37783 set_fs(fs);
38550diff -urNp linux-2.6.29.6/kernel/capability.c linux-2.6.29.6/kernel/capability.c 37784diff -urNp linux-2.6.30.4/kernel/capability.c linux-2.6.30.4/kernel/capability.c
38551--- linux-2.6.29.6/kernel/capability.c 2009-07-02 19:41:20.000000000 -0400 37785--- linux-2.6.30.4/kernel/capability.c 2009-07-24 17:47:51.000000000 -0400
38552+++ linux-2.6.29.6/kernel/capability.c 2009-07-23 17:34:32.203740622 -0400 37786+++ linux-2.6.30.4/kernel/capability.c 2009-07-30 11:10:49.599076288 -0400
38553@@ -306,10 +306,21 @@ int capable(int cap) 37787@@ -306,10 +306,21 @@ int capable(int cap)
38554 BUG(); 37788 BUG();
38555 } 37789 }
@@ -38573,10 +37807,10 @@ diff -urNp linux-2.6.29.6/kernel/capability.c linux-2.6.29.6/kernel/capability.c
38573+ 37807+
38574 EXPORT_SYMBOL(capable); 37808 EXPORT_SYMBOL(capable);
38575+EXPORT_SYMBOL(capable_nolog); 37809+EXPORT_SYMBOL(capable_nolog);
38576diff -urNp linux-2.6.29.6/kernel/cgroup.c linux-2.6.29.6/kernel/cgroup.c 37810diff -urNp linux-2.6.30.4/kernel/cgroup.c linux-2.6.30.4/kernel/cgroup.c
38577--- linux-2.6.29.6/kernel/cgroup.c 2009-07-02 19:41:20.000000000 -0400 37811--- linux-2.6.30.4/kernel/cgroup.c 2009-07-24 17:47:51.000000000 -0400
38578+++ linux-2.6.29.6/kernel/cgroup.c 2009-07-23 18:40:28.719355936 -0400 37812+++ linux-2.6.30.4/kernel/cgroup.c 2009-07-30 09:48:10.125699437 -0400
38579@@ -560,8 +560,8 @@ void cgroup_unlock(void) 37813@@ -594,8 +594,8 @@ void cgroup_unlock(void)
38580 static int cgroup_mkdir(struct inode *dir, struct dentry *dentry, int mode); 37814 static int cgroup_mkdir(struct inode *dir, struct dentry *dentry, int mode);
38581 static int cgroup_rmdir(struct inode *unused_dir, struct dentry *dentry); 37815 static int cgroup_rmdir(struct inode *unused_dir, struct dentry *dentry);
38582 static int cgroup_populate_dir(struct cgroup *cgrp); 37816 static int cgroup_populate_dir(struct cgroup *cgrp);
@@ -38587,7 +37821,7 @@ diff -urNp linux-2.6.29.6/kernel/cgroup.c linux-2.6.29.6/kernel/cgroup.c
38587 37821
38588 static struct backing_dev_info cgroup_backing_dev_info = { 37822 static struct backing_dev_info cgroup_backing_dev_info = {
38589 .capabilities = BDI_CAP_NO_ACCT_AND_WRITEBACK, 37823 .capabilities = BDI_CAP_NO_ACCT_AND_WRITEBACK,
38590@@ -872,7 +872,7 @@ static int cgroup_remount(struct super_b 37824@@ -930,7 +930,7 @@ static int cgroup_remount(struct super_b
38591 return ret; 37825 return ret;
38592 } 37826 }
38593 37827
@@ -38596,7 +37830,7 @@ diff -urNp linux-2.6.29.6/kernel/cgroup.c linux-2.6.29.6/kernel/cgroup.c
38596 .statfs = simple_statfs, 37830 .statfs = simple_statfs,
38597 .drop_inode = generic_delete_inode, 37831 .drop_inode = generic_delete_inode,
38598 .show_options = cgroup_show_options, 37832 .show_options = cgroup_show_options,
38599@@ -1550,7 +1550,7 @@ static int cgroup_seqfile_release(struct 37833@@ -1612,7 +1612,7 @@ static int cgroup_seqfile_release(struct
38600 return single_release(inode, file); 37834 return single_release(inode, file);
38601 } 37835 }
38602 37836
@@ -38605,7 +37839,7 @@ diff -urNp linux-2.6.29.6/kernel/cgroup.c linux-2.6.29.6/kernel/cgroup.c
38605 .read = seq_read, 37839 .read = seq_read,
38606 .write = cgroup_file_write, 37840 .write = cgroup_file_write,
38607 .llseek = seq_lseek, 37841 .llseek = seq_lseek,
38608@@ -1609,7 +1609,7 @@ static int cgroup_rename(struct inode *o 37842@@ -1671,7 +1671,7 @@ static int cgroup_rename(struct inode *o
38609 return simple_rename(old_dir, old_dentry, new_dir, new_dentry); 37843 return simple_rename(old_dir, old_dentry, new_dir, new_dentry);
38610 } 37844 }
38611 37845
@@ -38614,7 +37848,7 @@ diff -urNp linux-2.6.29.6/kernel/cgroup.c linux-2.6.29.6/kernel/cgroup.c
38614 .read = cgroup_file_read, 37848 .read = cgroup_file_read,
38615 .write = cgroup_file_write, 37849 .write = cgroup_file_write,
38616 .llseek = generic_file_llseek, 37850 .llseek = generic_file_llseek,
38617@@ -1617,7 +1617,7 @@ static struct file_operations cgroup_fil 37851@@ -1679,7 +1679,7 @@ static struct file_operations cgroup_fil
38618 .release = cgroup_file_release, 37852 .release = cgroup_file_release,
38619 }; 37853 };
38620 37854
@@ -38623,7 +37857,7 @@ diff -urNp linux-2.6.29.6/kernel/cgroup.c linux-2.6.29.6/kernel/cgroup.c
38623 .lookup = simple_lookup, 37857 .lookup = simple_lookup,
38624 .mkdir = cgroup_mkdir, 37858 .mkdir = cgroup_mkdir,
38625 .rmdir = cgroup_rmdir, 37859 .rmdir = cgroup_rmdir,
38626@@ -2171,7 +2171,7 @@ static int cgroup_tasks_show(struct seq_ 37860@@ -2262,7 +2262,7 @@ static int cgroup_tasks_show(struct seq_
38627 return seq_printf(s, "%d\n", *(int *)v); 37861 return seq_printf(s, "%d\n", *(int *)v);
38628 } 37862 }
38629 37863
@@ -38632,7 +37866,7 @@ diff -urNp linux-2.6.29.6/kernel/cgroup.c linux-2.6.29.6/kernel/cgroup.c
38632 .start = cgroup_tasks_start, 37866 .start = cgroup_tasks_start,
38633 .stop = cgroup_tasks_stop, 37867 .stop = cgroup_tasks_stop,
38634 .next = cgroup_tasks_next, 37868 .next = cgroup_tasks_next,
38635@@ -2201,7 +2201,7 @@ static int cgroup_tasks_release(struct i 37869@@ -2292,7 +2292,7 @@ static int cgroup_tasks_release(struct i
38636 return seq_release(inode, file); 37870 return seq_release(inode, file);
38637 } 37871 }
38638 37872
@@ -38641,7 +37875,7 @@ diff -urNp linux-2.6.29.6/kernel/cgroup.c linux-2.6.29.6/kernel/cgroup.c
38641 .read = seq_read, 37875 .read = seq_read,
38642 .llseek = seq_lseek, 37876 .llseek = seq_lseek,
38643 .write = cgroup_file_write, 37877 .write = cgroup_file_write,
38644@@ -2796,7 +2796,7 @@ static int cgroup_open(struct inode *ino 37878@@ -2930,7 +2930,7 @@ static int cgroup_open(struct inode *ino
38645 return single_open(file, proc_cgroup_show, pid); 37879 return single_open(file, proc_cgroup_show, pid);
38646 } 37880 }
38647 37881
@@ -38650,7 +37884,7 @@ diff -urNp linux-2.6.29.6/kernel/cgroup.c linux-2.6.29.6/kernel/cgroup.c
38650 .open = cgroup_open, 37884 .open = cgroup_open,
38651 .read = seq_read, 37885 .read = seq_read,
38652 .llseek = seq_lseek, 37886 .llseek = seq_lseek,
38653@@ -2825,7 +2825,7 @@ static int cgroupstats_open(struct inode 37887@@ -2959,7 +2959,7 @@ static int cgroupstats_open(struct inode
38654 return single_open(file, proc_cgroupstats_show, NULL); 37888 return single_open(file, proc_cgroupstats_show, NULL);
38655 } 37889 }
38656 37890
@@ -38659,9 +37893,9 @@ diff -urNp linux-2.6.29.6/kernel/cgroup.c linux-2.6.29.6/kernel/cgroup.c
38659 .open = cgroupstats_open, 37893 .open = cgroupstats_open,
38660 .read = seq_read, 37894 .read = seq_read,
38661 .llseek = seq_lseek, 37895 .llseek = seq_lseek,
38662diff -urNp linux-2.6.29.6/kernel/configs.c linux-2.6.29.6/kernel/configs.c 37896diff -urNp linux-2.6.30.4/kernel/configs.c linux-2.6.30.4/kernel/configs.c
38663--- linux-2.6.29.6/kernel/configs.c 2009-07-02 19:41:20.000000000 -0400 37897--- linux-2.6.30.4/kernel/configs.c 2009-07-24 17:47:51.000000000 -0400
38664+++ linux-2.6.29.6/kernel/configs.c 2009-07-23 17:34:32.203740622 -0400 37898+++ linux-2.6.30.4/kernel/configs.c 2009-07-30 11:10:49.609950770 -0400
38665@@ -73,8 +73,19 @@ static int __init ikconfig_init(void) 37899@@ -73,8 +73,19 @@ static int __init ikconfig_init(void)
38666 struct proc_dir_entry *entry; 37900 struct proc_dir_entry *entry;
38667 37901
@@ -38682,9 +37916,9 @@ diff -urNp linux-2.6.29.6/kernel/configs.c linux-2.6.29.6/kernel/configs.c
38682 if (!entry) 37916 if (!entry)
38683 return -ENOMEM; 37917 return -ENOMEM;
38684 37918
38685diff -urNp linux-2.6.29.6/kernel/cpu.c linux-2.6.29.6/kernel/cpu.c 37919diff -urNp linux-2.6.30.4/kernel/cpu.c linux-2.6.30.4/kernel/cpu.c
38686--- linux-2.6.29.6/kernel/cpu.c 2009-07-02 19:41:20.000000000 -0400 37920--- linux-2.6.30.4/kernel/cpu.c 2009-07-24 17:47:51.000000000 -0400
38687+++ linux-2.6.29.6/kernel/cpu.c 2009-07-23 17:34:32.203740622 -0400 37921+++ linux-2.6.30.4/kernel/cpu.c 2009-07-30 09:48:10.125699437 -0400
38688@@ -19,7 +19,7 @@ 37922@@ -19,7 +19,7 @@
38689 /* Serializes the updates to cpu_online_mask, cpu_present_mask */ 37923 /* Serializes the updates to cpu_online_mask, cpu_present_mask */
38690 static DEFINE_MUTEX(cpu_add_remove_lock); 37924 static DEFINE_MUTEX(cpu_add_remove_lock);
@@ -38694,9 +37928,9 @@ diff -urNp linux-2.6.29.6/kernel/cpu.c linux-2.6.29.6/kernel/cpu.c
38694 37928
38695 /* If set, cpu_up and cpu_down will return -EBUSY and do nothing. 37929 /* If set, cpu_up and cpu_down will return -EBUSY and do nothing.
38696 * Should always be manipulated under cpu_add_remove_lock 37930 * Should always be manipulated under cpu_add_remove_lock
38697diff -urNp linux-2.6.29.6/kernel/cred.c linux-2.6.29.6/kernel/cred.c 37931diff -urNp linux-2.6.30.4/kernel/cred.c linux-2.6.30.4/kernel/cred.c
38698--- linux-2.6.29.6/kernel/cred.c 2009-07-02 19:41:20.000000000 -0400 37932--- linux-2.6.30.4/kernel/cred.c 2009-07-24 17:47:51.000000000 -0400
38699+++ linux-2.6.29.6/kernel/cred.c 2009-07-23 17:34:32.203740622 -0400 37933+++ linux-2.6.30.4/kernel/cred.c 2009-07-30 11:10:49.610408907 -0400
38700@@ -366,6 +366,8 @@ int commit_creds(struct cred *new) 37934@@ -366,6 +366,8 @@ int commit_creds(struct cred *new)
38701 37935
38702 get_cred(new); /* we will require a ref for the subj creds too */ 37936 get_cred(new); /* we will require a ref for the subj creds too */
@@ -38706,10 +37940,10 @@ diff -urNp linux-2.6.29.6/kernel/cred.c linux-2.6.29.6/kernel/cred.c
38706 /* dumpability changes */ 37940 /* dumpability changes */
38707 if (old->euid != new->euid || 37941 if (old->euid != new->euid ||
38708 old->egid != new->egid || 37942 old->egid != new->egid ||
38709diff -urNp linux-2.6.29.6/kernel/exit.c linux-2.6.29.6/kernel/exit.c 37943diff -urNp linux-2.6.30.4/kernel/exit.c linux-2.6.30.4/kernel/exit.c
38710--- linux-2.6.29.6/kernel/exit.c 2009-07-02 19:41:20.000000000 -0400 37944--- linux-2.6.30.4/kernel/exit.c 2009-07-24 17:47:51.000000000 -0400
38711+++ linux-2.6.29.6/kernel/exit.c 2009-07-23 17:34:32.204997623 -0400 37945+++ linux-2.6.30.4/kernel/exit.c 2009-07-30 11:10:49.617311944 -0400
38712@@ -59,6 +59,10 @@ DEFINE_TRACE(sched_process_free); 37946@@ -60,6 +60,10 @@ DEFINE_TRACE(sched_process_free);
38713 DEFINE_TRACE(sched_process_exit); 37947 DEFINE_TRACE(sched_process_exit);
38714 DEFINE_TRACE(sched_process_wait); 37948 DEFINE_TRACE(sched_process_wait);
38715 37949
@@ -38719,8 +37953,8 @@ diff -urNp linux-2.6.29.6/kernel/exit.c linux-2.6.29.6/kernel/exit.c
38719+ 37953+
38720 static void exit_mm(struct task_struct * tsk); 37954 static void exit_mm(struct task_struct * tsk);
38721 37955
38722 static inline int task_detached(struct task_struct *p) 37956 static void __unhash_process(struct task_struct *p)
38723@@ -172,6 +176,8 @@ void release_task(struct task_struct * p 37957@@ -168,6 +172,8 @@ void release_task(struct task_struct * p
38724 struct task_struct *leader; 37958 struct task_struct *leader;
38725 int zap_leader; 37959 int zap_leader;
38726 repeat: 37960 repeat:
@@ -38729,7 +37963,7 @@ diff -urNp linux-2.6.29.6/kernel/exit.c linux-2.6.29.6/kernel/exit.c
38729 tracehook_prepare_release_task(p); 37963 tracehook_prepare_release_task(p);
38730 /* don't need to get the RCU readlock here - the process is dead and 37964 /* don't need to get the RCU readlock here - the process is dead and
38731 * can't be modifying its own credentials */ 37965 * can't be modifying its own credentials */
38732@@ -338,11 +344,22 @@ static void reparent_to_kthreadd(void) 37966@@ -334,11 +340,22 @@ static void reparent_to_kthreadd(void)
38733 { 37967 {
38734 write_lock_irq(&tasklist_lock); 37968 write_lock_irq(&tasklist_lock);
38735 37969
@@ -38752,7 +37986,7 @@ diff -urNp linux-2.6.29.6/kernel/exit.c linux-2.6.29.6/kernel/exit.c
38752 /* Set the exit signal to SIGCHLD so we signal init on exit */ 37986 /* Set the exit signal to SIGCHLD so we signal init on exit */
38753 current->exit_signal = SIGCHLD; 37987 current->exit_signal = SIGCHLD;
38754 37988
38755@@ -435,6 +452,17 @@ void daemonize(const char *name, ...) 37989@@ -427,6 +444,17 @@ void daemonize(const char *name, ...)
38756 vsnprintf(current->comm, sizeof(current->comm), name, args); 37990 vsnprintf(current->comm, sizeof(current->comm), name, args);
38757 va_end(args); 37991 va_end(args);
38758 37992
@@ -38770,7 +38004,7 @@ diff -urNp linux-2.6.29.6/kernel/exit.c linux-2.6.29.6/kernel/exit.c
38770 /* 38004 /*
38771 * If we were started as result of loading a module, close all of the 38005 * If we were started as result of loading a module, close all of the
38772 * user space pages. We don't need them, and if we didn't close them 38006 * user space pages. We don't need them, and if we didn't close them
38773@@ -1034,6 +1062,9 @@ NORET_TYPE void do_exit(long code) 38007@@ -954,6 +982,9 @@ NORET_TYPE void do_exit(long code)
38774 tsk->exit_code = code; 38008 tsk->exit_code = code;
38775 taskstats_exit(tsk, group_dead); 38009 taskstats_exit(tsk, group_dead);
38776 38010
@@ -38780,7 +38014,7 @@ diff -urNp linux-2.6.29.6/kernel/exit.c linux-2.6.29.6/kernel/exit.c
38780 exit_mm(tsk); 38014 exit_mm(tsk);
38781 38015
38782 if (group_dead) 38016 if (group_dead)
38783@@ -1238,7 +1269,7 @@ static int wait_task_zombie(struct task_ 38017@@ -1158,7 +1189,7 @@ static int wait_task_zombie(struct task_
38784 38018
38785 if (unlikely(options & WNOWAIT)) { 38019 if (unlikely(options & WNOWAIT)) {
38786 int exit_code = p->exit_code; 38020 int exit_code = p->exit_code;
@@ -38789,11 +38023,11 @@ diff -urNp linux-2.6.29.6/kernel/exit.c linux-2.6.29.6/kernel/exit.c
38789 38023
38790 get_task_struct(p); 38024 get_task_struct(p);
38791 read_unlock(&tasklist_lock); 38025 read_unlock(&tasklist_lock);
38792diff -urNp linux-2.6.29.6/kernel/fork.c linux-2.6.29.6/kernel/fork.c 38026diff -urNp linux-2.6.30.4/kernel/fork.c linux-2.6.30.4/kernel/fork.c
38793--- linux-2.6.29.6/kernel/fork.c 2009-07-02 19:41:20.000000000 -0400 38027--- linux-2.6.30.4/kernel/fork.c 2009-07-24 17:47:51.000000000 -0400
38794+++ linux-2.6.29.6/kernel/fork.c 2009-07-23 17:34:32.205707403 -0400 38028+++ linux-2.6.30.4/kernel/fork.c 2009-07-30 11:10:49.618406568 -0400
38795@@ -239,7 +239,7 @@ static struct task_struct *dup_task_stru 38029@@ -245,7 +245,7 @@ static struct task_struct *dup_task_stru
38796 setup_thread_stack(tsk, orig); 38030 *stackend = STACK_END_MAGIC; /* for overflow detection */
38797 38031
38798 #ifdef CONFIG_CC_STACKPROTECTOR 38032 #ifdef CONFIG_CC_STACKPROTECTOR
38799- tsk->stack_canary = get_random_int(); 38033- tsk->stack_canary = get_random_int();
@@ -38801,7 +38035,7 @@ diff -urNp linux-2.6.29.6/kernel/fork.c linux-2.6.29.6/kernel/fork.c
38801 #endif 38035 #endif
38802 38036
38803 /* One for us, one for whoever does the "release_task()" (usually parent) */ 38037 /* One for us, one for whoever does the "release_task()" (usually parent) */
38804@@ -276,8 +276,8 @@ static int dup_mmap(struct mm_struct *mm 38038@@ -282,8 +282,8 @@ static int dup_mmap(struct mm_struct *mm
38805 mm->locked_vm = 0; 38039 mm->locked_vm = 0;
38806 mm->mmap = NULL; 38040 mm->mmap = NULL;
38807 mm->mmap_cache = NULL; 38041 mm->mmap_cache = NULL;
@@ -38810,9 +38044,9 @@ diff -urNp linux-2.6.29.6/kernel/fork.c linux-2.6.29.6/kernel/fork.c
38810+ mm->free_area_cache = oldmm->free_area_cache; 38044+ mm->free_area_cache = oldmm->free_area_cache;
38811+ mm->cached_hole_size = oldmm->cached_hole_size; 38045+ mm->cached_hole_size = oldmm->cached_hole_size;
38812 mm->map_count = 0; 38046 mm->map_count = 0;
38813 cpus_clear(mm->cpu_vm_mask); 38047 cpumask_clear(mm_cpumask(mm));
38814 mm->mm_rb = RB_ROOT; 38048 mm->mm_rb = RB_ROOT;
38815@@ -314,6 +314,7 @@ static int dup_mmap(struct mm_struct *mm 38049@@ -320,6 +320,7 @@ static int dup_mmap(struct mm_struct *mm
38816 tmp->vm_flags &= ~VM_LOCKED; 38050 tmp->vm_flags &= ~VM_LOCKED;
38817 tmp->vm_mm = mm; 38051 tmp->vm_mm = mm;
38818 tmp->vm_next = NULL; 38052 tmp->vm_next = NULL;
@@ -38820,7 +38054,7 @@ diff -urNp linux-2.6.29.6/kernel/fork.c linux-2.6.29.6/kernel/fork.c
38820 anon_vma_link(tmp); 38054 anon_vma_link(tmp);
38821 file = tmp->vm_file; 38055 file = tmp->vm_file;
38822 if (file) { 38056 if (file) {
38823@@ -361,6 +362,31 @@ static int dup_mmap(struct mm_struct *mm 38057@@ -367,6 +368,31 @@ static int dup_mmap(struct mm_struct *mm
38824 if (retval) 38058 if (retval)
38825 goto out; 38059 goto out;
38826 } 38060 }
@@ -38852,7 +38086,7 @@ diff -urNp linux-2.6.29.6/kernel/fork.c linux-2.6.29.6/kernel/fork.c
38852 /* a new mm has just been created */ 38086 /* a new mm has just been created */
38853 arch_dup_mmap(oldmm, mm); 38087 arch_dup_mmap(oldmm, mm);
38854 retval = 0; 38088 retval = 0;
38855@@ -541,9 +567,11 @@ void mm_release(struct task_struct *tsk, 38089@@ -547,9 +573,11 @@ void mm_release(struct task_struct *tsk,
38856 #ifdef CONFIG_FUTEX 38090 #ifdef CONFIG_FUTEX
38857 if (unlikely(tsk->robust_list)) 38091 if (unlikely(tsk->robust_list))
38858 exit_robust_list(tsk); 38092 exit_robust_list(tsk);
@@ -38864,7 +38098,7 @@ diff -urNp linux-2.6.29.6/kernel/fork.c linux-2.6.29.6/kernel/fork.c
38864 #endif 38098 #endif
38865 #endif 38099 #endif
38866 38100
38867@@ -565,7 +593,7 @@ void mm_release(struct task_struct *tsk, 38101@@ -571,7 +599,7 @@ void mm_release(struct task_struct *tsk,
38868 if (tsk->clear_child_tid 38102 if (tsk->clear_child_tid
38869 && !(tsk->flags & PF_SIGNALED) 38103 && !(tsk->flags & PF_SIGNALED)
38870 && atomic_read(&mm->mm_users) > 1) { 38104 && atomic_read(&mm->mm_users) > 1) {
@@ -38873,7 +38107,7 @@ diff -urNp linux-2.6.29.6/kernel/fork.c linux-2.6.29.6/kernel/fork.c
38873 tsk->clear_child_tid = NULL; 38107 tsk->clear_child_tid = NULL;
38874 38108
38875 /* 38109 /*
38876@@ -573,7 +601,7 @@ void mm_release(struct task_struct *tsk, 38110@@ -579,7 +607,7 @@ void mm_release(struct task_struct *tsk,
38877 * not set up a proper pointer then tough luck. 38111 * not set up a proper pointer then tough luck.
38878 */ 38112 */
38879 put_user(0, tidptr); 38113 put_user(0, tidptr);
@@ -38882,7 +38116,7 @@ diff -urNp linux-2.6.29.6/kernel/fork.c linux-2.6.29.6/kernel/fork.c
38882 } 38116 }
38883 } 38117 }
38884 38118
38885@@ -686,7 +714,7 @@ static int copy_fs(unsigned long clone_f 38119@@ -695,7 +723,7 @@ static int copy_fs(unsigned long clone_f
38886 write_unlock(&fs->lock); 38120 write_unlock(&fs->lock);
38887 return -EAGAIN; 38121 return -EAGAIN;
38888 } 38122 }
@@ -38891,7 +38125,7 @@ diff -urNp linux-2.6.29.6/kernel/fork.c linux-2.6.29.6/kernel/fork.c
38891 write_unlock(&fs->lock); 38125 write_unlock(&fs->lock);
38892 return 0; 38126 return 0;
38893 } 38127 }
38894@@ -978,6 +1006,9 @@ static struct task_struct *copy_process( 38128@@ -989,6 +1017,9 @@ static struct task_struct *copy_process(
38895 DEBUG_LOCKS_WARN_ON(!p->softirqs_enabled); 38129 DEBUG_LOCKS_WARN_ON(!p->softirqs_enabled);
38896 #endif 38130 #endif
38897 retval = -EAGAIN; 38131 retval = -EAGAIN;
@@ -38901,7 +38135,7 @@ diff -urNp linux-2.6.29.6/kernel/fork.c linux-2.6.29.6/kernel/fork.c
38901 if (atomic_read(&p->real_cred->user->processes) >= 38135 if (atomic_read(&p->real_cred->user->processes) >=
38902 p->signal->rlim[RLIMIT_NPROC].rlim_cur) { 38136 p->signal->rlim[RLIMIT_NPROC].rlim_cur) {
38903 if (!capable(CAP_SYS_ADMIN) && !capable(CAP_SYS_RESOURCE) && 38137 if (!capable(CAP_SYS_ADMIN) && !capable(CAP_SYS_RESOURCE) &&
38904@@ -1138,6 +1169,8 @@ static struct task_struct *copy_process( 38138@@ -1144,6 +1175,8 @@ static struct task_struct *copy_process(
38905 goto bad_fork_free_graph; 38139 goto bad_fork_free_graph;
38906 } 38140 }
38907 38141
@@ -38910,7 +38144,7 @@ diff -urNp linux-2.6.29.6/kernel/fork.c linux-2.6.29.6/kernel/fork.c
38910 p->set_child_tid = (clone_flags & CLONE_CHILD_SETTID) ? child_tidptr : NULL; 38144 p->set_child_tid = (clone_flags & CLONE_CHILD_SETTID) ? child_tidptr : NULL;
38911 /* 38145 /*
38912 * Clear TID on mm_release()? 38146 * Clear TID on mm_release()?
38913@@ -1306,6 +1339,8 @@ bad_fork_cleanup_count: 38147@@ -1310,6 +1343,8 @@ bad_fork_cleanup_count:
38914 bad_fork_free: 38148 bad_fork_free:
38915 free_task(p); 38149 free_task(p);
38916 fork_out: 38150 fork_out:
@@ -38919,7 +38153,7 @@ diff -urNp linux-2.6.29.6/kernel/fork.c linux-2.6.29.6/kernel/fork.c
38919 return ERR_PTR(retval); 38153 return ERR_PTR(retval);
38920 } 38154 }
38921 38155
38922@@ -1399,6 +1434,8 @@ long do_fork(unsigned long clone_flags, 38156@@ -1403,6 +1438,8 @@ long do_fork(unsigned long clone_flags,
38923 if (clone_flags & CLONE_PARENT_SETTID) 38157 if (clone_flags & CLONE_PARENT_SETTID)
38924 put_user(nr, parent_tidptr); 38158 put_user(nr, parent_tidptr);
38925 38159
@@ -38928,7 +38162,7 @@ diff -urNp linux-2.6.29.6/kernel/fork.c linux-2.6.29.6/kernel/fork.c
38928 if (clone_flags & CLONE_VFORK) { 38162 if (clone_flags & CLONE_VFORK) {
38929 p->vfork_done = &vfork; 38163 p->vfork_done = &vfork;
38930 init_completion(&vfork); 38164 init_completion(&vfork);
38931@@ -1530,7 +1567,7 @@ static int unshare_fs(unsigned long unsh 38165@@ -1535,7 +1572,7 @@ static int unshare_fs(unsigned long unsh
38932 return 0; 38166 return 0;
38933 38167
38934 /* don't need lock here; in the worst case we'll do useless copy */ 38168 /* don't need lock here; in the worst case we'll do useless copy */
@@ -38937,7 +38171,7 @@ diff -urNp linux-2.6.29.6/kernel/fork.c linux-2.6.29.6/kernel/fork.c
38937 return 0; 38171 return 0;
38938 38172
38939 *new_fsp = copy_fs_struct(fs); 38173 *new_fsp = copy_fs_struct(fs);
38940@@ -1653,7 +1690,7 @@ SYSCALL_DEFINE1(unshare, unsigned long, 38174@@ -1658,7 +1695,7 @@ SYSCALL_DEFINE1(unshare, unsigned long,
38941 fs = current->fs; 38175 fs = current->fs;
38942 write_lock(&fs->lock); 38176 write_lock(&fs->lock);
38943 current->fs = new_fs; 38177 current->fs = new_fs;
@@ -38946,10 +38180,10 @@ diff -urNp linux-2.6.29.6/kernel/fork.c linux-2.6.29.6/kernel/fork.c
38946 new_fs = NULL; 38180 new_fs = NULL;
38947 else 38181 else
38948 new_fs = fs; 38182 new_fs = fs;
38949diff -urNp linux-2.6.29.6/kernel/futex.c linux-2.6.29.6/kernel/futex.c 38183diff -urNp linux-2.6.30.4/kernel/futex.c linux-2.6.30.4/kernel/futex.c
38950--- linux-2.6.29.6/kernel/futex.c 2009-07-02 19:41:20.000000000 -0400 38184--- linux-2.6.30.4/kernel/futex.c 2009-07-24 17:47:51.000000000 -0400
38951+++ linux-2.6.29.6/kernel/futex.c 2009-07-23 17:34:32.205707403 -0400 38185+++ linux-2.6.30.4/kernel/futex.c 2009-07-30 09:48:10.127681569 -0400
38952@@ -213,6 +213,11 @@ get_futex_key(u32 __user *uaddr, int fsh 38186@@ -212,6 +212,11 @@ get_futex_key(u32 __user *uaddr, int fsh
38953 struct page *page; 38187 struct page *page;
38954 int err; 38188 int err;
38955 38189
@@ -38961,7 +38195,7 @@ diff -urNp linux-2.6.29.6/kernel/futex.c linux-2.6.29.6/kernel/futex.c
38961 /* 38195 /*
38962 * The futex address must be "naturally" aligned. 38196 * The futex address must be "naturally" aligned.
38963 */ 38197 */
38964@@ -1306,7 +1311,7 @@ retry: 38198@@ -1285,7 +1290,7 @@ retry_private:
38965 38199
38966 restart = &current_thread_info()->restart_block; 38200 restart = &current_thread_info()->restart_block;
38967 restart->fn = futex_wait_restart; 38201 restart->fn = futex_wait_restart;
@@ -38970,7 +38204,7 @@ diff -urNp linux-2.6.29.6/kernel/futex.c linux-2.6.29.6/kernel/futex.c
38970 restart->futex.val = val; 38204 restart->futex.val = val;
38971 restart->futex.time = abs_time->tv64; 38205 restart->futex.time = abs_time->tv64;
38972 restart->futex.bitset = bitset; 38206 restart->futex.bitset = bitset;
38973@@ -1848,7 +1853,7 @@ retry: 38207@@ -1809,7 +1814,7 @@ retry:
38974 */ 38208 */
38975 static inline int fetch_robust_entry(struct robust_list __user **entry, 38209 static inline int fetch_robust_entry(struct robust_list __user **entry,
38976 struct robust_list __user * __user *head, 38210 struct robust_list __user * __user *head,
@@ -38979,22 +38213,9 @@ diff -urNp linux-2.6.29.6/kernel/futex.c linux-2.6.29.6/kernel/futex.c
38979 { 38213 {
38980 unsigned long uentry; 38214 unsigned long uentry;
38981 38215
38982diff -urNp linux-2.6.29.6/kernel/irq/handle.c linux-2.6.29.6/kernel/irq/handle.c 38216diff -urNp linux-2.6.30.4/kernel/kallsyms.c linux-2.6.30.4/kernel/kallsyms.c
38983--- linux-2.6.29.6/kernel/irq/handle.c 2009-07-02 19:41:20.000000000 -0400 38217--- linux-2.6.30.4/kernel/kallsyms.c 2009-07-24 17:47:51.000000000 -0400
38984+++ linux-2.6.29.6/kernel/irq/handle.c 2009-07-23 17:34:32.206808804 -0400 38218+++ linux-2.6.30.4/kernel/kallsyms.c 2009-07-30 11:10:49.619428708 -0400
38985@@ -222,7 +222,8 @@ struct irq_desc irq_desc[NR_IRQS] __cach
38986 .depth = 1,
38987 .lock = __SPIN_LOCK_UNLOCKED(irq_desc->lock),
38988 #ifdef CONFIG_SMP
38989- .affinity = CPU_MASK_ALL
38990+ .affinity = CPU_MASK_ALL,
38991+ .cpu = 0,
38992 #endif
38993 }
38994 };
38995diff -urNp linux-2.6.29.6/kernel/kallsyms.c linux-2.6.29.6/kernel/kallsyms.c
38996--- linux-2.6.29.6/kernel/kallsyms.c 2009-07-02 19:41:20.000000000 -0400
38997+++ linux-2.6.29.6/kernel/kallsyms.c 2009-07-23 17:34:32.206808804 -0400
38998@@ -62,6 +62,18 @@ static inline int is_kernel_text(unsigne 38219@@ -62,6 +62,18 @@ static inline int is_kernel_text(unsigne
38999 38220
39000 static inline int is_kernel(unsigned long addr) 38221 static inline int is_kernel(unsigned long addr)
@@ -39014,7 +38235,7 @@ diff -urNp linux-2.6.29.6/kernel/kallsyms.c linux-2.6.29.6/kernel/kallsyms.c
39014 if (addr >= (unsigned long)_stext && addr <= (unsigned long)_end) 38235 if (addr >= (unsigned long)_stext && addr <= (unsigned long)_end)
39015 return 1; 38236 return 1;
39016 return in_gate_area_no_task(addr); 38237 return in_gate_area_no_task(addr);
39017@@ -372,7 +384,6 @@ static unsigned long get_ksymbol_core(st 38238@@ -391,7 +403,6 @@ static unsigned long get_ksymbol_core(st
39018 38239
39019 static void reset_iter(struct kallsym_iter *iter, loff_t new_pos) 38240 static void reset_iter(struct kallsym_iter *iter, loff_t new_pos)
39020 { 38241 {
@@ -39022,7 +38243,7 @@ diff -urNp linux-2.6.29.6/kernel/kallsyms.c linux-2.6.29.6/kernel/kallsyms.c
39022 iter->nameoff = get_symbol_offset(new_pos); 38243 iter->nameoff = get_symbol_offset(new_pos);
39023 iter->pos = new_pos; 38244 iter->pos = new_pos;
39024 } 38245 }
39025@@ -456,7 +467,7 @@ static int kallsyms_open(struct inode *i 38246@@ -475,7 +486,7 @@ static int kallsyms_open(struct inode *i
39026 struct kallsym_iter *iter; 38247 struct kallsym_iter *iter;
39027 int ret; 38248 int ret;
39028 38249
@@ -39031,7 +38252,7 @@ diff -urNp linux-2.6.29.6/kernel/kallsyms.c linux-2.6.29.6/kernel/kallsyms.c
39031 if (!iter) 38252 if (!iter)
39032 return -ENOMEM; 38253 return -ENOMEM;
39033 reset_iter(iter, 0); 38254 reset_iter(iter, 0);
39034@@ -478,7 +489,15 @@ static const struct file_operations kall 38255@@ -497,7 +508,15 @@ static const struct file_operations kall
39035 38256
39036 static int __init kallsyms_init(void) 38257 static int __init kallsyms_init(void)
39037 { 38258 {
@@ -39047,22 +38268,10 @@ diff -urNp linux-2.6.29.6/kernel/kallsyms.c linux-2.6.29.6/kernel/kallsyms.c
39047 return 0; 38268 return 0;
39048 } 38269 }
39049 __initcall(kallsyms_init); 38270 __initcall(kallsyms_init);
39050diff -urNp linux-2.6.29.6/kernel/kmod.c linux-2.6.29.6/kernel/kmod.c 38271diff -urNp linux-2.6.30.4/kernel/kprobes.c linux-2.6.30.4/kernel/kprobes.c
39051--- linux-2.6.29.6/kernel/kmod.c 2009-07-02 19:41:20.000000000 -0400 38272--- linux-2.6.30.4/kernel/kprobes.c 2009-07-24 17:47:51.000000000 -0400
39052+++ linux-2.6.29.6/kernel/kmod.c 2009-07-23 17:34:32.206808804 -0400 38273+++ linux-2.6.30.4/kernel/kprobes.c 2009-07-30 09:48:10.128762672 -0400
39053@@ -108,7 +108,7 @@ int request_module(const char *fmt, ...) 38274@@ -184,7 +184,7 @@ static kprobe_opcode_t __kprobes *__get_
39054 return -ENOMEM;
39055 }
39056
39057- ret = call_usermodehelper(modprobe_path, argv, envp, 1);
39058+ ret = call_usermodehelper(modprobe_path, argv, envp, UMH_WAIT_PROC);
39059 atomic_dec(&kmod_concurrent);
39060 return ret;
39061 }
39062diff -urNp linux-2.6.29.6/kernel/kprobes.c linux-2.6.29.6/kernel/kprobes.c
39063--- linux-2.6.29.6/kernel/kprobes.c 2009-07-02 19:41:20.000000000 -0400
39064+++ linux-2.6.29.6/kernel/kprobes.c 2009-07-23 18:40:27.474712638 -0400
39065@@ -183,7 +183,7 @@ static kprobe_opcode_t __kprobes *__get_
39066 * kernel image and loaded module images reside. This is required 38275 * kernel image and loaded module images reside. This is required
39067 * so x86_64 can correctly handle the %rip-relative fixups. 38276 * so x86_64 can correctly handle the %rip-relative fixups.
39068 */ 38277 */
@@ -39071,7 +38280,7 @@ diff -urNp linux-2.6.29.6/kernel/kprobes.c linux-2.6.29.6/kernel/kprobes.c
39071 if (!kip->insns) { 38280 if (!kip->insns) {
39072 kfree(kip); 38281 kfree(kip);
39073 return NULL; 38282 return NULL;
39074@@ -224,7 +224,7 @@ static int __kprobes collect_one_slot(st 38283@@ -225,7 +225,7 @@ static int __kprobes collect_one_slot(st
39075 hlist_add_head(&kip->hlist, 38284 hlist_add_head(&kip->hlist,
39076 &kprobe_insn_pages); 38285 &kprobe_insn_pages);
39077 } else { 38286 } else {
@@ -39080,7 +38289,7 @@ diff -urNp linux-2.6.29.6/kernel/kprobes.c linux-2.6.29.6/kernel/kprobes.c
39080 kfree(kip); 38289 kfree(kip);
39081 } 38290 }
39082 return 1; 38291 return 1;
39083@@ -1246,7 +1246,7 @@ static int __kprobes show_kprobe_addr(st 38292@@ -1333,7 +1333,7 @@ static int __kprobes show_kprobe_addr(st
39084 return 0; 38293 return 0;
39085 } 38294 }
39086 38295
@@ -39089,7 +38298,7 @@ diff -urNp linux-2.6.29.6/kernel/kprobes.c linux-2.6.29.6/kernel/kprobes.c
39089 .start = kprobe_seq_start, 38298 .start = kprobe_seq_start,
39090 .next = kprobe_seq_next, 38299 .next = kprobe_seq_next,
39091 .stop = kprobe_seq_stop, 38300 .stop = kprobe_seq_stop,
39092@@ -1258,7 +1258,7 @@ static int __kprobes kprobes_open(struct 38301@@ -1345,7 +1345,7 @@ static int __kprobes kprobes_open(struct
39093 return seq_open(filp, &kprobes_seq_ops); 38302 return seq_open(filp, &kprobes_seq_ops);
39094 } 38303 }
39095 38304
@@ -39098,7 +38307,7 @@ diff -urNp linux-2.6.29.6/kernel/kprobes.c linux-2.6.29.6/kernel/kprobes.c
39098 .open = kprobes_open, 38307 .open = kprobes_open,
39099 .read = seq_read, 38308 .read = seq_read,
39100 .llseek = seq_lseek, 38309 .llseek = seq_lseek,
39101@@ -1371,7 +1371,7 @@ static ssize_t write_enabled_file_bool(s 38310@@ -1527,7 +1527,7 @@ static ssize_t write_enabled_file_bool(s
39102 return count; 38311 return count;
39103 } 38312 }
39104 38313
@@ -39107,22 +38316,10 @@ diff -urNp linux-2.6.29.6/kernel/kprobes.c linux-2.6.29.6/kernel/kprobes.c
39107 .read = read_enabled_file_bool, 38316 .read = read_enabled_file_bool,
39108 .write = write_enabled_file_bool, 38317 .write = write_enabled_file_bool,
39109 }; 38318 };
39110diff -urNp linux-2.6.29.6/kernel/latencytop.c linux-2.6.29.6/kernel/latencytop.c 38319diff -urNp linux-2.6.30.4/kernel/lockdep.c linux-2.6.30.4/kernel/lockdep.c
39111--- linux-2.6.29.6/kernel/latencytop.c 2009-07-02 19:41:20.000000000 -0400 38320--- linux-2.6.30.4/kernel/lockdep.c 2009-07-24 17:47:51.000000000 -0400
39112+++ linux-2.6.29.6/kernel/latencytop.c 2009-07-23 18:40:28.720267146 -0400 38321+++ linux-2.6.30.4/kernel/lockdep.c 2009-07-30 09:48:10.130698443 -0400
39113@@ -223,7 +223,7 @@ static int lstats_open(struct inode *ino 38322@@ -628,6 +628,10 @@ static int static_obj(void *obj)
39114 return single_open(filp, lstats_show, NULL);
39115 }
39116
39117-static struct file_operations lstats_fops = {
39118+static const struct file_operations lstats_fops = {
39119 .open = lstats_open,
39120 .read = seq_read,
39121 .write = lstats_write,
39122diff -urNp linux-2.6.29.6/kernel/lockdep.c linux-2.6.29.6/kernel/lockdep.c
39123--- linux-2.6.29.6/kernel/lockdep.c 2009-07-02 19:41:20.000000000 -0400
39124+++ linux-2.6.29.6/kernel/lockdep.c 2009-07-23 17:34:32.207852017 -0400
39125@@ -631,6 +631,10 @@ static int static_obj(void *obj)
39126 int i; 38323 int i;
39127 #endif 38324 #endif
39128 38325
@@ -39133,7 +38330,7 @@ diff -urNp linux-2.6.29.6/kernel/lockdep.c linux-2.6.29.6/kernel/lockdep.c
39133 /* 38330 /*
39134 * static variable? 38331 * static variable?
39135 */ 38332 */
39136@@ -642,9 +646,12 @@ static int static_obj(void *obj) 38333@@ -639,9 +643,12 @@ static int static_obj(void *obj)
39137 * percpu var? 38334 * percpu var?
39138 */ 38335 */
39139 for_each_possible_cpu(i) { 38336 for_each_possible_cpu(i) {
@@ -39148,10 +38345,10 @@ diff -urNp linux-2.6.29.6/kernel/lockdep.c linux-2.6.29.6/kernel/lockdep.c
39148 38345
39149 if ((addr >= start) && (addr < end)) 38346 if ((addr >= start) && (addr < end))
39150 return 1; 38347 return 1;
39151diff -urNp linux-2.6.29.6/kernel/lockdep_proc.c linux-2.6.29.6/kernel/lockdep_proc.c 38348diff -urNp linux-2.6.30.4/kernel/lockdep_proc.c linux-2.6.30.4/kernel/lockdep_proc.c
39152--- linux-2.6.29.6/kernel/lockdep_proc.c 2009-07-02 19:41:20.000000000 -0400 38349--- linux-2.6.30.4/kernel/lockdep_proc.c 2009-07-24 17:47:51.000000000 -0400
39153+++ linux-2.6.29.6/kernel/lockdep_proc.c 2009-07-23 18:40:28.720267146 -0400 38350+++ linux-2.6.30.4/kernel/lockdep_proc.c 2009-07-30 09:48:10.130698443 -0400
39154@@ -666,7 +666,7 @@ static int ls_show(struct seq_file *m, v 38351@@ -670,7 +670,7 @@ static int ls_show(struct seq_file *m, v
39155 return 0; 38352 return 0;
39156 } 38353 }
39157 38354
@@ -39160,9 +38357,9 @@ diff -urNp linux-2.6.29.6/kernel/lockdep_proc.c linux-2.6.29.6/kernel/lockdep_pr
39160 .start = ls_start, 38357 .start = ls_start,
39161 .next = ls_next, 38358 .next = ls_next,
39162 .stop = ls_stop, 38359 .stop = ls_stop,
39163diff -urNp linux-2.6.29.6/kernel/module.c linux-2.6.29.6/kernel/module.c 38360diff -urNp linux-2.6.30.4/kernel/module.c linux-2.6.30.4/kernel/module.c
39164--- linux-2.6.29.6/kernel/module.c 2009-07-02 19:41:20.000000000 -0400 38361--- linux-2.6.30.4/kernel/module.c 2009-07-24 17:47:51.000000000 -0400
39165+++ linux-2.6.29.6/kernel/module.c 2009-07-23 17:34:32.207852017 -0400 38362+++ linux-2.6.30.4/kernel/module.c 2009-08-04 17:52:34.401055170 -0400
39166@@ -46,6 +46,11 @@ 38363@@ -46,6 +46,11 @@
39167 #include <linux/rculist.h> 38364 #include <linux/rculist.h>
39168 #include <asm/uaccess.h> 38365 #include <asm/uaccess.h>
@@ -39175,10 +38372,10 @@ diff -urNp linux-2.6.29.6/kernel/module.c linux-2.6.29.6/kernel/module.c
39175 #include <linux/license.h> 38372 #include <linux/license.h>
39176 #include <asm/sections.h> 38373 #include <asm/sections.h>
39177 #include <linux/tracepoint.h> 38374 #include <linux/tracepoint.h>
39178@@ -76,7 +81,10 @@ static DECLARE_WAIT_QUEUE_HEAD(module_wq 38375@@ -78,7 +83,10 @@ static DECLARE_WAIT_QUEUE_HEAD(module_wq
39179 static BLOCKING_NOTIFIER_HEAD(module_notify_list); 38376 static BLOCKING_NOTIFIER_HEAD(module_notify_list);
39180 38377
39181 /* Bounds of module allocation, for speeding __module_text_address */ 38378 /* Bounds of module allocation, for speeding __module_address */
39182-static unsigned long module_addr_min = -1UL, module_addr_max = 0; 38379-static unsigned long module_addr_min = -1UL, module_addr_max = 0;
39183+static unsigned long module_addr_min_rw = -1UL, module_addr_max_rw = 0; 38380+static unsigned long module_addr_min_rw = -1UL, module_addr_max_rw = 0;
39184+static unsigned long module_addr_min_rx = -1UL, module_addr_max_rx = 0; 38381+static unsigned long module_addr_min_rx = -1UL, module_addr_max_rx = 0;
@@ -39187,7 +38384,7 @@ diff -urNp linux-2.6.29.6/kernel/module.c linux-2.6.29.6/kernel/module.c
39187 38384
39188 int register_module_notifier(struct notifier_block * nb) 38385 int register_module_notifier(struct notifier_block * nb)
39189 { 38386 {
39190@@ -245,7 +253,7 @@ static bool each_symbol(bool (*fn)(const 38387@@ -234,7 +242,7 @@ bool each_symbol(bool (*fn)(const struct
39191 return true; 38388 return true;
39192 38389
39193 list_for_each_entry_rcu(mod, &modules, list) { 38390 list_for_each_entry_rcu(mod, &modules, list) {
@@ -39196,7 +38393,7 @@ diff -urNp linux-2.6.29.6/kernel/module.c linux-2.6.29.6/kernel/module.c
39196 { mod->syms, mod->syms + mod->num_syms, mod->crcs, 38393 { mod->syms, mod->syms + mod->num_syms, mod->crcs,
39197 NOT_GPL_ONLY, false }, 38394 NOT_GPL_ONLY, false },
39198 { mod->gpl_syms, mod->gpl_syms + mod->num_gpl_syms, 38395 { mod->gpl_syms, mod->gpl_syms + mod->num_gpl_syms,
39199@@ -267,7 +275,7 @@ static bool each_symbol(bool (*fn)(const 38396@@ -256,7 +264,7 @@ bool each_symbol(bool (*fn)(const struct
39200 #endif 38397 #endif
39201 }; 38398 };
39202 38399
@@ -39205,16 +38402,7 @@ diff -urNp linux-2.6.29.6/kernel/module.c linux-2.6.29.6/kernel/module.c
39205 return true; 38402 return true;
39206 } 38403 }
39207 return false; 38404 return false;
39208@@ -403,6 +411,8 @@ static inline unsigned int block_size(in 38405@@ -430,7 +438,7 @@ static void *percpu_modalloc(unsigned lo
39209 return val;
39210 }
39211
39212+EXPORT_SYMBOL(__per_cpu_start);
39213+
39214 static void *percpu_modalloc(unsigned long size, unsigned long align,
39215 const char *name)
39216 {
39217@@ -410,7 +420,7 @@ static void *percpu_modalloc(unsigned lo
39218 unsigned int i; 38406 unsigned int i;
39219 void *ptr; 38407 void *ptr;
39220 38408
@@ -39223,7 +38411,7 @@ diff -urNp linux-2.6.29.6/kernel/module.c linux-2.6.29.6/kernel/module.c
39223 printk(KERN_WARNING "%s: per-cpu alignment %li > %li\n", 38411 printk(KERN_WARNING "%s: per-cpu alignment %li > %li\n",
39224 name, align, PAGE_SIZE); 38412 name, align, PAGE_SIZE);
39225 align = PAGE_SIZE; 38413 align = PAGE_SIZE;
39226@@ -492,7 +502,11 @@ static void percpu_modcopy(void *pcpudes 38414@@ -533,7 +541,11 @@ static void percpu_modcopy(void *pcpudes
39227 int cpu; 38415 int cpu;
39228 38416
39229 for_each_possible_cpu(cpu) 38417 for_each_possible_cpu(cpu)
@@ -39234,8 +38422,8 @@ diff -urNp linux-2.6.29.6/kernel/module.c linux-2.6.29.6/kernel/module.c
39234+#endif 38422+#endif
39235 } 38423 }
39236 38424
39237 static int percpu_modinit(void) 38425 #else /* ... !CONFIG_SMP */
39238@@ -751,6 +765,9 @@ SYSCALL_DEFINE2(delete_module, const cha 38426@@ -777,6 +789,9 @@ SYSCALL_DEFINE2(delete_module, const cha
39239 char name[MODULE_NAME_LEN]; 38427 char name[MODULE_NAME_LEN];
39240 int ret, forced = 0; 38428 int ret, forced = 0;
39241 38429
@@ -39245,8 +38433,8 @@ diff -urNp linux-2.6.29.6/kernel/module.c linux-2.6.29.6/kernel/module.c
39245 if (!capable(CAP_SYS_MODULE)) 38433 if (!capable(CAP_SYS_MODULE))
39246 return -EPERM; 38434 return -EPERM;
39247 38435
39248@@ -1458,10 +1475,11 @@ static void free_module(struct module *m 38436@@ -1490,10 +1505,11 @@ static void free_module(struct module *m
39249 module_unload_free(mod); 38437 destroy_params(mod->kp, mod->num_kp);
39250 38438
39251 /* release any pointers to mcount in this module */ 38439 /* release any pointers to mcount in this module */
39252- ftrace_release(mod->module_core, mod->core_size); 38440- ftrace_release(mod->module_core, mod->core_size);
@@ -39259,7 +38447,7 @@ diff -urNp linux-2.6.29.6/kernel/module.c linux-2.6.29.6/kernel/module.c
39259 kfree(mod->args); 38447 kfree(mod->args);
39260 if (mod->percpu) 38448 if (mod->percpu)
39261 percpu_modfree(mod->percpu); 38449 percpu_modfree(mod->percpu);
39262@@ -1470,10 +1488,12 @@ static void free_module(struct module *m 38450@@ -1502,10 +1518,12 @@ static void free_module(struct module *m
39263 percpu_modfree(mod->refptr); 38451 percpu_modfree(mod->refptr);
39264 #endif 38452 #endif
39265 /* Free lock-classes: */ 38453 /* Free lock-classes: */
@@ -39274,14 +38462,9 @@ diff -urNp linux-2.6.29.6/kernel/module.c linux-2.6.29.6/kernel/module.c
39274 } 38462 }
39275 38463
39276 void *__symbol_get(const char *symbol) 38464 void *__symbol_get(const char *symbol)
39277@@ -1539,10 +1559,14 @@ static int simplify_symbols(Elf_Shdr *se 38465@@ -1573,6 +1591,10 @@ static int simplify_symbols(Elf_Shdr *se
39278 struct module *mod)
39279 {
39280 Elf_Sym *sym = (void *)sechdrs[symindex].sh_addr;
39281- unsigned long secbase;
39282+ unsigned long secbase, symbol;
39283 unsigned int i, n = sechdrs[symindex].sh_size / sizeof(Elf_Sym);
39284 int ret = 0; 38466 int ret = 0;
38467 const struct kernel_symbol *ksym;
39285 38468
39286+#ifdef CONFIG_PAX_KERNEXEC 38469+#ifdef CONFIG_PAX_KERNEXEC
39287+ unsigned long cr0; 38470+ unsigned long cr0;
@@ -39290,43 +38473,27 @@ diff -urNp linux-2.6.29.6/kernel/module.c linux-2.6.29.6/kernel/module.c
39290 for (i = 1; i < n; i++) { 38473 for (i = 1; i < n; i++) {
39291 switch (sym[i].st_shndx) { 38474 switch (sym[i].st_shndx) {
39292 case SHN_COMMON: 38475 case SHN_COMMON:
39293@@ -1561,10 +1585,19 @@ static int simplify_symbols(Elf_Shdr *se 38476@@ -1595,7 +1617,17 @@ static int simplify_symbols(Elf_Shdr *se
39294 break; 38477 strtab + sym[i].st_name, mod);
39295 38478 /* Ok if resolved. */
39296 case SHN_UNDEF: 38479 if (ksym) {
39297- sym[i].st_value 38480+
39298- = resolve_symbol(sechdrs, versindex,
39299+ symbol = resolve_symbol(sechdrs, versindex,
39300 strtab + sym[i].st_name, mod);
39301
39302+#ifdef CONFIG_PAX_KERNEXEC 38481+#ifdef CONFIG_PAX_KERNEXEC
39303+ pax_open_kernel(cr0); 38482+ pax_open_kernel(cr0);
39304+#endif 38483+#endif
39305+ 38484+
39306+ sym[i].st_value = symbol; 38485 sym[i].st_value = ksym->value;
39307+ 38486+
39308+#ifdef CONFIG_PAX_KERNEXEC 38487+#ifdef CONFIG_PAX_KERNEXEC
39309+ pax_close_kernel(cr0); 38488+ pax_close_kernel(cr0);
39310+#endif 38489+#endif
39311+ 38490+
39312 /* Ok if resolved. */
39313 if (!IS_ERR_VALUE(sym[i].st_value))
39314 break; 38491 break;
39315@@ -1579,11 +1612,27 @@ static int simplify_symbols(Elf_Shdr *se 38492 }
39316 38493
39317 default: 38494@@ -1614,7 +1646,17 @@ static int simplify_symbols(Elf_Shdr *se
39318 /* Divert to percpu allocation if a percpu var. */
39319- if (sym[i].st_shndx == pcpuindex)
39320+ if (sym[i].st_shndx == pcpuindex) {
39321+
39322+#if defined(CONFIG_X86_32) && defined(CONFIG_SMP)
39323+ secbase = (unsigned long)mod->percpu - (unsigned long)__per_cpu_start;
39324+#else
39325 secbase = (unsigned long)mod->percpu; 38495 secbase = (unsigned long)mod->percpu;
39326- else 38496 else
39327+#endif
39328+
39329+ } else
39330 secbase = sechdrs[sym[i].st_shndx].sh_addr; 38497 secbase = sechdrs[sym[i].st_shndx].sh_addr;
39331+ 38498+
39332+#ifdef CONFIG_PAX_KERNEXEC 38499+#ifdef CONFIG_PAX_KERNEXEC
@@ -39342,9 +38509,9 @@ diff -urNp linux-2.6.29.6/kernel/module.c linux-2.6.29.6/kernel/module.c
39342 break; 38509 break;
39343 } 38510 }
39344 } 38511 }
39345@@ -1645,11 +1694,12 @@ static void layout_sections(struct modul 38512@@ -1675,11 +1717,12 @@ static void layout_sections(struct modul
39346 || strncmp(secstrings + s->sh_name, 38513 || s->sh_entsize != ~0UL
39347 ".init", 5) == 0) 38514 || strstarts(secstrings + s->sh_name, ".init"))
39348 continue; 38515 continue;
39349- s->sh_entsize = get_offset(mod, &mod->core_size, s, i); 38516- s->sh_entsize = get_offset(mod, &mod->core_size, s, i);
39350+ if ((s->sh_flags & SHF_WRITE) || !(s->sh_flags & SHF_ALLOC)) 38517+ if ((s->sh_flags & SHF_WRITE) || !(s->sh_flags & SHF_ALLOC))
@@ -39358,9 +38525,9 @@ diff -urNp linux-2.6.29.6/kernel/module.c linux-2.6.29.6/kernel/module.c
39358 } 38525 }
39359 38526
39360 DEBUGP("Init section allocation order:\n"); 38527 DEBUGP("Init section allocation order:\n");
39361@@ -1663,12 +1713,13 @@ static void layout_sections(struct modul 38528@@ -1692,12 +1735,13 @@ static void layout_sections(struct modul
39362 || strncmp(secstrings + s->sh_name, 38529 || s->sh_entsize != ~0UL
39363 ".init", 5) != 0) 38530 || !strstarts(secstrings + s->sh_name, ".init"))
39364 continue; 38531 continue;
39365- s->sh_entsize = (get_offset(mod, &mod->init_size, s, i) 38532- s->sh_entsize = (get_offset(mod, &mod->init_size, s, i)
39366- | INIT_OFFSET_MASK); 38533- | INIT_OFFSET_MASK);
@@ -39376,7 +38543,7 @@ diff -urNp linux-2.6.29.6/kernel/module.c linux-2.6.29.6/kernel/module.c
39376 } 38543 }
39377 } 38544 }
39378 38545
39379@@ -1808,14 +1859,31 @@ static void add_kallsyms(struct module * 38546@@ -1836,14 +1880,31 @@ static void add_kallsyms(struct module *
39380 { 38547 {
39381 unsigned int i; 38548 unsigned int i;
39382 38549
@@ -39411,8 +38578,8 @@ diff -urNp linux-2.6.29.6/kernel/module.c linux-2.6.29.6/kernel/module.c
39411 } 38578 }
39412 #else 38579 #else
39413 static inline void add_kallsyms(struct module *mod, 38580 static inline void add_kallsyms(struct module *mod,
39414@@ -1842,16 +1910,30 @@ static void dynamic_printk_setup(struct 38581@@ -1864,16 +1925,30 @@ static void dynamic_debug_setup(struct _
39415 #endif /* CONFIG_DYNAMIC_PRINTK_DEBUG */ 38582 #endif
39416 } 38583 }
39417 38584
39418-static void *module_alloc_update_bounds(unsigned long size) 38585-static void *module_alloc_update_bounds(unsigned long size)
@@ -39447,7 +38614,7 @@ diff -urNp linux-2.6.29.6/kernel/module.c linux-2.6.29.6/kernel/module.c
39447 } 38614 }
39448 return ret; 38615 return ret;
39449 } 38616 }
39450@@ -1878,6 +1960,10 @@ static noinline struct module *load_modu 38617@@ -1899,6 +1974,10 @@ static noinline struct module *load_modu
39451 unsigned long *mseg; 38618 unsigned long *mseg;
39452 mm_segment_t old_fs; 38619 mm_segment_t old_fs;
39453 38620
@@ -39458,7 +38625,7 @@ diff -urNp linux-2.6.29.6/kernel/module.c linux-2.6.29.6/kernel/module.c
39458 DEBUGP("load_module: umod=%p, len=%lu, uargs=%p\n", 38625 DEBUGP("load_module: umod=%p, len=%lu, uargs=%p\n",
39459 umod, len, uargs); 38626 umod, len, uargs);
39460 if (len < sizeof(*hdr)) 38627 if (len < sizeof(*hdr))
39461@@ -2034,22 +2120,57 @@ static noinline struct module *load_modu 38628@@ -2049,22 +2128,57 @@ static noinline struct module *load_modu
39462 layout_sections(mod, hdr, sechdrs, secstrings); 38629 layout_sections(mod, hdr, sechdrs, secstrings);
39463 38630
39464 /* Do the allocs. */ 38631 /* Do the allocs. */
@@ -39480,21 +38647,24 @@ diff -urNp linux-2.6.29.6/kernel/module.c linux-2.6.29.6/kernel/module.c
39480+ } 38647+ }
39481+ memset(ptr, 0, mod->init_size_rw); 38648+ memset(ptr, 0, mod->init_size_rw);
39482+ mod->module_init_rw = ptr; 38649+ mod->module_init_rw = ptr;
39483+ 38650
38651- ptr = module_alloc_update_bounds(mod->init_size);
38652- if (!ptr && mod->init_size) {
39484+ ptr = module_alloc_update_bounds_rx(mod->core_size_rx); 38653+ ptr = module_alloc_update_bounds_rx(mod->core_size_rx);
39485+ if (!ptr) { 38654+ if (!ptr) {
39486+ err = -ENOMEM; 38655 err = -ENOMEM;
38656- goto free_core;
39487+ goto free_init_rw; 38657+ goto free_init_rw;
39488+ } 38658 }
39489+ 38659- memset(ptr, 0, mod->init_size);
38660- mod->module_init = ptr;
38661
39490+#ifdef CONFIG_PAX_KERNEXEC 38662+#ifdef CONFIG_PAX_KERNEXEC
39491+ pax_open_kernel(cr0); 38663+ pax_open_kernel(cr0);
39492+#endif 38664+#endif
39493+ 38665+
39494+ memset(ptr, 0, mod->core_size_rx); 38666+ memset(ptr, 0, mod->core_size_rx);
39495 38667+
39496- ptr = module_alloc_update_bounds(mod->init_size);
39497- if (!ptr && mod->init_size) {
39498+#ifdef CONFIG_PAX_KERNEXEC 38668+#ifdef CONFIG_PAX_KERNEXEC
39499+ pax_close_kernel(cr0); 38669+ pax_close_kernel(cr0);
39500+#endif 38670+#endif
@@ -39503,13 +38673,10 @@ diff -urNp linux-2.6.29.6/kernel/module.c linux-2.6.29.6/kernel/module.c
39503+ 38673+
39504+ ptr = module_alloc_update_bounds_rx(mod->init_size_rx); 38674+ ptr = module_alloc_update_bounds_rx(mod->init_size_rx);
39505+ if (!ptr && mod->init_size_rx) { 38675+ if (!ptr && mod->init_size_rx) {
39506 err = -ENOMEM; 38676+ err = -ENOMEM;
39507- goto free_core;
39508+ goto free_core_rx; 38677+ goto free_core_rx;
39509 } 38678+ }
39510- memset(ptr, 0, mod->init_size); 38679+
39511- mod->module_init = ptr;
39512
39513+#ifdef CONFIG_PAX_KERNEXEC 38680+#ifdef CONFIG_PAX_KERNEXEC
39514+ pax_open_kernel(cr0); 38681+ pax_open_kernel(cr0);
39515+#endif 38682+#endif
@@ -39524,7 +38691,7 @@ diff -urNp linux-2.6.29.6/kernel/module.c linux-2.6.29.6/kernel/module.c
39524 /* Transfer each section which specifies SHF_ALLOC */ 38691 /* Transfer each section which specifies SHF_ALLOC */
39525 DEBUGP("final section addresses:\n"); 38692 DEBUGP("final section addresses:\n");
39526 for (i = 0; i < hdr->e_shnum; i++) { 38693 for (i = 0; i < hdr->e_shnum; i++) {
39527@@ -2058,17 +2179,41 @@ static noinline struct module *load_modu 38694@@ -2073,17 +2187,41 @@ static noinline struct module *load_modu
39528 if (!(sechdrs[i].sh_flags & SHF_ALLOC)) 38695 if (!(sechdrs[i].sh_flags & SHF_ALLOC))
39529 continue; 38696 continue;
39530 38697
@@ -39546,10 +38713,7 @@ diff -urNp linux-2.6.29.6/kernel/module.c linux-2.6.29.6/kernel/module.c
39546+ else 38713+ else
39547+ dest = mod->module_core_rx + sechdrs[i].sh_entsize; 38714+ dest = mod->module_core_rx + sechdrs[i].sh_entsize;
39548+ } 38715+ }
39549 38716+
39550- if (sechdrs[i].sh_type != SHT_NOBITS)
39551- memcpy(dest, (void *)sechdrs[i].sh_addr,
39552- sechdrs[i].sh_size);
39553+ if (sechdrs[i].sh_type != SHT_NOBITS) { 38717+ if (sechdrs[i].sh_type != SHT_NOBITS) {
39554+ 38718+
39555+#ifdef CONFIG_PAX_KERNEXEC 38719+#ifdef CONFIG_PAX_KERNEXEC
@@ -39559,7 +38723,10 @@ diff -urNp linux-2.6.29.6/kernel/module.c linux-2.6.29.6/kernel/module.c
39559+ pax_close_kernel(cr0); 38723+ pax_close_kernel(cr0);
39560+ } else 38724+ } else
39561+#endif 38725+#endif
39562+ 38726
38727- if (sechdrs[i].sh_type != SHT_NOBITS)
38728- memcpy(dest, (void *)sechdrs[i].sh_addr,
38729- sechdrs[i].sh_size);
39563+ memcpy(dest, (void *)sechdrs[i].sh_addr, sechdrs[i].sh_size); 38730+ memcpy(dest, (void *)sechdrs[i].sh_addr, sechdrs[i].sh_size);
39564+ } 38731+ }
39565 /* Update sh_addr to point to copy in image. */ 38732 /* Update sh_addr to point to copy in image. */
@@ -39575,7 +38742,7 @@ diff -urNp linux-2.6.29.6/kernel/module.c linux-2.6.29.6/kernel/module.c
39575 DEBUGP("\t0x%lx %s\n", sechdrs[i].sh_addr, secstrings + sechdrs[i].sh_name); 38742 DEBUGP("\t0x%lx %s\n", sechdrs[i].sh_addr, secstrings + sechdrs[i].sh_name);
39576 } 38743 }
39577 /* Module has been moved. */ 38744 /* Module has been moved. */
39578@@ -2079,7 +2224,7 @@ static noinline struct module *load_modu 38745@@ -2094,7 +2232,7 @@ static noinline struct module *load_modu
39579 mod->name); 38746 mod->name);
39580 if (!mod->refptr) { 38747 if (!mod->refptr) {
39581 err = -ENOMEM; 38748 err = -ENOMEM;
@@ -39584,7 +38751,7 @@ diff -urNp linux-2.6.29.6/kernel/module.c linux-2.6.29.6/kernel/module.c
39584 } 38751 }
39585 #endif 38752 #endif
39586 /* Now we've moved module, initialize linked lists, etc. */ 38753 /* Now we've moved module, initialize linked lists, etc. */
39587@@ -2176,8 +2321,8 @@ static noinline struct module *load_modu 38754@@ -2191,8 +2329,8 @@ static noinline struct module *load_modu
39588 38755
39589 /* Now do relocations. */ 38756 /* Now do relocations. */
39590 for (i = 1; i < hdr->e_shnum; i++) { 38757 for (i = 1; i < hdr->e_shnum; i++) {
@@ -39594,7 +38761,7 @@ diff -urNp linux-2.6.29.6/kernel/module.c linux-2.6.29.6/kernel/module.c
39594 38761
39595 /* Not a valid relocation section? */ 38762 /* Not a valid relocation section? */
39596 if (info >= hdr->e_shnum) 38763 if (info >= hdr->e_shnum)
39597@@ -2239,12 +2384,12 @@ static noinline struct module *load_modu 38764@@ -2255,12 +2393,12 @@ static noinline struct module *load_modu
39598 * Do it before processing of module parameters, so the module 38765 * Do it before processing of module parameters, so the module
39599 * can provide parameter accessor functions of its own. 38766 * can provide parameter accessor functions of its own.
39600 */ 38767 */
@@ -39613,7 +38780,7 @@ diff -urNp linux-2.6.29.6/kernel/module.c linux-2.6.29.6/kernel/module.c
39613 38780
39614 set_fs(old_fs); 38781 set_fs(old_fs);
39615 38782
39616@@ -2285,16 +2430,20 @@ static noinline struct module *load_modu 38783@@ -2302,16 +2440,20 @@ static noinline struct module *load_modu
39617 cleanup: 38784 cleanup:
39618 kobject_del(&mod->mkobj.kobj); 38785 kobject_del(&mod->mkobj.kobj);
39619 kobject_put(&mod->mkobj.kobj); 38786 kobject_put(&mod->mkobj.kobj);
@@ -39621,9 +38788,9 @@ diff -urNp linux-2.6.29.6/kernel/module.c linux-2.6.29.6/kernel/module.c
39621+ ftrace_release(mod->module_core_rx, mod->core_size_rx); 38788+ ftrace_release(mod->module_core_rx, mod->core_size_rx);
39622 free_unload: 38789 free_unload:
39623 module_unload_free(mod); 38790 module_unload_free(mod);
38791 #if defined(CONFIG_MODULE_UNLOAD) && defined(CONFIG_SMP)
39624- free_init: 38792- free_init:
39625+ free_init_rx: 38793+ free_init_rx:
39626 #if defined(CONFIG_MODULE_UNLOAD) && defined(CONFIG_SMP)
39627 percpu_modfree(mod->refptr); 38794 percpu_modfree(mod->refptr);
39628 #endif 38795 #endif
39629- module_free(mod, mod->module_init); 38796- module_free(mod, mod->module_init);
@@ -39639,7 +38806,7 @@ diff -urNp linux-2.6.29.6/kernel/module.c linux-2.6.29.6/kernel/module.c
39639 /* mod will be freed with core. Don't access it beyond this line! */ 38806 /* mod will be freed with core. Don't access it beyond this line! */
39640 free_percpu: 38807 free_percpu:
39641 if (percpu) 38808 if (percpu)
39642@@ -2319,6 +2468,9 @@ SYSCALL_DEFINE3(init_module, void __user 38809@@ -2335,6 +2477,9 @@ SYSCALL_DEFINE3(init_module, void __user
39643 struct module *mod; 38810 struct module *mod;
39644 int ret = 0; 38811 int ret = 0;
39645 38812
@@ -39649,7 +38816,7 @@ diff -urNp linux-2.6.29.6/kernel/module.c linux-2.6.29.6/kernel/module.c
39649 /* Must have permission */ 38816 /* Must have permission */
39650 if (!capable(CAP_SYS_MODULE)) 38817 if (!capable(CAP_SYS_MODULE))
39651 return -EPERM; 38818 return -EPERM;
39652@@ -2375,20 +2527,17 @@ SYSCALL_DEFINE3(init_module, void __user 38819@@ -2394,20 +2539,17 @@ SYSCALL_DEFINE3(init_module, void __user
39653 mutex_lock(&module_mutex); 38820 mutex_lock(&module_mutex);
39654 /* Drop initial reference. */ 38821 /* Drop initial reference. */
39655 module_put(mod); 38822 module_put(mod);
@@ -39676,7 +38843,7 @@ diff -urNp linux-2.6.29.6/kernel/module.c linux-2.6.29.6/kernel/module.c
39676 #ifdef CONFIG_KALLSYMS 38843 #ifdef CONFIG_KALLSYMS
39677 /* 38844 /*
39678 * This ignores the intensely annoying "mapping symbols" found 38845 * This ignores the intensely annoying "mapping symbols" found
39679@@ -2409,10 +2558,16 @@ static const char *get_ksymbol(struct mo 38846@@ -2428,10 +2570,16 @@ static const char *get_ksymbol(struct mo
39680 unsigned long nextval; 38847 unsigned long nextval;
39681 38848
39682 /* At worse, next value is at end of module */ 38849 /* At worse, next value is at end of module */
@@ -39696,7 +38863,7 @@ diff -urNp linux-2.6.29.6/kernel/module.c linux-2.6.29.6/kernel/module.c
39696 38863
39697 /* Scan for closest preceeding symbol, and next symbol. (ELF 38864 /* Scan for closest preceeding symbol, and next symbol. (ELF
39698 starts real symbols at 1). */ 38865 starts real symbols at 1). */
39699@@ -2639,7 +2794,7 @@ static int m_show(struct seq_file *m, vo 38866@@ -2677,7 +2825,7 @@ static int m_show(struct seq_file *m, vo
39700 char buf[8]; 38867 char buf[8];
39701 38868
39702 seq_printf(m, "%s %u", 38869 seq_printf(m, "%s %u",
@@ -39705,7 +38872,7 @@ diff -urNp linux-2.6.29.6/kernel/module.c linux-2.6.29.6/kernel/module.c
39705 print_unload_info(m, mod); 38872 print_unload_info(m, mod);
39706 38873
39707 /* Informative for users. */ 38874 /* Informative for users. */
39708@@ -2648,7 +2803,7 @@ static int m_show(struct seq_file *m, vo 38875@@ -2686,7 +2834,7 @@ static int m_show(struct seq_file *m, vo
39709 mod->state == MODULE_STATE_COMING ? "Loading": 38876 mod->state == MODULE_STATE_COMING ? "Loading":
39710 "Live"); 38877 "Live");
39711 /* Used by oprofile and other similar tools. */ 38878 /* Used by oprofile and other similar tools. */
@@ -39714,29 +38881,50 @@ diff -urNp linux-2.6.29.6/kernel/module.c linux-2.6.29.6/kernel/module.c
39714 38881
39715 /* Taints info */ 38882 /* Taints info */
39716 if (mod->taints) 38883 if (mod->taints)
39717@@ -2741,12 +2896,15 @@ __notrace_funcgraph struct module *__mod 38884@@ -2781,12 +2929,12 @@ struct module *__module_address(unsigned
39718 { 38885 {
39719 struct module *mod; 38886 struct module *mod;
39720 38887
39721- if (addr < module_addr_min || addr > module_addr_max) 38888- if (addr < module_addr_min || addr > module_addr_max)
39722+#ifdef CONFIG_X86_32 38889+ if ((addr < module_addr_min_rx || addr > module_addr_max_rx) &&
39723+ addr = ktla_ktva(addr); 38890+ (addr < module_addr_min_rw || addr > module_addr_max_rw))
39724+#endif
39725+
39726+ if (addr < module_addr_min_rx || addr > module_addr_max_rx)
39727 return NULL; 38891 return NULL;
39728 38892
39729 list_for_each_entry_rcu(mod, &modules, list) 38893 list_for_each_entry_rcu(mod, &modules, list)
39730- if (within(addr, mod->module_init, mod->init_text_size) 38894- if (within_module_core(addr, mod)
39731- || within(addr, mod->module_core, mod->core_text_size)) 38895- || within_module_init(addr, mod))
39732+ if (within_module_init_rx(addr, mod) || within_module_core_rx(addr, mod)) 38896+ if (within_module_init(addr, mod) || within_module_core(addr, mod))
39733 return mod; 38897 return mod;
39734 return NULL; 38898 return NULL;
39735 } 38899 }
39736diff -urNp linux-2.6.29.6/kernel/mutex.c linux-2.6.29.6/kernel/mutex.c 38900@@ -2820,11 +2968,20 @@ bool is_module_text_address(unsigned lon
39737--- linux-2.6.29.6/kernel/mutex.c 2009-07-02 19:41:20.000000000 -0400 38901 */
39738+++ linux-2.6.29.6/kernel/mutex.c 2009-07-23 17:34:32.208921522 -0400 38902 struct module *__module_text_address(unsigned long addr)
39739@@ -83,7 +83,7 @@ __mutex_lock_slowpath(atomic_t *lock_cou 38903 {
38904- struct module *mod = __module_address(addr);
38905+ struct module *mod;
38906+
38907+#ifdef CONFIG_X86_32
38908+ addr = ktla_ktva(addr);
38909+#endif
38910+
38911+ if (addr < module_addr_min_rx || addr > module_addr_max_rx)
38912+ return NULL;
38913+
38914+ mod = __module_address(addr);
38915+
38916 if (mod) {
38917 /* Make sure it's within the text section. */
38918- if (!within(addr, mod->module_init, mod->init_text_size)
38919- && !within(addr, mod->module_core, mod->core_text_size))
38920+ if (!within_module_init_rx(addr, mod) && !within_module_core_rx(addr, mod))
38921 mod = NULL;
38922 }
38923 return mod;
38924diff -urNp linux-2.6.30.4/kernel/mutex.c linux-2.6.30.4/kernel/mutex.c
38925--- linux-2.6.30.4/kernel/mutex.c 2009-07-24 17:47:51.000000000 -0400
38926+++ linux-2.6.30.4/kernel/mutex.c 2009-07-30 09:48:10.131672113 -0400
38927@@ -89,7 +89,7 @@ __mutex_lock_slowpath(atomic_t *lock_cou
39740 * 38928 *
39741 * This function is similar to (but not equivalent to) down(). 38929 * This function is similar to (but not equivalent to) down().
39742 */ 38930 */
@@ -39745,22 +38933,22 @@ diff -urNp linux-2.6.29.6/kernel/mutex.c linux-2.6.29.6/kernel/mutex.c
39745 { 38933 {
39746 might_sleep(); 38934 might_sleep();
39747 /* 38935 /*
39748diff -urNp linux-2.6.29.6/kernel/panic.c linux-2.6.29.6/kernel/panic.c 38936diff -urNp linux-2.6.30.4/kernel/panic.c linux-2.6.30.4/kernel/panic.c
39749--- linux-2.6.29.6/kernel/panic.c 2009-07-02 19:41:20.000000000 -0400 38937--- linux-2.6.30.4/kernel/panic.c 2009-07-24 17:47:51.000000000 -0400
39750+++ linux-2.6.29.6/kernel/panic.c 2009-07-23 17:34:32.208921522 -0400 38938+++ linux-2.6.30.4/kernel/panic.c 2009-07-30 09:48:10.131672113 -0400
39751@@ -361,7 +361,8 @@ EXPORT_SYMBOL(warn_slowpath); 38939@@ -390,7 +390,8 @@ EXPORT_SYMBOL(warn_slowpath_null);
39752 */ 38940 */
39753 void __stack_chk_fail(void) 38941 void __stack_chk_fail(void)
39754 { 38942 {
39755- panic("stack-protector: Kernel stack is corrupted"); 38943- panic("stack-protector: Kernel stack is corrupted in: %p\n",
39756+ dump_stack(); 38944+ dump_stack();
39757+ panic("stack-protector: Kernel stack is corrupted in: %pS\n", __builtin_return_address(0)); 38945+ panic("stack-protector: Kernel stack is corrupted in: %pS\n",
38946 __builtin_return_address(0));
39758 } 38947 }
39759 EXPORT_SYMBOL(__stack_chk_fail); 38948 EXPORT_SYMBOL(__stack_chk_fail);
39760 #endif 38949diff -urNp linux-2.6.30.4/kernel/pid.c linux-2.6.30.4/kernel/pid.c
39761diff -urNp linux-2.6.29.6/kernel/pid.c linux-2.6.29.6/kernel/pid.c 38950--- linux-2.6.30.4/kernel/pid.c 2009-07-24 17:47:51.000000000 -0400
39762--- linux-2.6.29.6/kernel/pid.c 2009-07-02 19:41:20.000000000 -0400 38951+++ linux-2.6.30.4/kernel/pid.c 2009-07-30 11:10:49.635626798 -0400
39763+++ linux-2.6.29.6/kernel/pid.c 2009-07-23 17:34:32.208921522 -0400
39764@@ -33,6 +33,7 @@ 38952@@ -33,6 +33,7 @@
39765 #include <linux/rculist.h> 38953 #include <linux/rculist.h>
39766 #include <linux/bootmem.h> 38954 #include <linux/bootmem.h>
@@ -39794,9 +38982,9 @@ diff -urNp linux-2.6.29.6/kernel/pid.c linux-2.6.29.6/kernel/pid.c
39794 } 38982 }
39795 38983
39796 EXPORT_SYMBOL(find_task_by_pid_type_ns); 38984 EXPORT_SYMBOL(find_task_by_pid_type_ns);
39797diff -urNp linux-2.6.29.6/kernel/posix-cpu-timers.c linux-2.6.29.6/kernel/posix-cpu-timers.c 38985diff -urNp linux-2.6.30.4/kernel/posix-cpu-timers.c linux-2.6.30.4/kernel/posix-cpu-timers.c
39798--- linux-2.6.29.6/kernel/posix-cpu-timers.c 2009-07-02 19:41:20.000000000 -0400 38986--- linux-2.6.30.4/kernel/posix-cpu-timers.c 2009-07-24 17:47:51.000000000 -0400
39799+++ linux-2.6.29.6/kernel/posix-cpu-timers.c 2009-07-23 17:34:32.209811964 -0400 38987+++ linux-2.6.30.4/kernel/posix-cpu-timers.c 2009-07-30 11:10:49.652340336 -0400
39800@@ -6,6 +6,7 @@ 38988@@ -6,6 +6,7 @@
39801 #include <linux/posix-timers.h> 38989 #include <linux/posix-timers.h>
39802 #include <linux/errno.h> 38990 #include <linux/errno.h>
@@ -39821,30 +39009,9 @@ diff -urNp linux-2.6.29.6/kernel/posix-cpu-timers.c linux-2.6.29.6/kernel/posix-
39821 if (psecs >= sig->rlim[RLIMIT_CPU].rlim_cur) { 39009 if (psecs >= sig->rlim[RLIMIT_CPU].rlim_cur) {
39822 /* 39010 /*
39823 * At the soft limit, send a SIGXCPU every second. 39011 * At the soft limit, send a SIGXCPU every second.
39824@@ -1419,17 +1422,17 @@ void run_posix_cpu_timers(struct task_st 39012diff -urNp linux-2.6.30.4/kernel/power/poweroff.c linux-2.6.30.4/kernel/power/poweroff.c
39825 * timer call will interfere. 39013--- linux-2.6.30.4/kernel/power/poweroff.c 2009-07-24 17:47:51.000000000 -0400
39826 */ 39014+++ linux-2.6.30.4/kernel/power/poweroff.c 2009-07-30 09:48:10.132674489 -0400
39827 list_for_each_entry_safe(timer, next, &firing, it.cpu.entry) {
39828- int firing;
39829+ int __firing;
39830 spin_lock(&timer->it_lock);
39831 list_del_init(&timer->it.cpu.entry);
39832- firing = timer->it.cpu.firing;
39833+ __firing = timer->it.cpu.firing;
39834 timer->it.cpu.firing = 0;
39835 /*
39836 * The firing flag is -1 if we collided with a reset
39837 * of the timer, which already reported this
39838 * almost-firing as an overrun. So don't generate an event.
39839 */
39840- if (likely(firing >= 0)) {
39841+ if (likely(__firing >= 0)) {
39842 cpu_timer_fire(timer);
39843 }
39844 spin_unlock(&timer->it_lock);
39845diff -urNp linux-2.6.29.6/kernel/power/poweroff.c linux-2.6.29.6/kernel/power/poweroff.c
39846--- linux-2.6.29.6/kernel/power/poweroff.c 2009-07-02 19:41:20.000000000 -0400
39847+++ linux-2.6.29.6/kernel/power/poweroff.c 2009-07-23 17:34:32.209811964 -0400
39848@@ -37,7 +37,7 @@ static struct sysrq_key_op sysrq_powerof 39015@@ -37,7 +37,7 @@ static struct sysrq_key_op sysrq_powerof
39849 .enable_mask = SYSRQ_ENABLE_BOOT, 39016 .enable_mask = SYSRQ_ENABLE_BOOT,
39850 }; 39017 };
@@ -39854,10 +39021,10 @@ diff -urNp linux-2.6.29.6/kernel/power/poweroff.c linux-2.6.29.6/kernel/power/po
39854 { 39021 {
39855 register_sysrq_key('o', &sysrq_poweroff_op); 39022 register_sysrq_key('o', &sysrq_poweroff_op);
39856 return 0; 39023 return 0;
39857diff -urNp linux-2.6.29.6/kernel/printk.c linux-2.6.29.6/kernel/printk.c 39024diff -urNp linux-2.6.30.4/kernel/printk.c linux-2.6.30.4/kernel/printk.c
39858--- linux-2.6.29.6/kernel/printk.c 2009-07-02 19:41:20.000000000 -0400 39025--- linux-2.6.30.4/kernel/printk.c 2009-07-24 17:47:51.000000000 -0400
39859+++ linux-2.6.29.6/kernel/printk.c 2009-07-23 17:34:32.209811964 -0400 39026+++ linux-2.6.30.4/kernel/printk.c 2009-07-30 11:10:49.653305213 -0400
39860@@ -253,6 +253,11 @@ int do_syslog(int type, char __user *buf 39027@@ -272,6 +272,11 @@ int do_syslog(int type, char __user *buf
39861 char c; 39028 char c;
39862 int error = 0; 39029 int error = 0;
39863 39030
@@ -39869,10 +39036,10 @@ diff -urNp linux-2.6.29.6/kernel/printk.c linux-2.6.29.6/kernel/printk.c
39869 error = security_syslog(type); 39036 error = security_syslog(type);
39870 if (error) 39037 if (error)
39871 return error; 39038 return error;
39872diff -urNp linux-2.6.29.6/kernel/ptrace.c linux-2.6.29.6/kernel/ptrace.c 39039diff -urNp linux-2.6.30.4/kernel/ptrace.c linux-2.6.30.4/kernel/ptrace.c
39873--- linux-2.6.29.6/kernel/ptrace.c 2009-07-02 19:41:20.000000000 -0400 39040--- linux-2.6.30.4/kernel/ptrace.c 2009-07-24 17:47:51.000000000 -0400
39874+++ linux-2.6.29.6/kernel/ptrace.c 2009-07-23 17:34:32.210756226 -0400 39041+++ linux-2.6.30.4/kernel/ptrace.c 2009-07-30 11:10:49.654304318 -0400
39875@@ -149,7 +149,7 @@ int __ptrace_may_access(struct task_stru 39042@@ -151,7 +151,7 @@ int __ptrace_may_access(struct task_stru
39876 cred->gid != tcred->egid || 39043 cred->gid != tcred->egid ||
39877 cred->gid != tcred->sgid || 39044 cred->gid != tcred->sgid ||
39878 cred->gid != tcred->gid) && 39045 cred->gid != tcred->gid) &&
@@ -39881,7 +39048,7 @@ diff -urNp linux-2.6.29.6/kernel/ptrace.c linux-2.6.29.6/kernel/ptrace.c
39881 rcu_read_unlock(); 39048 rcu_read_unlock();
39882 return -EPERM; 39049 return -EPERM;
39883 } 39050 }
39884@@ -157,7 +157,7 @@ int __ptrace_may_access(struct task_stru 39051@@ -159,7 +159,7 @@ int __ptrace_may_access(struct task_stru
39885 smp_rmb(); 39052 smp_rmb();
39886 if (task->mm) 39053 if (task->mm)
39887 dumpable = get_dumpable(task->mm); 39054 dumpable = get_dumpable(task->mm);
@@ -39890,7 +39057,7 @@ diff -urNp linux-2.6.29.6/kernel/ptrace.c linux-2.6.29.6/kernel/ptrace.c
39890 return -EPERM; 39057 return -EPERM;
39891 39058
39892 return security_ptrace_may_access(task, mode); 39059 return security_ptrace_may_access(task, mode);
39893@@ -221,7 +221,7 @@ repeat: 39060@@ -223,7 +223,7 @@ repeat:
39894 39061
39895 /* Go */ 39062 /* Go */
39896 task->ptrace |= PT_PTRACED; 39063 task->ptrace |= PT_PTRACED;
@@ -39899,7 +39066,7 @@ diff -urNp linux-2.6.29.6/kernel/ptrace.c linux-2.6.29.6/kernel/ptrace.c
39899 task->ptrace |= PT_PTRACE_CAP; 39066 task->ptrace |= PT_PTRACE_CAP;
39900 39067
39901 __ptrace_link(task, current); 39068 __ptrace_link(task, current);
39902@@ -612,6 +612,11 @@ SYSCALL_DEFINE4(ptrace, long, request, l 39069@@ -687,6 +687,11 @@ SYSCALL_DEFINE4(ptrace, long, request, l
39903 if (ret < 0) 39070 if (ret < 0)
39904 goto out_put_task_struct; 39071 goto out_put_task_struct;
39905 39072
@@ -39909,11 +39076,11 @@ diff -urNp linux-2.6.29.6/kernel/ptrace.c linux-2.6.29.6/kernel/ptrace.c
39909+ } 39076+ }
39910+ 39077+
39911 ret = arch_ptrace(child, request, addr, data); 39078 ret = arch_ptrace(child, request, addr, data);
39912 if (ret < 0) 39079
39913 goto out_put_task_struct; 39080 out_put_task_struct:
39914diff -urNp linux-2.6.29.6/kernel/rcupreempt_trace.c linux-2.6.29.6/kernel/rcupreempt_trace.c 39081diff -urNp linux-2.6.30.4/kernel/rcupreempt_trace.c linux-2.6.30.4/kernel/rcupreempt_trace.c
39915--- linux-2.6.29.6/kernel/rcupreempt_trace.c 2009-07-02 19:41:20.000000000 -0400 39082--- linux-2.6.30.4/kernel/rcupreempt_trace.c 2009-07-24 17:47:51.000000000 -0400
39916+++ linux-2.6.29.6/kernel/rcupreempt_trace.c 2009-07-23 18:40:28.721271955 -0400 39083+++ linux-2.6.30.4/kernel/rcupreempt_trace.c 2009-07-30 09:48:10.132674489 -0400
39917@@ -261,17 +261,17 @@ static ssize_t rcuctrs_read(struct file 39084@@ -261,17 +261,17 @@ static ssize_t rcuctrs_read(struct file
39918 return bcount; 39085 return bcount;
39919 } 39086 }
@@ -39935,9 +39102,9 @@ diff -urNp linux-2.6.29.6/kernel/rcupreempt_trace.c linux-2.6.29.6/kernel/rcupre
39935 .owner = THIS_MODULE, 39102 .owner = THIS_MODULE,
39936 .read = rcuctrs_read, 39103 .read = rcuctrs_read,
39937 }; 39104 };
39938diff -urNp linux-2.6.29.6/kernel/rcutree_trace.c linux-2.6.29.6/kernel/rcutree_trace.c 39105diff -urNp linux-2.6.30.4/kernel/rcutree_trace.c linux-2.6.30.4/kernel/rcutree_trace.c
39939--- linux-2.6.29.6/kernel/rcutree_trace.c 2009-07-02 19:41:20.000000000 -0400 39106--- linux-2.6.30.4/kernel/rcutree_trace.c 2009-07-24 17:47:51.000000000 -0400
39940+++ linux-2.6.29.6/kernel/rcutree_trace.c 2009-07-23 18:40:28.721271955 -0400 39107+++ linux-2.6.30.4/kernel/rcutree_trace.c 2009-07-30 09:48:10.132674489 -0400
39941@@ -88,7 +88,7 @@ static int rcudata_open(struct inode *in 39108@@ -88,7 +88,7 @@ static int rcudata_open(struct inode *in
39942 return single_open(file, show_rcudata, NULL); 39109 return single_open(file, show_rcudata, NULL);
39943 } 39110 }
@@ -39947,7 +39114,7 @@ diff -urNp linux-2.6.29.6/kernel/rcutree_trace.c linux-2.6.29.6/kernel/rcutree_t
39947 .owner = THIS_MODULE, 39114 .owner = THIS_MODULE,
39948 .open = rcudata_open, 39115 .open = rcudata_open,
39949 .read = seq_read, 39116 .read = seq_read,
39950@@ -138,7 +138,7 @@ static int rcudata_csv_open(struct inode 39117@@ -136,7 +136,7 @@ static int rcudata_csv_open(struct inode
39951 return single_open(file, show_rcudata_csv, NULL); 39118 return single_open(file, show_rcudata_csv, NULL);
39952 } 39119 }
39953 39120
@@ -39956,7 +39123,7 @@ diff -urNp linux-2.6.29.6/kernel/rcutree_trace.c linux-2.6.29.6/kernel/rcutree_t
39956 .owner = THIS_MODULE, 39123 .owner = THIS_MODULE,
39957 .open = rcudata_csv_open, 39124 .open = rcudata_csv_open,
39958 .read = seq_read, 39125 .read = seq_read,
39959@@ -185,7 +185,7 @@ static int rcuhier_open(struct inode *in 39126@@ -183,7 +183,7 @@ static int rcuhier_open(struct inode *in
39960 return single_open(file, show_rcuhier, NULL); 39127 return single_open(file, show_rcuhier, NULL);
39961 } 39128 }
39962 39129
@@ -39965,7 +39132,7 @@ diff -urNp linux-2.6.29.6/kernel/rcutree_trace.c linux-2.6.29.6/kernel/rcutree_t
39965 .owner = THIS_MODULE, 39132 .owner = THIS_MODULE,
39966 .open = rcuhier_open, 39133 .open = rcuhier_open,
39967 .read = seq_read, 39134 .read = seq_read,
39968@@ -207,7 +207,7 @@ static int rcugp_open(struct inode *inod 39135@@ -205,7 +205,7 @@ static int rcugp_open(struct inode *inod
39969 return single_open(file, show_rcugp, NULL); 39136 return single_open(file, show_rcugp, NULL);
39970 } 39137 }
39971 39138
@@ -39974,9 +39141,9 @@ diff -urNp linux-2.6.29.6/kernel/rcutree_trace.c linux-2.6.29.6/kernel/rcutree_t
39974 .owner = THIS_MODULE, 39141 .owner = THIS_MODULE,
39975 .open = rcugp_open, 39142 .open = rcugp_open,
39976 .read = seq_read, 39143 .read = seq_read,
39977diff -urNp linux-2.6.29.6/kernel/relay.c linux-2.6.29.6/kernel/relay.c 39144diff -urNp linux-2.6.30.4/kernel/relay.c linux-2.6.30.4/kernel/relay.c
39978--- linux-2.6.29.6/kernel/relay.c 2009-07-02 19:41:20.000000000 -0400 39145--- linux-2.6.30.4/kernel/relay.c 2009-07-24 17:47:51.000000000 -0400
39979+++ linux-2.6.29.6/kernel/relay.c 2009-07-23 18:40:27.474712638 -0400 39146+++ linux-2.6.30.4/kernel/relay.c 2009-07-30 09:48:10.133766067 -0400
39980@@ -60,7 +60,7 @@ static int relay_buf_fault(struct vm_are 39147@@ -60,7 +60,7 @@ static int relay_buf_fault(struct vm_are
39981 /* 39148 /*
39982 * vm_ops for relay file mappings. 39149 * vm_ops for relay file mappings.
@@ -39995,9 +39162,9 @@ diff -urNp linux-2.6.29.6/kernel/relay.c linux-2.6.29.6/kernel/relay.c
39995 return ret; 39162 return ret;
39996 39163
39997 if (read_start + ret == nonpad_end) 39164 if (read_start + ret == nonpad_end)
39998diff -urNp linux-2.6.29.6/kernel/resource.c linux-2.6.29.6/kernel/resource.c 39165diff -urNp linux-2.6.30.4/kernel/resource.c linux-2.6.30.4/kernel/resource.c
39999--- linux-2.6.29.6/kernel/resource.c 2009-07-02 19:41:20.000000000 -0400 39166--- linux-2.6.30.4/kernel/resource.c 2009-07-24 17:47:51.000000000 -0400
40000+++ linux-2.6.29.6/kernel/resource.c 2009-07-23 17:34:32.210756226 -0400 39167+++ linux-2.6.30.4/kernel/resource.c 2009-07-30 11:10:49.657454572 -0400
40001@@ -132,8 +132,18 @@ static const struct file_operations proc 39168@@ -132,8 +132,18 @@ static const struct file_operations proc
40002 39169
40003 static int __init ioresources_init(void) 39170 static int __init ioresources_init(void)
@@ -40017,10 +39184,10 @@ diff -urNp linux-2.6.29.6/kernel/resource.c linux-2.6.29.6/kernel/resource.c
40017 return 0; 39184 return 0;
40018 } 39185 }
40019 __initcall(ioresources_init); 39186 __initcall(ioresources_init);
40020diff -urNp linux-2.6.29.6/kernel/sched.c linux-2.6.29.6/kernel/sched.c 39187diff -urNp linux-2.6.30.4/kernel/sched.c linux-2.6.30.4/kernel/sched.c
40021--- linux-2.6.29.6/kernel/sched.c 2009-07-02 19:41:20.000000000 -0400 39188--- linux-2.6.30.4/kernel/sched.c 2009-07-30 20:32:40.551917543 -0400
40022+++ linux-2.6.29.6/kernel/sched.c 2009-07-23 18:40:27.477441834 -0400 39189+++ linux-2.6.30.4/kernel/sched.c 2009-07-30 20:32:48.093586870 -0400
40023@@ -801,7 +801,7 @@ static int sched_feat_open(struct inode 39190@@ -819,7 +819,7 @@ static int sched_feat_open(struct inode
40024 return single_open(filp, sched_feat_show, NULL); 39191 return single_open(filp, sched_feat_show, NULL);
40025 } 39192 }
40026 39193
@@ -40029,7 +39196,7 @@ diff -urNp linux-2.6.29.6/kernel/sched.c linux-2.6.29.6/kernel/sched.c
40029 .open = sched_feat_open, 39196 .open = sched_feat_open,
40030 .write = sched_feat_write, 39197 .write = sched_feat_write,
40031 .read = seq_read, 39198 .read = seq_read,
40032@@ -5175,6 +5175,8 @@ int can_nice(const struct task_struct *p 39199@@ -5663,6 +5663,8 @@ int can_nice(const struct task_struct *p
40033 /* convert nice value [19,-20] to rlimit style value [1,40] */ 39200 /* convert nice value [19,-20] to rlimit style value [1,40] */
40034 int nice_rlim = 20 - nice; 39201 int nice_rlim = 20 - nice;
40035 39202
@@ -40038,7 +39205,7 @@ diff -urNp linux-2.6.29.6/kernel/sched.c linux-2.6.29.6/kernel/sched.c
40038 return (nice_rlim <= p->signal->rlim[RLIMIT_NICE].rlim_cur || 39205 return (nice_rlim <= p->signal->rlim[RLIMIT_NICE].rlim_cur ||
40039 capable(CAP_SYS_NICE)); 39206 capable(CAP_SYS_NICE));
40040 } 39207 }
40041@@ -5208,7 +5210,8 @@ SYSCALL_DEFINE1(nice, int, increment) 39208@@ -5696,7 +5698,8 @@ SYSCALL_DEFINE1(nice, int, increment)
40042 if (nice > 19) 39209 if (nice > 19)
40043 nice = 19; 39210 nice = 19;
40044 39211
@@ -40048,7 +39215,7 @@ diff -urNp linux-2.6.29.6/kernel/sched.c linux-2.6.29.6/kernel/sched.c
40048 return -EPERM; 39215 return -EPERM;
40049 39216
40050 retval = security_task_setnice(current, nice); 39217 retval = security_task_setnice(current, nice);
40051@@ -5350,6 +5353,8 @@ recheck: 39218@@ -5838,6 +5841,8 @@ recheck:
40052 if (rt_policy(policy)) { 39219 if (rt_policy(policy)) {
40053 unsigned long rlim_rtprio; 39220 unsigned long rlim_rtprio;
40054 39221
@@ -40057,7 +39224,7 @@ diff -urNp linux-2.6.29.6/kernel/sched.c linux-2.6.29.6/kernel/sched.c
40057 if (!lock_task_sighand(p, &flags)) 39224 if (!lock_task_sighand(p, &flags))
40058 return -ESRCH; 39225 return -ESRCH;
40059 rlim_rtprio = p->signal->rlim[RLIMIT_RTPRIO].rlim_cur; 39226 rlim_rtprio = p->signal->rlim[RLIMIT_RTPRIO].rlim_cur;
40060@@ -6497,7 +6502,7 @@ static struct ctl_table sd_ctl_dir[] = { 39227@@ -6980,7 +6985,7 @@ static struct ctl_table sd_ctl_dir[] = {
40061 .procname = "sched_domain", 39228 .procname = "sched_domain",
40062 .mode = 0555, 39229 .mode = 0555,
40063 }, 39230 },
@@ -40066,7 +39233,7 @@ diff -urNp linux-2.6.29.6/kernel/sched.c linux-2.6.29.6/kernel/sched.c
40066 }; 39233 };
40067 39234
40068 static struct ctl_table sd_ctl_root[] = { 39235 static struct ctl_table sd_ctl_root[] = {
40069@@ -6507,7 +6512,7 @@ static struct ctl_table sd_ctl_root[] = 39236@@ -6990,7 +6995,7 @@ static struct ctl_table sd_ctl_root[] =
40070 .mode = 0555, 39237 .mode = 0555,
40071 .child = sd_ctl_dir, 39238 .child = sd_ctl_dir,
40072 }, 39239 },
@@ -40075,10 +39242,10 @@ diff -urNp linux-2.6.29.6/kernel/sched.c linux-2.6.29.6/kernel/sched.c
40075 }; 39242 };
40076 39243
40077 static struct ctl_table *sd_alloc_ctl_entry(int n) 39244 static struct ctl_table *sd_alloc_ctl_entry(int n)
40078diff -urNp linux-2.6.29.6/kernel/signal.c linux-2.6.29.6/kernel/signal.c 39245diff -urNp linux-2.6.30.4/kernel/signal.c linux-2.6.30.4/kernel/signal.c
40079--- linux-2.6.29.6/kernel/signal.c 2009-07-02 19:41:20.000000000 -0400 39246--- linux-2.6.30.4/kernel/signal.c 2009-07-24 17:47:51.000000000 -0400
40080+++ linux-2.6.29.6/kernel/signal.c 2009-07-23 17:34:32.213855277 -0400 39247+++ linux-2.6.30.4/kernel/signal.c 2009-07-30 11:10:49.687338803 -0400
40081@@ -198,6 +198,9 @@ static struct sigqueue *__sigqueue_alloc 39248@@ -209,6 +209,9 @@ static struct sigqueue *__sigqueue_alloc
40082 */ 39249 */
40083 user = get_uid(__task_cred(t)->user); 39250 user = get_uid(__task_cred(t)->user);
40084 atomic_inc(&user->sigpending); 39251 atomic_inc(&user->sigpending);
@@ -40088,7 +39255,7 @@ diff -urNp linux-2.6.29.6/kernel/signal.c linux-2.6.29.6/kernel/signal.c
40088 if (override_rlimit || 39255 if (override_rlimit ||
40089 atomic_read(&user->sigpending) <= 39256 atomic_read(&user->sigpending) <=
40090 t->signal->rlim[RLIMIT_SIGPENDING].rlim_cur) 39257 t->signal->rlim[RLIMIT_SIGPENDING].rlim_cur)
40091@@ -611,6 +614,9 @@ static int check_kill_permission(int sig 39258@@ -622,6 +625,9 @@ static int check_kill_permission(int sig
40092 } 39259 }
40093 } 39260 }
40094 39261
@@ -40098,7 +39265,7 @@ diff -urNp linux-2.6.29.6/kernel/signal.c linux-2.6.29.6/kernel/signal.c
40098 return security_task_kill(t, info, sig, 0); 39265 return security_task_kill(t, info, sig, 0);
40099 } 39266 }
40100 39267
40101@@ -903,8 +909,8 @@ static void print_fatal_signal(struct pt 39268@@ -931,8 +937,8 @@ static void print_fatal_signal(struct pt
40102 for (i = 0; i < 16; i++) { 39269 for (i = 0; i < 16; i++) {
40103 unsigned char insn; 39270 unsigned char insn;
40104 39271
@@ -40109,7 +39276,7 @@ diff -urNp linux-2.6.29.6/kernel/signal.c linux-2.6.29.6/kernel/signal.c
40109 } 39276 }
40110 } 39277 }
40111 #endif 39278 #endif
40112@@ -929,7 +935,7 @@ __group_send_sig_info(int sig, struct si 39279@@ -957,7 +963,7 @@ __group_send_sig_info(int sig, struct si
40113 return send_signal(sig, info, p, 1); 39280 return send_signal(sig, info, p, 1);
40114 } 39281 }
40115 39282
@@ -40118,7 +39285,7 @@ diff -urNp linux-2.6.29.6/kernel/signal.c linux-2.6.29.6/kernel/signal.c
40118 specific_send_sig_info(int sig, struct siginfo *info, struct task_struct *t) 39285 specific_send_sig_info(int sig, struct siginfo *info, struct task_struct *t)
40119 { 39286 {
40120 return send_signal(sig, info, t, 0); 39287 return send_signal(sig, info, t, 0);
40121@@ -969,6 +975,9 @@ force_sig_info(int sig, struct siginfo * 39288@@ -997,6 +1003,9 @@ force_sig_info(int sig, struct siginfo *
40122 ret = specific_send_sig_info(sig, info, t); 39289 ret = specific_send_sig_info(sig, info, t);
40123 spin_unlock_irqrestore(&t->sighand->siglock, flags); 39290 spin_unlock_irqrestore(&t->sighand->siglock, flags);
40124 39291
@@ -40128,7 +39295,7 @@ diff -urNp linux-2.6.29.6/kernel/signal.c linux-2.6.29.6/kernel/signal.c
40128 return ret; 39295 return ret;
40129 } 39296 }
40130 39297
40131@@ -1043,6 +1052,8 @@ int group_send_sig_info(int sig, struct 39298@@ -1071,6 +1080,8 @@ int group_send_sig_info(int sig, struct
40132 ret = __group_send_sig_info(sig, info, p); 39299 ret = __group_send_sig_info(sig, info, p);
40133 unlock_task_sighand(p, &flags); 39300 unlock_task_sighand(p, &flags);
40134 } 39301 }
@@ -40137,25 +39304,10 @@ diff -urNp linux-2.6.29.6/kernel/signal.c linux-2.6.29.6/kernel/signal.c
40137 } 39304 }
40138 39305
40139 return ret; 39306 return ret;
40140diff -urNp linux-2.6.29.6/kernel/softirq.c linux-2.6.29.6/kernel/softirq.c 39307diff -urNp linux-2.6.30.4/kernel/sys.c linux-2.6.30.4/kernel/sys.c
40141--- linux-2.6.29.6/kernel/softirq.c 2009-07-02 19:41:20.000000000 -0400 39308--- linux-2.6.30.4/kernel/sys.c 2009-07-24 17:47:51.000000000 -0400
40142+++ linux-2.6.29.6/kernel/softirq.c 2009-07-23 17:34:32.213855277 -0400 39309+++ linux-2.6.30.4/kernel/sys.c 2009-07-30 11:10:49.695716903 -0400
40143@@ -450,9 +450,9 @@ void tasklet_kill(struct tasklet_struct 39310@@ -132,6 +132,12 @@ static int set_one_prio(struct task_stru
40144 printk("Attempt to kill tasklet from interrupt\n");
40145
40146 while (test_and_set_bit(TASKLET_STATE_SCHED, &t->state)) {
40147- do
40148+ do {
40149 yield();
40150- while (test_bit(TASKLET_STATE_SCHED, &t->state));
40151+ } while (test_bit(TASKLET_STATE_SCHED, &t->state));
40152 }
40153 tasklet_unlock_wait(t);
40154 clear_bit(TASKLET_STATE_SCHED, &t->state);
40155diff -urNp linux-2.6.29.6/kernel/sys.c linux-2.6.29.6/kernel/sys.c
40156--- linux-2.6.29.6/kernel/sys.c 2009-07-02 19:41:20.000000000 -0400
40157+++ linux-2.6.29.6/kernel/sys.c 2009-07-23 17:34:32.214754476 -0400
40158@@ -131,6 +131,12 @@ static int set_one_prio(struct task_stru
40159 error = -EACCES; 39311 error = -EACCES;
40160 goto out; 39312 goto out;
40161 } 39313 }
@@ -40168,15 +39320,7 @@ diff -urNp linux-2.6.29.6/kernel/sys.c linux-2.6.29.6/kernel/sys.c
40168 no_nice = security_task_setnice(p, niceval); 39320 no_nice = security_task_setnice(p, niceval);
40169 if (no_nice) { 39321 if (no_nice) {
40170 error = no_nice; 39322 error = no_nice;
40171@@ -503,6 +509,7 @@ SYSCALL_DEFINE2(setregid, gid_t, rgid, g 39323@@ -508,6 +514,9 @@ SYSCALL_DEFINE2(setregid, gid_t, rgid, g
40172 else
40173 goto error;
40174 }
40175+
40176 if (egid != (gid_t) -1) {
40177 if (old->gid == egid ||
40178 old->egid == egid ||
40179@@ -513,6 +520,9 @@ SYSCALL_DEFINE2(setregid, gid_t, rgid, g
40180 goto error; 39324 goto error;
40181 } 39325 }
40182 39326
@@ -40186,7 +39330,7 @@ diff -urNp linux-2.6.29.6/kernel/sys.c linux-2.6.29.6/kernel/sys.c
40186 if (rgid != (gid_t) -1 || 39330 if (rgid != (gid_t) -1 ||
40187 (egid != (gid_t) -1 && egid != old->gid)) 39331 (egid != (gid_t) -1 && egid != old->gid))
40188 new->sgid = new->egid; 39332 new->sgid = new->egid;
40189@@ -546,6 +556,10 @@ SYSCALL_DEFINE1(setgid, gid_t, gid) 39333@@ -541,6 +550,10 @@ SYSCALL_DEFINE1(setgid, gid_t, gid)
40190 goto error; 39334 goto error;
40191 39335
40192 retval = -EPERM; 39336 retval = -EPERM;
@@ -40197,7 +39341,7 @@ diff -urNp linux-2.6.29.6/kernel/sys.c linux-2.6.29.6/kernel/sys.c
40197 if (capable(CAP_SETGID)) 39341 if (capable(CAP_SETGID))
40198 new->gid = new->egid = new->sgid = new->fsgid = gid; 39342 new->gid = new->egid = new->sgid = new->fsgid = gid;
40199 else if (gid == old->gid || gid == old->sgid) 39343 else if (gid == old->gid || gid == old->sgid)
40200@@ -636,6 +650,9 @@ SYSCALL_DEFINE2(setreuid, uid_t, ruid, u 39344@@ -631,6 +644,9 @@ SYSCALL_DEFINE2(setreuid, uid_t, ruid, u
40201 goto error; 39345 goto error;
40202 } 39346 }
40203 39347
@@ -40207,7 +39351,7 @@ diff -urNp linux-2.6.29.6/kernel/sys.c linux-2.6.29.6/kernel/sys.c
40207 if (new->uid != old->uid) { 39351 if (new->uid != old->uid) {
40208 retval = set_user(new); 39352 retval = set_user(new);
40209 if (retval < 0) 39353 if (retval < 0)
40210@@ -684,6 +701,12 @@ SYSCALL_DEFINE1(setuid, uid_t, uid) 39354@@ -679,6 +695,12 @@ SYSCALL_DEFINE1(setuid, uid_t, uid)
40211 goto error; 39355 goto error;
40212 39356
40213 retval = -EPERM; 39357 retval = -EPERM;
@@ -40220,7 +39364,7 @@ diff -urNp linux-2.6.29.6/kernel/sys.c linux-2.6.29.6/kernel/sys.c
40220 if (capable(CAP_SETUID)) { 39364 if (capable(CAP_SETUID)) {
40221 new->suid = new->uid = uid; 39365 new->suid = new->uid = uid;
40222 if (uid != old->uid) { 39366 if (uid != old->uid) {
40223@@ -741,6 +764,9 @@ SYSCALL_DEFINE3(setresuid, uid_t, ruid, 39367@@ -736,6 +758,9 @@ SYSCALL_DEFINE3(setresuid, uid_t, ruid,
40224 goto error; 39368 goto error;
40225 } 39369 }
40226 39370
@@ -40230,7 +39374,7 @@ diff -urNp linux-2.6.29.6/kernel/sys.c linux-2.6.29.6/kernel/sys.c
40230 if (ruid != (uid_t) -1) { 39374 if (ruid != (uid_t) -1) {
40231 new->uid = ruid; 39375 new->uid = ruid;
40232 if (ruid != old->uid) { 39376 if (ruid != old->uid) {
40233@@ -809,6 +835,9 @@ SYSCALL_DEFINE3(setresgid, gid_t, rgid, 39377@@ -804,6 +829,9 @@ SYSCALL_DEFINE3(setresgid, gid_t, rgid,
40234 goto error; 39378 goto error;
40235 } 39379 }
40236 39380
@@ -40240,7 +39384,7 @@ diff -urNp linux-2.6.29.6/kernel/sys.c linux-2.6.29.6/kernel/sys.c
40240 if (rgid != (gid_t) -1) 39384 if (rgid != (gid_t) -1)
40241 new->gid = rgid; 39385 new->gid = rgid;
40242 if (egid != (gid_t) -1) 39386 if (egid != (gid_t) -1)
40243@@ -858,6 +887,9 @@ SYSCALL_DEFINE1(setfsuid, uid_t, uid) 39387@@ -853,6 +881,9 @@ SYSCALL_DEFINE1(setfsuid, uid_t, uid)
40244 if (security_task_setuid(uid, (uid_t)-1, (uid_t)-1, LSM_SETID_FS) < 0) 39388 if (security_task_setuid(uid, (uid_t)-1, (uid_t)-1, LSM_SETID_FS) < 0)
40245 goto error; 39389 goto error;
40246 39390
@@ -40250,7 +39394,7 @@ diff -urNp linux-2.6.29.6/kernel/sys.c linux-2.6.29.6/kernel/sys.c
40250 if (uid == old->uid || uid == old->euid || 39394 if (uid == old->uid || uid == old->euid ||
40251 uid == old->suid || uid == old->fsuid || 39395 uid == old->suid || uid == old->fsuid ||
40252 capable(CAP_SETUID)) { 39396 capable(CAP_SETUID)) {
40253@@ -898,6 +930,9 @@ SYSCALL_DEFINE1(setfsgid, gid_t, gid) 39397@@ -893,6 +924,9 @@ SYSCALL_DEFINE1(setfsgid, gid_t, gid)
40254 if (gid == old->gid || gid == old->egid || 39398 if (gid == old->gid || gid == old->egid ||
40255 gid == old->sgid || gid == old->fsgid || 39399 gid == old->sgid || gid == old->fsgid ||
40256 capable(CAP_SETGID)) { 39400 capable(CAP_SETGID)) {
@@ -40260,19 +39404,7 @@ diff -urNp linux-2.6.29.6/kernel/sys.c linux-2.6.29.6/kernel/sys.c
40260 if (gid != old_fsgid) { 39404 if (gid != old_fsgid) {
40261 new->fsgid = gid; 39405 new->fsgid = gid;
40262 goto change_okay; 39406 goto change_okay;
40263@@ -974,7 +1009,10 @@ SYSCALL_DEFINE2(setpgid, pid_t, pid, pid 39407@@ -1725,7 +1759,7 @@ SYSCALL_DEFINE5(prctl, int, option, unsi
40264 write_lock_irq(&tasklist_lock);
40265
40266 err = -ESRCH;
40267- p = find_task_by_vpid(pid);
40268+ /* grsec: replaced find_task_by_vpid with equivalent call which
40269+ lacks the chroot restriction
40270+ */
40271+ p = pid_task(find_pid_ns(pid, current->nsproxy->pid_ns), PIDTYPE_PID);
40272 if (!p)
40273 goto out;
40274
40275@@ -1732,7 +1770,7 @@ SYSCALL_DEFINE5(prctl, int, option, unsi
40276 error = get_dumpable(me->mm); 39408 error = get_dumpable(me->mm);
40277 break; 39409 break;
40278 case PR_SET_DUMPABLE: 39410 case PR_SET_DUMPABLE:
@@ -40281,10 +39413,10 @@ diff -urNp linux-2.6.29.6/kernel/sys.c linux-2.6.29.6/kernel/sys.c
40281 error = -EINVAL; 39413 error = -EINVAL;
40282 break; 39414 break;
40283 } 39415 }
40284diff -urNp linux-2.6.29.6/kernel/sysctl.c linux-2.6.29.6/kernel/sysctl.c 39416diff -urNp linux-2.6.30.4/kernel/sysctl.c linux-2.6.30.4/kernel/sysctl.c
40285--- linux-2.6.29.6/kernel/sysctl.c 2009-07-02 19:41:20.000000000 -0400 39417--- linux-2.6.30.4/kernel/sysctl.c 2009-07-24 17:47:51.000000000 -0400
40286+++ linux-2.6.29.6/kernel/sysctl.c 2009-07-23 17:34:32.215815558 -0400 39418+++ linux-2.6.30.4/kernel/sysctl.c 2009-08-04 17:52:34.402065998 -0400
40287@@ -61,6 +61,13 @@ 39419@@ -62,6 +62,13 @@
40288 static int deprecated_sysctl_warning(struct __sysctl_args *args); 39420 static int deprecated_sysctl_warning(struct __sysctl_args *args);
40289 39421
40290 #if defined(CONFIG_SYSCTL) 39422 #if defined(CONFIG_SYSCTL)
@@ -40298,7 +39430,7 @@ diff -urNp linux-2.6.29.6/kernel/sysctl.c linux-2.6.29.6/kernel/sysctl.c
40298 39430
40299 /* External variables not in a header file. */ 39431 /* External variables not in a header file. */
40300 extern int C_A_D; 39432 extern int C_A_D;
40301@@ -155,6 +162,7 @@ static int proc_do_cad_pid(struct ctl_ta 39433@@ -159,6 +166,7 @@ static int proc_do_cad_pid(struct ctl_ta
40302 static int proc_taint(struct ctl_table *table, int write, struct file *filp, 39434 static int proc_taint(struct ctl_table *table, int write, struct file *filp,
40303 void __user *buffer, size_t *lenp, loff_t *ppos); 39435 void __user *buffer, size_t *lenp, loff_t *ppos);
40304 #endif 39436 #endif
@@ -40306,7 +39438,7 @@ diff -urNp linux-2.6.29.6/kernel/sysctl.c linux-2.6.29.6/kernel/sysctl.c
40306 39438
40307 static struct ctl_table root_table[]; 39439 static struct ctl_table root_table[];
40308 static struct ctl_table_root sysctl_table_root; 39440 static struct ctl_table_root sysctl_table_root;
40309@@ -187,6 +195,21 @@ extern struct ctl_table epoll_table[]; 39441@@ -191,6 +199,21 @@ extern struct ctl_table epoll_table[];
40310 int sysctl_legacy_va_layout; 39442 int sysctl_legacy_va_layout;
40311 #endif 39443 #endif
40312 39444
@@ -40328,11 +39460,10 @@ diff -urNp linux-2.6.29.6/kernel/sysctl.c linux-2.6.29.6/kernel/sysctl.c
40328 extern int prove_locking; 39460 extern int prove_locking;
40329 extern int lock_stat; 39461 extern int lock_stat;
40330 39462
40331@@ -897,6 +920,25 @@ static struct ctl_table kern_table[] = { 39463@@ -242,6 +265,24 @@ static int max_wakeup_granularity_ns = N
40332 .proc_handler = &scan_unevictable_handler,
40333 },
40334 #endif 39464 #endif
40335+ 39465
39466 static struct ctl_table kern_table[] = {
40336+#if defined(CONFIG_GRKERNSEC_SYSCTL) || defined(CONFIG_GRKERNSEC_MODSTOP) 39467+#if defined(CONFIG_GRKERNSEC_SYSCTL) || defined(CONFIG_GRKERNSEC_MODSTOP)
40337+ { 39468+ {
40338+ .ctl_name = CTL_UNNUMBERED, 39469+ .ctl_name = CTL_UNNUMBERED,
@@ -40351,10 +39482,10 @@ diff -urNp linux-2.6.29.6/kernel/sysctl.c linux-2.6.29.6/kernel/sysctl.c
40351+ }, 39482+ },
40352+#endif 39483+#endif
40353+ 39484+
40354 /* 39485 #ifdef CONFIG_SCHED_DEBUG
40355 * NOTE: do not add new entries to this table unless you have read 39486 {
40356 * Documentation/sysctl/ctl_unnumbered.txt 39487 .ctl_name = CTL_UNNUMBERED,
40357@@ -1634,6 +1676,8 @@ static int do_sysctl_strategy(struct ctl 39488@@ -1657,6 +1698,8 @@ static int do_sysctl_strategy(struct ctl
40358 return 0; 39489 return 0;
40359 } 39490 }
40360 39491
@@ -40363,7 +39494,7 @@ diff -urNp linux-2.6.29.6/kernel/sysctl.c linux-2.6.29.6/kernel/sysctl.c
40363 static int parse_table(int __user *name, int nlen, 39494 static int parse_table(int __user *name, int nlen,
40364 void __user *oldval, size_t __user *oldlenp, 39495 void __user *oldval, size_t __user *oldlenp,
40365 void __user *newval, size_t newlen, 39496 void __user *newval, size_t newlen,
40366@@ -1652,7 +1696,7 @@ repeat: 39497@@ -1675,7 +1718,7 @@ repeat:
40367 if (n == table->ctl_name) { 39498 if (n == table->ctl_name) {
40368 int error; 39499 int error;
40369 if (table->child) { 39500 if (table->child) {
@@ -40372,7 +39503,7 @@ diff -urNp linux-2.6.29.6/kernel/sysctl.c linux-2.6.29.6/kernel/sysctl.c
40372 return -EPERM; 39503 return -EPERM;
40373 name++; 39504 name++;
40374 nlen--; 39505 nlen--;
40375@@ -1737,6 +1781,33 @@ int sysctl_perm(struct ctl_table_root *r 39506@@ -1760,6 +1803,33 @@ int sysctl_perm(struct ctl_table_root *r
40376 int error; 39507 int error;
40377 int mode; 39508 int mode;
40378 39509
@@ -40406,9 +39537,9 @@ diff -urNp linux-2.6.29.6/kernel/sysctl.c linux-2.6.29.6/kernel/sysctl.c
40406 error = security_sysctl(table, op & (MAY_READ | MAY_WRITE | MAY_EXEC)); 39537 error = security_sysctl(table, op & (MAY_READ | MAY_WRITE | MAY_EXEC));
40407 if (error) 39538 if (error)
40408 return error; 39539 return error;
40409diff -urNp linux-2.6.29.6/kernel/taskstats.c linux-2.6.29.6/kernel/taskstats.c 39540diff -urNp linux-2.6.30.4/kernel/taskstats.c linux-2.6.30.4/kernel/taskstats.c
40410--- linux-2.6.29.6/kernel/taskstats.c 2009-07-02 19:41:20.000000000 -0400 39541--- linux-2.6.30.4/kernel/taskstats.c 2009-07-24 17:47:51.000000000 -0400
40411+++ linux-2.6.29.6/kernel/taskstats.c 2009-07-23 17:34:32.215815558 -0400 39542+++ linux-2.6.30.4/kernel/taskstats.c 2009-07-30 11:10:49.711410081 -0400
40412@@ -26,9 +26,12 @@ 39543@@ -26,9 +26,12 @@
40413 #include <linux/cgroup.h> 39544 #include <linux/cgroup.h>
40414 #include <linux/fs.h> 39545 #include <linux/fs.h>
@@ -40432,9 +39563,9 @@ diff -urNp linux-2.6.29.6/kernel/taskstats.c linux-2.6.29.6/kernel/taskstats.c
40432 if (!alloc_cpumask_var(&mask, GFP_KERNEL)) 39563 if (!alloc_cpumask_var(&mask, GFP_KERNEL))
40433 return -ENOMEM; 39564 return -ENOMEM;
40434 39565
40435diff -urNp linux-2.6.29.6/kernel/time/tick-broadcast.c linux-2.6.29.6/kernel/time/tick-broadcast.c 39566diff -urNp linux-2.6.30.4/kernel/time/tick-broadcast.c linux-2.6.30.4/kernel/time/tick-broadcast.c
40436--- linux-2.6.29.6/kernel/time/tick-broadcast.c 2009-07-02 19:41:20.000000000 -0400 39567--- linux-2.6.30.4/kernel/time/tick-broadcast.c 2009-07-24 17:47:51.000000000 -0400
40437+++ linux-2.6.29.6/kernel/time/tick-broadcast.c 2009-07-23 17:34:32.216793372 -0400 39568+++ linux-2.6.30.4/kernel/time/tick-broadcast.c 2009-07-30 09:48:10.137714626 -0400
40438@@ -116,7 +116,7 @@ int tick_device_uses_broadcast(struct cl 39569@@ -116,7 +116,7 @@ int tick_device_uses_broadcast(struct cl
40439 * then clear the broadcast bit. 39570 * then clear the broadcast bit.
40440 */ 39571 */
@@ -40444,9 +39575,9 @@ diff -urNp linux-2.6.29.6/kernel/time/tick-broadcast.c linux-2.6.29.6/kernel/tim
40444 39575
40445 cpumask_clear_cpu(cpu, tick_get_broadcast_mask()); 39576 cpumask_clear_cpu(cpu, tick_get_broadcast_mask());
40446 tick_broadcast_clear_oneshot(cpu); 39577 tick_broadcast_clear_oneshot(cpu);
40447diff -urNp linux-2.6.29.6/kernel/time/timer_list.c linux-2.6.29.6/kernel/time/timer_list.c 39578diff -urNp linux-2.6.30.4/kernel/time/timer_list.c linux-2.6.30.4/kernel/time/timer_list.c
40448--- linux-2.6.29.6/kernel/time/timer_list.c 2009-07-02 19:41:20.000000000 -0400 39579--- linux-2.6.30.4/kernel/time/timer_list.c 2009-07-24 17:47:51.000000000 -0400
40449+++ linux-2.6.29.6/kernel/time/timer_list.c 2009-07-23 18:40:28.721271955 -0400 39580+++ linux-2.6.30.4/kernel/time/timer_list.c 2009-07-30 09:48:10.137714626 -0400
40450@@ -275,7 +275,7 @@ static int timer_list_open(struct inode 39581@@ -275,7 +275,7 @@ static int timer_list_open(struct inode
40451 return single_open(filp, timer_list_show, NULL); 39582 return single_open(filp, timer_list_show, NULL);
40452 } 39583 }
@@ -40456,9 +39587,9 @@ diff -urNp linux-2.6.29.6/kernel/time/timer_list.c linux-2.6.29.6/kernel/time/ti
40456 .open = timer_list_open, 39587 .open = timer_list_open,
40457 .read = seq_read, 39588 .read = seq_read,
40458 .llseek = seq_lseek, 39589 .llseek = seq_lseek,
40459diff -urNp linux-2.6.29.6/kernel/time/timer_stats.c linux-2.6.29.6/kernel/time/timer_stats.c 39590diff -urNp linux-2.6.30.4/kernel/time/timer_stats.c linux-2.6.30.4/kernel/time/timer_stats.c
40460--- linux-2.6.29.6/kernel/time/timer_stats.c 2009-07-02 19:41:20.000000000 -0400 39591--- linux-2.6.30.4/kernel/time/timer_stats.c 2009-07-24 17:47:51.000000000 -0400
40461+++ linux-2.6.29.6/kernel/time/timer_stats.c 2009-07-23 18:40:28.722279043 -0400 39592+++ linux-2.6.30.4/kernel/time/timer_stats.c 2009-07-30 09:48:10.138707979 -0400
40462@@ -395,7 +395,7 @@ static int tstats_open(struct inode *ino 39593@@ -395,7 +395,7 @@ static int tstats_open(struct inode *ino
40463 return single_open(filp, tstats_show, NULL); 39594 return single_open(filp, tstats_show, NULL);
40464 } 39595 }
@@ -40468,9 +39599,9 @@ diff -urNp linux-2.6.29.6/kernel/time/timer_stats.c linux-2.6.29.6/kernel/time/t
40468 .open = tstats_open, 39599 .open = tstats_open,
40469 .read = seq_read, 39600 .read = seq_read,
40470 .write = tstats_write, 39601 .write = tstats_write,
40471diff -urNp linux-2.6.29.6/kernel/time.c linux-2.6.29.6/kernel/time.c 39602diff -urNp linux-2.6.30.4/kernel/time.c linux-2.6.30.4/kernel/time.c
40472--- linux-2.6.29.6/kernel/time.c 2009-07-02 19:41:20.000000000 -0400 39603--- linux-2.6.30.4/kernel/time.c 2009-07-24 17:47:51.000000000 -0400
40473+++ linux-2.6.29.6/kernel/time.c 2009-07-23 17:34:32.216793372 -0400 39604+++ linux-2.6.30.4/kernel/time.c 2009-07-30 11:10:49.712371224 -0400
40474@@ -94,6 +94,9 @@ SYSCALL_DEFINE1(stime, time_t __user *, 39605@@ -94,6 +94,9 @@ SYSCALL_DEFINE1(stime, time_t __user *,
40475 return err; 39606 return err;
40476 39607
@@ -40508,10 +39639,10 @@ diff -urNp linux-2.6.29.6/kernel/time.c linux-2.6.29.6/kernel/time.c
40508 { 39639 {
40509 #if HZ <= USEC_PER_SEC && !(USEC_PER_SEC % HZ) 39640 #if HZ <= USEC_PER_SEC && !(USEC_PER_SEC % HZ)
40510 return (USEC_PER_SEC / HZ) * j; 39641 return (USEC_PER_SEC / HZ) * j;
40511diff -urNp linux-2.6.29.6/kernel/trace/ftrace.c linux-2.6.29.6/kernel/trace/ftrace.c 39642diff -urNp linux-2.6.30.4/kernel/trace/ftrace.c linux-2.6.30.4/kernel/trace/ftrace.c
40512--- linux-2.6.29.6/kernel/trace/ftrace.c 2009-07-02 19:41:20.000000000 -0400 39643--- linux-2.6.30.4/kernel/trace/ftrace.c 2009-07-24 17:47:51.000000000 -0400
40513+++ linux-2.6.29.6/kernel/trace/ftrace.c 2009-07-23 18:40:28.722279043 -0400 39644+++ linux-2.6.30.4/kernel/trace/ftrace.c 2009-07-30 09:48:10.139681175 -0400
40514@@ -873,7 +873,7 @@ static int t_show(struct seq_file *m, vo 39645@@ -1001,7 +1001,7 @@ static int t_show(struct seq_file *m, vo
40515 return 0; 39646 return 0;
40516 } 39647 }
40517 39648
@@ -40520,41 +39651,7 @@ diff -urNp linux-2.6.29.6/kernel/trace/ftrace.c linux-2.6.29.6/kernel/trace/ftra
40520 .start = t_start, 39651 .start = t_start,
40521 .next = t_next, 39652 .next = t_next,
40522 .stop = t_stop, 39653 .stop = t_stop,
40523@@ -1303,21 +1303,21 @@ ftrace_notrace_release(struct inode *ino 39654@@ -1956,7 +1956,7 @@ static int g_show(struct seq_file *m, vo
40524 return ftrace_regex_release(inode, file, 0);
40525 }
40526
40527-static struct file_operations ftrace_avail_fops = {
40528+static const struct file_operations ftrace_avail_fops = {
40529 .open = ftrace_avail_open,
40530 .read = seq_read,
40531 .llseek = seq_lseek,
40532 .release = ftrace_avail_release,
40533 };
40534
40535-static struct file_operations ftrace_failures_fops = {
40536+static const struct file_operations ftrace_failures_fops = {
40537 .open = ftrace_failures_open,
40538 .read = seq_read,
40539 .llseek = seq_lseek,
40540 .release = ftrace_avail_release,
40541 };
40542
40543-static struct file_operations ftrace_filter_fops = {
40544+static const struct file_operations ftrace_filter_fops = {
40545 .open = ftrace_filter_open,
40546 .read = ftrace_regex_read,
40547 .write = ftrace_filter_write,
40548@@ -1325,7 +1325,7 @@ static struct file_operations ftrace_fil
40549 .release = ftrace_filter_release,
40550 };
40551
40552-static struct file_operations ftrace_notrace_fops = {
40553+static const struct file_operations ftrace_notrace_fops = {
40554 .open = ftrace_notrace_open,
40555 .read = ftrace_regex_read,
40556 .write = ftrace_notrace_write,
40557@@ -1385,7 +1385,7 @@ static int g_show(struct seq_file *m, vo
40558 return 0; 39655 return 0;
40559 } 39656 }
40560 39657
@@ -40563,71 +39660,29 @@ diff -urNp linux-2.6.29.6/kernel/trace/ftrace.c linux-2.6.29.6/kernel/trace/ftra
40563 .start = g_start, 39660 .start = g_start,
40564 .next = g_next, 39661 .next = g_next,
40565 .stop = g_stop, 39662 .stop = g_stop,
40566@@ -1840,7 +1840,7 @@ ftrace_pid_write(struct file *filp, cons 39663diff -urNp linux-2.6.30.4/kernel/trace/Kconfig linux-2.6.30.4/kernel/trace/Kconfig
40567 return cnt; 39664--- linux-2.6.30.4/kernel/trace/Kconfig 2009-07-24 17:47:51.000000000 -0400
40568 } 39665+++ linux-2.6.30.4/kernel/trace/Kconfig 2009-07-30 11:13:44.980492661 -0400
40569 39666@@ -78,6 +78,7 @@ menu "Tracers"
40570-static struct file_operations ftrace_pid_fops = { 39667 config FUNCTION_TRACER
40571+static const struct file_operations ftrace_pid_fops = {
40572 .read = ftrace_pid_read,
40573 .write = ftrace_pid_write,
40574 };
40575diff -urNp linux-2.6.29.6/kernel/trace/Kconfig linux-2.6.29.6/kernel/trace/Kconfig
40576--- linux-2.6.29.6/kernel/trace/Kconfig 2009-07-02 19:41:20.000000000 -0400
40577+++ linux-2.6.29.6/kernel/trace/Kconfig 2009-07-23 18:43:34.850823161 -0400
40578@@ -51,6 +51,7 @@ config FUNCTION_TRACER
40579 bool "Kernel Function Tracer" 39668 bool "Kernel Function Tracer"
40580 depends on HAVE_FUNCTION_TRACER 39669 depends on HAVE_FUNCTION_TRACER
40581 depends on DEBUG_KERNEL
40582+ depends on !PAX_KERNEXEC 39670+ depends on !PAX_KERNEXEC
40583 select FRAME_POINTER 39671 select FRAME_POINTER
40584 select KALLSYMS 39672 select KALLSYMS
40585 select TRACING 39673 select TRACING
40586@@ -237,6 +238,7 @@ config STACK_TRACER 39674@@ -271,6 +272,7 @@ config POWER_TRACER
39675 config STACK_TRACER
40587 bool "Trace max stack" 39676 bool "Trace max stack"
40588 depends on HAVE_FUNCTION_TRACER 39677 depends on HAVE_FUNCTION_TRACER
40589 depends on DEBUG_KERNEL
40590+ depends on !PAX_KERNEXEC 39678+ depends on !PAX_KERNEXEC
40591 select FUNCTION_TRACER 39679 select FUNCTION_TRACER
40592 select STACKTRACE 39680 select STACKTRACE
40593 select KALLSYMS 39681 select KALLSYMS
40594diff -urNp linux-2.6.29.6/kernel/trace/ring_buffer.c linux-2.6.29.6/kernel/trace/ring_buffer.c 39682diff -urNp linux-2.6.30.4/kernel/trace/trace.c linux-2.6.30.4/kernel/trace/trace.c
40595--- linux-2.6.29.6/kernel/trace/ring_buffer.c 2009-07-02 19:41:20.000000000 -0400 39683--- linux-2.6.30.4/kernel/trace/trace.c 2009-07-24 17:47:51.000000000 -0400
40596+++ linux-2.6.29.6/kernel/trace/ring_buffer.c 2009-07-23 18:40:28.723274997 -0400 39684+++ linux-2.6.30.4/kernel/trace/trace.c 2009-07-30 09:48:10.139681175 -0400
40597@@ -2509,7 +2509,7 @@ rb_simple_write(struct file *filp, const 39685@@ -1836,7 +1836,7 @@ static int s_show(struct seq_file *m, vo
40598 return cnt;
40599 }
40600
40601-static struct file_operations rb_simple_fops = {
40602+static const struct file_operations rb_simple_fops = {
40603 .open = tracing_open_generic,
40604 .read = rb_simple_read,
40605 .write = rb_simple_write,
40606diff -urNp linux-2.6.29.6/kernel/trace/trace_branch.c linux-2.6.29.6/kernel/trace/trace_branch.c
40607--- linux-2.6.29.6/kernel/trace/trace_branch.c 2009-07-02 19:41:20.000000000 -0400
40608+++ linux-2.6.29.6/kernel/trace/trace_branch.c 2009-07-23 18:40:28.724260937 -0400
40609@@ -267,7 +267,7 @@ static int t_show(struct seq_file *m, vo
40610 return 0;
40611 }
40612
40613-static struct seq_operations tracing_likely_seq_ops = {
40614+static const struct seq_operations tracing_likely_seq_ops = {
40615 .start = t_start,
40616 .next = t_next,
40617 .stop = t_stop,
40618diff -urNp linux-2.6.29.6/kernel/trace/trace.c linux-2.6.29.6/kernel/trace/trace.c
40619--- linux-2.6.29.6/kernel/trace/trace.c 2009-07-02 19:41:20.000000000 -0400
40620+++ linux-2.6.29.6/kernel/trace/trace.c 2009-07-23 18:40:27.478286190 -0400
40621@@ -442,7 +442,7 @@ trace_seq_path(struct trace_seq *s, stru
40622 return 0;
40623 p = d_path(path, s->buffer + s->len, PAGE_SIZE - s->len);
40624 if (!IS_ERR(p)) {
40625- p = mangle_path(s->buffer + s->len, p, "\n");
40626+ p = mangle_path(s->buffer + s->len, p, "\n\\");
40627 if (p) {
40628 s->len = p - s->buffer;
40629 return 1;
40630@@ -2418,7 +2418,7 @@ static int s_show(struct seq_file *m, vo
40631 return 0; 39686 return 0;
40632 } 39687 }
40633 39688
@@ -40636,7 +39691,7 @@ diff -urNp linux-2.6.29.6/kernel/trace/trace.c linux-2.6.29.6/kernel/trace/trace
40636 .start = s_start, 39691 .start = s_start,
40637 .next = s_next, 39692 .next = s_next,
40638 .stop = s_stop, 39693 .stop = s_stop,
40639@@ -2600,7 +2600,7 @@ static int t_show(struct seq_file *m, vo 39694@@ -2050,7 +2050,7 @@ static int t_show(struct seq_file *m, vo
40640 return 0; 39695 return 0;
40641 } 39696 }
40642 39697
@@ -40645,127 +39700,21 @@ diff -urNp linux-2.6.29.6/kernel/trace/trace.c linux-2.6.29.6/kernel/trace/trace
40645 .start = t_start, 39700 .start = t_start,
40646 .next = t_next, 39701 .next = t_next,
40647 .stop = t_stop, 39702 .stop = t_stop,
40648@@ -2623,21 +2623,21 @@ static int show_traces_open(struct inode 39703diff -urNp linux-2.6.30.4/kernel/trace/trace_output.c linux-2.6.30.4/kernel/trace/trace_output.c
40649 return ret; 39704--- linux-2.6.30.4/kernel/trace/trace_output.c 2009-07-24 17:47:51.000000000 -0400
40650 } 39705+++ linux-2.6.30.4/kernel/trace/trace_output.c 2009-07-30 09:48:10.140750846 -0400
40651 39706@@ -188,7 +188,7 @@ int trace_seq_path(struct trace_seq *s,
40652-static struct file_operations tracing_fops = { 39707 return 0;
40653+static const struct file_operations tracing_fops = { 39708 p = d_path(path, s->buffer + s->len, PAGE_SIZE - s->len);
40654 .open = tracing_open, 39709 if (!IS_ERR(p)) {
40655 .read = seq_read, 39710- p = mangle_path(s->buffer + s->len, p, "\n");
40656 .llseek = seq_lseek, 39711+ p = mangle_path(s->buffer + s->len, p, "\n\\");
40657 .release = tracing_release, 39712 if (p) {
40658 }; 39713 s->len = p - s->buffer;
40659 39714 return 1;
40660-static struct file_operations tracing_lt_fops = { 39715diff -urNp linux-2.6.30.4/kernel/utsname_sysctl.c linux-2.6.30.4/kernel/utsname_sysctl.c
40661+static const struct file_operations tracing_lt_fops = { 39716--- linux-2.6.30.4/kernel/utsname_sysctl.c 2009-07-24 17:47:51.000000000 -0400
40662 .open = tracing_lt_open, 39717+++ linux-2.6.30.4/kernel/utsname_sysctl.c 2009-07-30 09:48:10.140750846 -0400
40663 .read = seq_read,
40664 .llseek = seq_lseek,
40665 .release = tracing_release,
40666 };
40667
40668-static struct file_operations show_traces_fops = {
40669+static const struct file_operations show_traces_fops = {
40670 .open = show_traces_open,
40671 .read = seq_read,
40672 .release = seq_release,
40673@@ -2730,7 +2730,7 @@ err_unlock:
40674 return err;
40675 }
40676
40677-static struct file_operations tracing_cpumask_fops = {
40678+static const struct file_operations tracing_cpumask_fops = {
40679 .open = tracing_open_generic,
40680 .read = tracing_cpumask_read,
40681 .write = tracing_cpumask_write,
40682@@ -2875,7 +2875,7 @@ tracing_trace_options_write(struct file
40683 return cnt;
40684 }
40685
40686-static struct file_operations tracing_iter_fops = {
40687+static const struct file_operations tracing_iter_fops = {
40688 .open = tracing_open_generic,
40689 .read = tracing_trace_options_read,
40690 .write = tracing_trace_options_write,
40691@@ -2908,7 +2908,7 @@ tracing_readme_read(struct file *filp, c
40692 readme_msg, strlen(readme_msg));
40693 }
40694
40695-static struct file_operations tracing_readme_fops = {
40696+static const struct file_operations tracing_readme_fops = {
40697 .open = tracing_open_generic,
40698 .read = tracing_readme_read,
40699 };
40700@@ -3433,38 +3433,38 @@ tracing_mark_write(struct file *filp, co
40701 return cnt;
40702 }
40703
40704-static struct file_operations tracing_max_lat_fops = {
40705+static const struct file_operations tracing_max_lat_fops = {
40706 .open = tracing_open_generic,
40707 .read = tracing_max_lat_read,
40708 .write = tracing_max_lat_write,
40709 };
40710
40711-static struct file_operations tracing_ctrl_fops = {
40712+static const struct file_operations tracing_ctrl_fops = {
40713 .open = tracing_open_generic,
40714 .read = tracing_ctrl_read,
40715 .write = tracing_ctrl_write,
40716 };
40717
40718-static struct file_operations set_tracer_fops = {
40719+static const struct file_operations set_tracer_fops = {
40720 .open = tracing_open_generic,
40721 .read = tracing_set_trace_read,
40722 .write = tracing_set_trace_write,
40723 };
40724
40725-static struct file_operations tracing_pipe_fops = {
40726+static const struct file_operations tracing_pipe_fops = {
40727 .open = tracing_open_pipe,
40728 .poll = tracing_poll_pipe,
40729 .read = tracing_read_pipe,
40730 .release = tracing_release_pipe,
40731 };
40732
40733-static struct file_operations tracing_entries_fops = {
40734+static const struct file_operations tracing_entries_fops = {
40735 .open = tracing_open_generic,
40736 .read = tracing_entries_read,
40737 .write = tracing_entries_write,
40738 };
40739
40740-static struct file_operations tracing_mark_fops = {
40741+static const struct file_operations tracing_mark_fops = {
40742 .open = tracing_open_generic,
40743 .write = tracing_mark_write,
40744 };
40745@@ -3500,7 +3500,7 @@ tracing_read_dyn_info(struct file *filp,
40746 return r;
40747 }
40748
40749-static struct file_operations tracing_dyn_info_fops = {
40750+static const struct file_operations tracing_dyn_info_fops = {
40751 .open = tracing_open_generic,
40752 .read = tracing_read_dyn_info,
40753 };
40754diff -urNp linux-2.6.29.6/kernel/trace/trace_sysprof.c linux-2.6.29.6/kernel/trace/trace_sysprof.c
40755--- linux-2.6.29.6/kernel/trace/trace_sysprof.c 2009-07-02 19:41:20.000000000 -0400
40756+++ linux-2.6.29.6/kernel/trace/trace_sysprof.c 2009-07-23 18:40:28.724260937 -0400
40757@@ -317,7 +317,7 @@ sysprof_sample_write(struct file *filp,
40758 return cnt;
40759 }
40760
40761-static struct file_operations sysprof_sample_fops = {
40762+static const struct file_operations sysprof_sample_fops = {
40763 .read = sysprof_sample_read,
40764 .write = sysprof_sample_write,
40765 };
40766diff -urNp linux-2.6.29.6/kernel/utsname_sysctl.c linux-2.6.29.6/kernel/utsname_sysctl.c
40767--- linux-2.6.29.6/kernel/utsname_sysctl.c 2009-07-02 19:41:20.000000000 -0400
40768+++ linux-2.6.29.6/kernel/utsname_sysctl.c 2009-07-23 17:34:32.217711177 -0400
40769@@ -123,7 +123,7 @@ static struct ctl_table uts_kern_table[] 39718@@ -123,7 +123,7 @@ static struct ctl_table uts_kern_table[]
40770 .proc_handler = proc_do_uts_string, 39719 .proc_handler = proc_do_uts_string,
40771 .strategy = sysctl_uts_string, 39720 .strategy = sysctl_uts_string,
@@ -40784,22 +39733,10 @@ diff -urNp linux-2.6.29.6/kernel/utsname_sysctl.c linux-2.6.29.6/kernel/utsname_
40784 }; 39733 };
40785 39734
40786 static int __init utsname_sysctl_init(void) 39735 static int __init utsname_sysctl_init(void)
40787diff -urNp linux-2.6.29.6/lib/dynamic_printk.c linux-2.6.29.6/lib/dynamic_printk.c 39736diff -urNp linux-2.6.30.4/lib/Kconfig.debug linux-2.6.30.4/lib/Kconfig.debug
40788--- linux-2.6.29.6/lib/dynamic_printk.c 2009-07-02 19:41:20.000000000 -0400 39737--- linux-2.6.30.4/lib/Kconfig.debug 2009-07-24 17:47:51.000000000 -0400
40789+++ linux-2.6.29.6/lib/dynamic_printk.c 2009-07-23 18:40:28.724260937 -0400 39738+++ linux-2.6.30.4/lib/Kconfig.debug 2009-07-30 11:10:49.747708160 -0400
40790@@ -352,7 +352,7 @@ static int pr_debug_seq_show(struct seq_ 39739@@ -821,7 +821,7 @@ config LATENCYTOP
40791 return 0;
40792 }
40793
40794-static struct seq_operations pr_debug_seq_ops = {
40795+static const struct seq_operations pr_debug_seq_ops = {
40796 .start = pr_debug_seq_start,
40797 .next = pr_debug_seq_next,
40798 .stop = pr_debug_seq_stop,
40799diff -urNp linux-2.6.29.6/lib/Kconfig.debug linux-2.6.29.6/lib/Kconfig.debug
40800--- linux-2.6.29.6/lib/Kconfig.debug 2009-07-02 19:41:20.000000000 -0400
40801+++ linux-2.6.29.6/lib/Kconfig.debug 2009-07-23 17:34:32.218743017 -0400
40802@@ -783,7 +783,7 @@ config LATENCYTOP
40803 select STACKTRACE 39740 select STACKTRACE
40804 select SCHEDSTATS 39741 select SCHEDSTATS
40805 select SCHED_DEBUG 39742 select SCHED_DEBUG
@@ -40808,9 +39745,9 @@ diff -urNp linux-2.6.29.6/lib/Kconfig.debug linux-2.6.29.6/lib/Kconfig.debug
40808 help 39745 help
40809 Enable this option if you want to use the LatencyTOP tool 39746 Enable this option if you want to use the LatencyTOP tool
40810 to find out which userspace is blocking on what kernel operations. 39747 to find out which userspace is blocking on what kernel operations.
40811diff -urNp linux-2.6.29.6/lib/parser.c linux-2.6.29.6/lib/parser.c 39748diff -urNp linux-2.6.30.4/lib/parser.c linux-2.6.30.4/lib/parser.c
40812--- linux-2.6.29.6/lib/parser.c 2009-07-02 19:41:20.000000000 -0400 39749--- linux-2.6.30.4/lib/parser.c 2009-07-24 17:47:51.000000000 -0400
40813+++ linux-2.6.29.6/lib/parser.c 2009-07-23 17:34:32.218743017 -0400 39750+++ linux-2.6.30.4/lib/parser.c 2009-07-30 09:48:10.140750846 -0400
40814@@ -126,7 +126,7 @@ static int match_number(substring_t *s, 39751@@ -126,7 +126,7 @@ static int match_number(substring_t *s,
40815 char *buf; 39752 char *buf;
40816 int ret; 39753 int ret;
@@ -40820,9 +39757,9 @@ diff -urNp linux-2.6.29.6/lib/parser.c linux-2.6.29.6/lib/parser.c
40820 if (!buf) 39757 if (!buf)
40821 return -ENOMEM; 39758 return -ENOMEM;
40822 memcpy(buf, s->from, s->to - s->from); 39759 memcpy(buf, s->from, s->to - s->from);
40823diff -urNp linux-2.6.29.6/lib/radix-tree.c linux-2.6.29.6/lib/radix-tree.c 39760diff -urNp linux-2.6.30.4/lib/radix-tree.c linux-2.6.30.4/lib/radix-tree.c
40824--- linux-2.6.29.6/lib/radix-tree.c 2009-07-02 19:41:20.000000000 -0400 39761--- linux-2.6.30.4/lib/radix-tree.c 2009-07-24 17:47:51.000000000 -0400
40825+++ linux-2.6.29.6/lib/radix-tree.c 2009-07-23 17:34:32.218743017 -0400 39762+++ linux-2.6.30.4/lib/radix-tree.c 2009-07-30 09:48:10.140750846 -0400
40826@@ -81,7 +81,7 @@ struct radix_tree_preload { 39763@@ -81,7 +81,7 @@ struct radix_tree_preload {
40827 int nr; 39764 int nr;
40828 struct radix_tree_node *nodes[RADIX_TREE_MAX_PATH]; 39765 struct radix_tree_node *nodes[RADIX_TREE_MAX_PATH];
@@ -40832,9 +39769,9 @@ diff -urNp linux-2.6.29.6/lib/radix-tree.c linux-2.6.29.6/lib/radix-tree.c
40832 39769
40833 static inline gfp_t root_gfp_mask(struct radix_tree_root *root) 39770 static inline gfp_t root_gfp_mask(struct radix_tree_root *root)
40834 { 39771 {
40835diff -urNp linux-2.6.29.6/lib/random32.c linux-2.6.29.6/lib/random32.c 39772diff -urNp linux-2.6.30.4/lib/random32.c linux-2.6.30.4/lib/random32.c
40836--- linux-2.6.29.6/lib/random32.c 2009-07-02 19:41:20.000000000 -0400 39773--- linux-2.6.30.4/lib/random32.c 2009-07-24 17:47:51.000000000 -0400
40837+++ linux-2.6.29.6/lib/random32.c 2009-07-23 17:34:32.219722211 -0400 39774+++ linux-2.6.30.4/lib/random32.c 2009-07-30 09:48:10.141806319 -0400
40838@@ -61,7 +61,7 @@ static u32 __random32(struct rnd_state * 39775@@ -61,7 +61,7 @@ static u32 __random32(struct rnd_state *
40839 */ 39776 */
40840 static inline u32 __seed(u32 x, u32 m) 39777 static inline u32 __seed(u32 x, u32 m)
@@ -40844,33 +39781,26 @@ diff -urNp linux-2.6.29.6/lib/random32.c linux-2.6.29.6/lib/random32.c
40844 } 39781 }
40845 39782
40846 /** 39783 /**
40847diff -urNp linux-2.6.29.6/localversion-grsec linux-2.6.29.6/localversion-grsec 39784diff -urNp linux-2.6.30.4/localversion-grsec linux-2.6.30.4/localversion-grsec
40848--- linux-2.6.29.6/localversion-grsec 1969-12-31 19:00:00.000000000 -0500 39785--- linux-2.6.30.4/localversion-grsec 1969-12-31 19:00:00.000000000 -0500
40849+++ linux-2.6.29.6/localversion-grsec 2009-07-23 17:34:32.219722211 -0400 39786+++ linux-2.6.30.4/localversion-grsec 2009-07-30 11:10:49.747708160 -0400
40850@@ -0,0 +1 @@ 39787@@ -0,0 +1 @@
40851+-grsec 39788+-grsec
40852diff -urNp linux-2.6.29.6/Makefile linux-2.6.29.6/Makefile 39789diff -urNp linux-2.6.30.4/Makefile linux-2.6.30.4/Makefile
40853--- linux-2.6.29.6/Makefile 2009-07-02 19:41:20.000000000 -0400 39790--- linux-2.6.30.4/Makefile 2009-07-30 20:32:40.332701013 -0400
40854+++ linux-2.6.29.6/Makefile 2009-07-23 17:34:37.457730203 -0400 39791+++ linux-2.6.30.4/Makefile 2009-07-30 20:32:47.921679729 -0400
40855@@ -226,7 +226,7 @@ CONFIG_SHELL := $(shell if [ -x "$$BASH" 39792@@ -231,8 +231,8 @@ CONFIG_SHELL := $(shell if [ -x "$$BASH"
40856 39793
40857 HOSTCC = gcc 39794 HOSTCC = gcc
40858 HOSTCXX = g++ 39795 HOSTCXX = g++
40859-HOSTCFLAGS = -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer 39796-HOSTCFLAGS = -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer
39797-HOSTCXXFLAGS = -O2
40860+HOSTCFLAGS = -Wall -W -Wno-unused -Wno-sign-compare -Wstrict-prototypes -O2 -fomit-frame-pointer -fno-delete-null-pointer-checks 39798+HOSTCFLAGS = -Wall -W -Wno-unused -Wno-sign-compare -Wstrict-prototypes -O2 -fomit-frame-pointer -fno-delete-null-pointer-checks
40861 HOSTCXXFLAGS = -O2 39799+HOSTCXXFLAGS = -O2 -fno-delete-null-pointer-checks
40862 39800
40863 # Decide whether to build built-in, modular, or both. 39801 # Decide whether to build built-in, modular, or both.
40864@@ -567,7 +567,7 @@ KBUILD_CFLAGS += $(call cc-option,-Wdecl 39802 # Normally, just do built-in.
40865 KBUILD_CFLAGS += $(call cc-option,-Wno-pointer-sign,) 39803@@ -647,7 +647,7 @@ export mod_strip_cmd
40866
40867 # disable invalid "can't wrap" optimzations for signed / pointers
40868-KBUILD_CFLAGS += $(call cc-option,-fwrapv)
40869+KBUILD_CFLAGS += $(call cc-option,-fno-strict-overflow)
40870
40871 # revert to pre-gcc-4.4 behaviour of .eh_frame
40872 KBUILD_CFLAGS += $(call cc-option,-fno-dwarf2-cfi-asm)
40873@@ -636,7 +636,7 @@ export mod_strip_cmd
40874 39804
40875 39805
40876 ifeq ($(KBUILD_EXTMOD),) 39806 ifeq ($(KBUILD_EXTMOD),)
@@ -40879,10 +39809,10 @@ diff -urNp linux-2.6.29.6/Makefile linux-2.6.29.6/Makefile
40879 39809
40880 vmlinux-dirs := $(patsubst %/,%,$(filter %/, $(init-y) $(init-m) \ 39810 vmlinux-dirs := $(patsubst %/,%,$(filter %/, $(init-y) $(init-m) \
40881 $(core-y) $(core-m) $(drivers-y) $(drivers-m) \ 39811 $(core-y) $(core-m) $(drivers-y) $(drivers-m) \
40882diff -urNp linux-2.6.29.6/mm/filemap.c linux-2.6.29.6/mm/filemap.c 39812diff -urNp linux-2.6.30.4/mm/filemap.c linux-2.6.30.4/mm/filemap.c
40883--- linux-2.6.29.6/mm/filemap.c 2009-07-02 19:41:20.000000000 -0400 39813--- linux-2.6.30.4/mm/filemap.c 2009-07-30 20:32:40.553577478 -0400
40884+++ linux-2.6.29.6/mm/filemap.c 2009-07-23 18:40:27.479596094 -0400 39814+++ linux-2.6.30.4/mm/filemap.c 2009-07-30 20:32:48.096612667 -0400
40885@@ -1604,7 +1604,7 @@ page_not_uptodate: 39815@@ -1625,7 +1625,7 @@ page_not_uptodate:
40886 } 39816 }
40887 EXPORT_SYMBOL(filemap_fault); 39817 EXPORT_SYMBOL(filemap_fault);
40888 39818
@@ -40891,7 +39821,7 @@ diff -urNp linux-2.6.29.6/mm/filemap.c linux-2.6.29.6/mm/filemap.c
40891 .fault = filemap_fault, 39821 .fault = filemap_fault,
40892 }; 39822 };
40893 39823
40894@@ -1615,7 +1615,7 @@ int generic_file_mmap(struct file * file 39824@@ -1636,7 +1636,7 @@ int generic_file_mmap(struct file * file
40895 struct address_space *mapping = file->f_mapping; 39825 struct address_space *mapping = file->f_mapping;
40896 39826
40897 if (!mapping->a_ops->readpage) 39827 if (!mapping->a_ops->readpage)
@@ -40900,7 +39830,7 @@ diff -urNp linux-2.6.29.6/mm/filemap.c linux-2.6.29.6/mm/filemap.c
40900 file_accessed(file); 39830 file_accessed(file);
40901 vma->vm_ops = &generic_file_vm_ops; 39831 vma->vm_ops = &generic_file_vm_ops;
40902 vma->vm_flags |= VM_CAN_NONLINEAR; 39832 vma->vm_flags |= VM_CAN_NONLINEAR;
40903@@ -1976,6 +1976,7 @@ inline int generic_write_checks(struct f 39833@@ -1996,6 +1996,7 @@ inline int generic_write_checks(struct f
40904 *pos = i_size_read(inode); 39834 *pos = i_size_read(inode);
40905 39835
40906 if (limit != RLIM_INFINITY) { 39836 if (limit != RLIM_INFINITY) {
@@ -40908,9 +39838,9 @@ diff -urNp linux-2.6.29.6/mm/filemap.c linux-2.6.29.6/mm/filemap.c
40908 if (*pos >= limit) { 39838 if (*pos >= limit) {
40909 send_sig(SIGXFSZ, current, 0); 39839 send_sig(SIGXFSZ, current, 0);
40910 return -EFBIG; 39840 return -EFBIG;
40911diff -urNp linux-2.6.29.6/mm/filemap_xip.c linux-2.6.29.6/mm/filemap_xip.c 39841diff -urNp linux-2.6.30.4/mm/filemap_xip.c linux-2.6.30.4/mm/filemap_xip.c
40912--- linux-2.6.29.6/mm/filemap_xip.c 2009-07-02 19:41:20.000000000 -0400 39842--- linux-2.6.30.4/mm/filemap_xip.c 2009-07-24 17:47:51.000000000 -0400
40913+++ linux-2.6.29.6/mm/filemap_xip.c 2009-07-23 18:40:28.737571137 -0400 39843+++ linux-2.6.30.4/mm/filemap_xip.c 2009-07-30 09:48:10.142775471 -0400
40914@@ -296,7 +296,7 @@ out: 39844@@ -296,7 +296,7 @@ out:
40915 } 39845 }
40916 } 39846 }
@@ -40920,9 +39850,9 @@ diff -urNp linux-2.6.29.6/mm/filemap_xip.c linux-2.6.29.6/mm/filemap_xip.c
40920 .fault = xip_file_fault, 39850 .fault = xip_file_fault,
40921 }; 39851 };
40922 39852
40923diff -urNp linux-2.6.29.6/mm/fremap.c linux-2.6.29.6/mm/fremap.c 39853diff -urNp linux-2.6.30.4/mm/fremap.c linux-2.6.30.4/mm/fremap.c
40924--- linux-2.6.29.6/mm/fremap.c 2009-07-02 19:41:20.000000000 -0400 39854--- linux-2.6.30.4/mm/fremap.c 2009-07-24 17:47:51.000000000 -0400
40925+++ linux-2.6.29.6/mm/fremap.c 2009-07-23 17:34:32.221026931 -0400 39855+++ linux-2.6.30.4/mm/fremap.c 2009-07-30 09:48:10.142775471 -0400
40926@@ -153,6 +153,11 @@ SYSCALL_DEFINE5(remap_file_pages, unsign 39856@@ -153,6 +153,11 @@ SYSCALL_DEFINE5(remap_file_pages, unsign
40927 retry: 39857 retry:
40928 vma = find_vma(mm, start); 39858 vma = find_vma(mm, start);
@@ -40935,9 +39865,66 @@ diff -urNp linux-2.6.29.6/mm/fremap.c linux-2.6.29.6/mm/fremap.c
40935 /* 39865 /*
40936 * Make sure the vma is shared, that it supports prefaulting, 39866 * Make sure the vma is shared, that it supports prefaulting,
40937 * and that the remapped range is valid and fully within 39867 * and that the remapped range is valid and fully within
40938diff -urNp linux-2.6.29.6/mm/hugetlb.c linux-2.6.29.6/mm/hugetlb.c 39868diff -urNp linux-2.6.30.4/mm/highmem.c linux-2.6.30.4/mm/highmem.c
40939--- linux-2.6.29.6/mm/hugetlb.c 2009-07-02 19:41:20.000000000 -0400 39869--- linux-2.6.30.4/mm/highmem.c 2009-07-24 17:47:51.000000000 -0400
40940+++ linux-2.6.29.6/mm/hugetlb.c 2009-07-23 18:40:27.480266950 -0400 39870+++ linux-2.6.30.4/mm/highmem.c 2009-08-02 11:24:41.617453261 -0400
39871@@ -95,6 +95,9 @@ static void flush_all_zero_pkmaps(void)
39872
39873 for (i = 0; i < LAST_PKMAP; i++) {
39874 struct page *page;
39875+#ifdef CONFIG_PAX_KERNEXEC
39876+ unsigned long cr0;
39877+#endif
39878
39879 /*
39880 * zero means we don't have anything to do,
39881@@ -117,9 +120,18 @@ static void flush_all_zero_pkmaps(void)
39882 * So no dangers, even with speculative execution.
39883 */
39884 page = pte_page(pkmap_page_table[i]);
39885+
39886+#ifdef CONFIG_PAX_KERNEXEC
39887+ pax_open_kernel(cr0);
39888+#endif
39889+
39890 pte_clear(&init_mm, (unsigned long)page_address(page),
39891 &pkmap_page_table[i]);
39892
39893+#ifdef CONFIG_PAX_KERNEXEC
39894+ pax_close_kernel(cr0);
39895+#endif
39896+
39897 set_page_address(page, NULL);
39898 need_flush = 1;
39899 }
39900@@ -141,6 +153,9 @@ static inline unsigned long map_new_virt
39901 {
39902 unsigned long vaddr;
39903 int count;
39904+#ifdef CONFIG_PAX_KERNEXEC
39905+ unsigned long cr0;
39906+#endif
39907
39908 start:
39909 count = LAST_PKMAP;
39910@@ -178,8 +193,14 @@ start:
39911 }
39912 }
39913 vaddr = PKMAP_ADDR(last_pkmap_nr);
39914+#ifdef CONFIG_PAX_KERNEXEC
39915+ pax_open_kernel(cr0);
39916+#endif
39917 set_pte_at(&init_mm, vaddr,
39918 &(pkmap_page_table[last_pkmap_nr]), mk_pte(page, kmap_prot));
39919+#ifdef CONFIG_PAX_KERNEXEC
39920+ pax_close_kernel(cr0);
39921+#endif
39922
39923 pkmap_count[last_pkmap_nr] = 1;
39924 set_page_address(page, (void *)vaddr);
39925diff -urNp linux-2.6.30.4/mm/hugetlb.c linux-2.6.30.4/mm/hugetlb.c
39926--- linux-2.6.30.4/mm/hugetlb.c 2009-07-24 17:47:51.000000000 -0400
39927+++ linux-2.6.30.4/mm/hugetlb.c 2009-07-30 09:48:10.143720396 -0400
40941@@ -1661,7 +1661,7 @@ static int hugetlb_vm_op_fault(struct vm 39928@@ -1661,7 +1661,7 @@ static int hugetlb_vm_op_fault(struct vm
40942 return 0; 39929 return 0;
40943 } 39930 }
@@ -41026,9 +40013,9 @@ diff -urNp linux-2.6.29.6/mm/hugetlb.c linux-2.6.29.6/mm/hugetlb.c
41026 ptep = huge_pte_alloc(mm, address, huge_page_size(h)); 40013 ptep = huge_pte_alloc(mm, address, huge_page_size(h));
41027 if (!ptep) 40014 if (!ptep)
41028 return VM_FAULT_OOM; 40015 return VM_FAULT_OOM;
41029diff -urNp linux-2.6.29.6/mm/madvise.c linux-2.6.29.6/mm/madvise.c 40016diff -urNp linux-2.6.30.4/mm/madvise.c linux-2.6.30.4/mm/madvise.c
41030--- linux-2.6.29.6/mm/madvise.c 2009-07-02 19:41:20.000000000 -0400 40017--- linux-2.6.30.4/mm/madvise.c 2009-07-24 17:47:51.000000000 -0400
41031+++ linux-2.6.29.6/mm/madvise.c 2009-07-23 17:34:32.221732895 -0400 40018+++ linux-2.6.30.4/mm/madvise.c 2009-07-30 09:48:10.143720396 -0400
41032@@ -43,6 +43,10 @@ static long madvise_behavior(struct vm_a 40019@@ -43,6 +43,10 @@ static long madvise_behavior(struct vm_a
41033 pgoff_t pgoff; 40020 pgoff_t pgoff;
41034 int new_flags = vma->vm_flags; 40021 int new_flags = vma->vm_flags;
@@ -41054,7 +40041,7 @@ diff -urNp linux-2.6.29.6/mm/madvise.c linux-2.6.29.6/mm/madvise.c
41054 vma->vm_flags = new_flags; 40041 vma->vm_flags = new_flags;
41055 40042
41056 out: 40043 out:
41057@@ -244,6 +255,17 @@ madvise_vma(struct vm_area_struct *vma, 40044@@ -236,6 +247,17 @@ madvise_vma(struct vm_area_struct *vma,
41058 40045
41059 case MADV_DONTNEED: 40046 case MADV_DONTNEED:
41060 error = madvise_dontneed(vma, prev, start, end); 40047 error = madvise_dontneed(vma, prev, start, end);
@@ -41072,7 +40059,7 @@ diff -urNp linux-2.6.29.6/mm/madvise.c linux-2.6.29.6/mm/madvise.c
41072 break; 40059 break;
41073 40060
41074 default: 40061 default:
41075@@ -316,6 +338,16 @@ SYSCALL_DEFINE3(madvise, unsigned long, 40062@@ -308,6 +330,16 @@ SYSCALL_DEFINE3(madvise, unsigned long,
41076 if (end < start) 40063 if (end < start)
41077 goto out; 40064 goto out;
41078 40065
@@ -41089,9 +40076,9 @@ diff -urNp linux-2.6.29.6/mm/madvise.c linux-2.6.29.6/mm/madvise.c
41089 error = 0; 40076 error = 0;
41090 if (end == start) 40077 if (end == start)
41091 goto out; 40078 goto out;
41092diff -urNp linux-2.6.29.6/mm/memory.c linux-2.6.29.6/mm/memory.c 40079diff -urNp linux-2.6.30.4/mm/memory.c linux-2.6.30.4/mm/memory.c
41093--- linux-2.6.29.6/mm/memory.c 2009-07-02 19:41:20.000000000 -0400 40080--- linux-2.6.30.4/mm/memory.c 2009-07-24 17:47:51.000000000 -0400
41094+++ linux-2.6.29.6/mm/memory.c 2009-07-23 17:34:32.222717577 -0400 40081+++ linux-2.6.30.4/mm/memory.c 2009-07-30 11:10:49.792655285 -0400
41095@@ -47,6 +47,7 @@ 40082@@ -47,6 +47,7 @@
41096 #include <linux/pagemap.h> 40083 #include <linux/pagemap.h>
41097 #include <linux/rmap.h> 40084 #include <linux/rmap.h>
@@ -41100,7 +40087,7 @@ diff -urNp linux-2.6.29.6/mm/memory.c linux-2.6.29.6/mm/memory.c
41100 #include <linux/delayacct.h> 40087 #include <linux/delayacct.h>
41101 #include <linux/init.h> 40088 #include <linux/init.h>
41102 #include <linux/writeback.h> 40089 #include <linux/writeback.h>
41103@@ -1222,11 +1223,11 @@ int __get_user_pages(struct task_struct 40090@@ -1227,11 +1228,11 @@ int __get_user_pages(struct task_struct
41104 vm_flags &= force ? (VM_MAYREAD | VM_MAYWRITE) : (VM_READ | VM_WRITE); 40091 vm_flags &= force ? (VM_MAYREAD | VM_MAYWRITE) : (VM_READ | VM_WRITE);
41105 i = 0; 40092 i = 0;
41106 40093
@@ -41114,7 +40101,7 @@ diff -urNp linux-2.6.29.6/mm/memory.c linux-2.6.29.6/mm/memory.c
41114 if (!vma && in_gate_area(tsk, start)) { 40101 if (!vma && in_gate_area(tsk, start)) {
41115 unsigned long pg = start & PAGE_MASK; 40102 unsigned long pg = start & PAGE_MASK;
41116 struct vm_area_struct *gate_vma = get_gate_vma(tsk); 40103 struct vm_area_struct *gate_vma = get_gate_vma(tsk);
41117@@ -1268,7 +1269,7 @@ int __get_user_pages(struct task_struct 40104@@ -1273,7 +1274,7 @@ int __get_user_pages(struct task_struct
41118 continue; 40105 continue;
41119 } 40106 }
41120 40107
@@ -41123,7 +40110,7 @@ diff -urNp linux-2.6.29.6/mm/memory.c linux-2.6.29.6/mm/memory.c
41123 (vma->vm_flags & (VM_IO | VM_PFNMAP)) || 40110 (vma->vm_flags & (VM_IO | VM_PFNMAP)) ||
41124 (!ignore && !(vm_flags & vma->vm_flags))) 40111 (!ignore && !(vm_flags & vma->vm_flags)))
41125 return i ? : -EFAULT; 40112 return i ? : -EFAULT;
41126@@ -1351,7 +1352,7 @@ int __get_user_pages(struct task_struct 40113@@ -1356,7 +1357,7 @@ int __get_user_pages(struct task_struct
41127 start += PAGE_SIZE; 40114 start += PAGE_SIZE;
41128 len--; 40115 len--;
41129 } while (len && start < vma->vm_end); 40116 } while (len && start < vma->vm_end);
@@ -41132,7 +40119,7 @@ diff -urNp linux-2.6.29.6/mm/memory.c linux-2.6.29.6/mm/memory.c
41132 return i; 40119 return i;
41133 } 40120 }
41134 40121
41135@@ -1869,6 +1870,186 @@ static inline void cow_user_page(struct 40122@@ -1874,6 +1875,186 @@ static inline void cow_user_page(struct
41136 copy_user_highpage(dst, src, va, vma); 40123 copy_user_highpage(dst, src, va, vma);
41137 } 40124 }
41138 40125
@@ -41319,7 +40306,7 @@ diff -urNp linux-2.6.29.6/mm/memory.c linux-2.6.29.6/mm/memory.c
41319 /* 40306 /*
41320 * This routine handles present pages, when users try to write 40307 * This routine handles present pages, when users try to write
41321 * to a shared page. It is done by copying the page to a new address 40308 * to a shared page. It is done by copying the page to a new address
41322@@ -2041,6 +2222,12 @@ gotten: 40309@@ -2046,6 +2227,12 @@ gotten:
41323 */ 40310 */
41324 page_table = pte_offset_map_lock(mm, pmd, address, &ptl); 40311 page_table = pte_offset_map_lock(mm, pmd, address, &ptl);
41325 if (likely(pte_same(*page_table, orig_pte))) { 40312 if (likely(pte_same(*page_table, orig_pte))) {
@@ -41332,7 +40319,7 @@ diff -urNp linux-2.6.29.6/mm/memory.c linux-2.6.29.6/mm/memory.c
41332 if (old_page) { 40319 if (old_page) {
41333 if (!PageAnon(old_page)) { 40320 if (!PageAnon(old_page)) {
41334 dec_mm_counter(mm, file_rss); 40321 dec_mm_counter(mm, file_rss);
41335@@ -2087,6 +2274,10 @@ gotten: 40322@@ -2092,6 +2279,10 @@ gotten:
41336 page_remove_rmap(old_page); 40323 page_remove_rmap(old_page);
41337 } 40324 }
41338 40325
@@ -41343,7 +40330,7 @@ diff -urNp linux-2.6.29.6/mm/memory.c linux-2.6.29.6/mm/memory.c
41343 /* Free the old page.. */ 40330 /* Free the old page.. */
41344 new_page = old_page; 40331 new_page = old_page;
41345 ret |= VM_FAULT_WRITE; 40332 ret |= VM_FAULT_WRITE;
41346@@ -2368,6 +2559,7 @@ int vmtruncate(struct inode * inode, lof 40333@@ -2373,6 +2564,7 @@ int vmtruncate(struct inode * inode, lof
41347 unsigned long limit; 40334 unsigned long limit;
41348 40335
41349 limit = current->signal->rlim[RLIMIT_FSIZE].rlim_cur; 40336 limit = current->signal->rlim[RLIMIT_FSIZE].rlim_cur;
@@ -41351,7 +40338,7 @@ diff -urNp linux-2.6.29.6/mm/memory.c linux-2.6.29.6/mm/memory.c
41351 if (limit != RLIM_INFINITY && offset > limit) 40338 if (limit != RLIM_INFINITY && offset > limit)
41352 goto out_sig; 40339 goto out_sig;
41353 if (offset > inode->i_sb->s_maxbytes) 40340 if (offset > inode->i_sb->s_maxbytes)
41354@@ -2533,6 +2725,11 @@ static int do_swap_page(struct mm_struct 40341@@ -2535,6 +2727,11 @@ static int do_swap_page(struct mm_struct
41355 swap_free(entry); 40342 swap_free(entry);
41356 if (vm_swap_full() || (vma->vm_flags & VM_LOCKED) || PageMlocked(page)) 40343 if (vm_swap_full() || (vma->vm_flags & VM_LOCKED) || PageMlocked(page))
41357 try_to_free_swap(page); 40344 try_to_free_swap(page);
@@ -41363,7 +40350,7 @@ diff -urNp linux-2.6.29.6/mm/memory.c linux-2.6.29.6/mm/memory.c
41363 unlock_page(page); 40350 unlock_page(page);
41364 40351
41365 if (write_access) { 40352 if (write_access) {
41366@@ -2544,6 +2741,11 @@ static int do_swap_page(struct mm_struct 40353@@ -2546,6 +2743,11 @@ static int do_swap_page(struct mm_struct
41367 40354
41368 /* No need to invalidate - it was non-present before */ 40355 /* No need to invalidate - it was non-present before */
41369 update_mmu_cache(vma, address, pte); 40356 update_mmu_cache(vma, address, pte);
@@ -41375,7 +40362,7 @@ diff -urNp linux-2.6.29.6/mm/memory.c linux-2.6.29.6/mm/memory.c
41375 unlock: 40362 unlock:
41376 pte_unmap_unlock(page_table, ptl); 40363 pte_unmap_unlock(page_table, ptl);
41377 out: 40364 out:
41378@@ -2588,12 +2790,23 @@ static int do_anonymous_page(struct mm_s 40365@@ -2591,12 +2793,23 @@ static int do_anonymous_page(struct mm_s
41379 page_table = pte_offset_map_lock(mm, pmd, address, &ptl); 40366 page_table = pte_offset_map_lock(mm, pmd, address, &ptl);
41380 if (!pte_none(*page_table)) 40367 if (!pte_none(*page_table))
41381 goto release; 40368 goto release;
@@ -41399,7 +40386,7 @@ diff -urNp linux-2.6.29.6/mm/memory.c linux-2.6.29.6/mm/memory.c
41399 unlock: 40386 unlock:
41400 pte_unmap_unlock(page_table, ptl); 40387 pte_unmap_unlock(page_table, ptl);
41401 return 0; 40388 return 0;
41402@@ -2730,6 +2943,12 @@ static int __do_fault(struct mm_struct * 40389@@ -2733,6 +2946,12 @@ static int __do_fault(struct mm_struct *
41403 */ 40390 */
41404 /* Only go through if we didn't race with anybody else... */ 40391 /* Only go through if we didn't race with anybody else... */
41405 if (likely(pte_same(*page_table, orig_pte))) { 40392 if (likely(pte_same(*page_table, orig_pte))) {
@@ -41412,7 +40399,7 @@ diff -urNp linux-2.6.29.6/mm/memory.c linux-2.6.29.6/mm/memory.c
41412 flush_icache_page(vma, page); 40399 flush_icache_page(vma, page);
41413 entry = mk_pte(page, vma->vm_page_prot); 40400 entry = mk_pte(page, vma->vm_page_prot);
41414 if (flags & FAULT_FLAG_WRITE) 40401 if (flags & FAULT_FLAG_WRITE)
41415@@ -2749,6 +2968,14 @@ static int __do_fault(struct mm_struct * 40402@@ -2752,6 +2971,14 @@ static int __do_fault(struct mm_struct *
41416 40403
41417 /* no need to invalidate: a not-present page won't be cached */ 40404 /* no need to invalidate: a not-present page won't be cached */
41418 update_mmu_cache(vma, address, entry); 40405 update_mmu_cache(vma, address, entry);
@@ -41427,7 +40414,7 @@ diff -urNp linux-2.6.29.6/mm/memory.c linux-2.6.29.6/mm/memory.c
41427 } else { 40414 } else {
41428 if (charged) 40415 if (charged)
41429 mem_cgroup_uncharge_page(page); 40416 mem_cgroup_uncharge_page(page);
41430@@ -2897,6 +3124,12 @@ static inline int handle_pte_fault(struc 40417@@ -2900,6 +3127,12 @@ static inline int handle_pte_fault(struc
41431 if (write_access) 40418 if (write_access)
41432 flush_tlb_page(vma, address); 40419 flush_tlb_page(vma, address);
41433 } 40420 }
@@ -41440,7 +40427,7 @@ diff -urNp linux-2.6.29.6/mm/memory.c linux-2.6.29.6/mm/memory.c
41440 unlock: 40427 unlock:
41441 pte_unmap_unlock(pte, ptl); 40428 pte_unmap_unlock(pte, ptl);
41442 return 0; 40429 return 0;
41443@@ -2913,6 +3146,10 @@ int handle_mm_fault(struct mm_struct *mm 40430@@ -2916,6 +3149,10 @@ int handle_mm_fault(struct mm_struct *mm
41444 pmd_t *pmd; 40431 pmd_t *pmd;
41445 pte_t *pte; 40432 pte_t *pte;
41446 40433
@@ -41451,7 +40438,7 @@ diff -urNp linux-2.6.29.6/mm/memory.c linux-2.6.29.6/mm/memory.c
41451 __set_current_state(TASK_RUNNING); 40438 __set_current_state(TASK_RUNNING);
41452 40439
41453 count_vm_event(PGFAULT); 40440 count_vm_event(PGFAULT);
41454@@ -2920,6 +3157,34 @@ int handle_mm_fault(struct mm_struct *mm 40441@@ -2923,6 +3160,34 @@ int handle_mm_fault(struct mm_struct *mm
41455 if (unlikely(is_vm_hugetlb_page(vma))) 40442 if (unlikely(is_vm_hugetlb_page(vma)))
41456 return hugetlb_fault(mm, vma, address, write_access); 40443 return hugetlb_fault(mm, vma, address, write_access);
41457 40444
@@ -41486,7 +40473,7 @@ diff -urNp linux-2.6.29.6/mm/memory.c linux-2.6.29.6/mm/memory.c
41486 pgd = pgd_offset(mm, address); 40473 pgd = pgd_offset(mm, address);
41487 pud = pud_alloc(mm, pgd, address); 40474 pud = pud_alloc(mm, pgd, address);
41488 if (!pud) 40475 if (!pud)
41489@@ -3017,7 +3282,7 @@ static int __init gate_vma_init(void) 40476@@ -3020,7 +3285,7 @@ static int __init gate_vma_init(void)
41490 gate_vma.vm_start = FIXADDR_USER_START; 40477 gate_vma.vm_start = FIXADDR_USER_START;
41491 gate_vma.vm_end = FIXADDR_USER_END; 40478 gate_vma.vm_end = FIXADDR_USER_END;
41492 gate_vma.vm_flags = VM_READ | VM_MAYREAD | VM_EXEC | VM_MAYEXEC; 40479 gate_vma.vm_flags = VM_READ | VM_MAYREAD | VM_EXEC | VM_MAYEXEC;
@@ -41495,9 +40482,9 @@ diff -urNp linux-2.6.29.6/mm/memory.c linux-2.6.29.6/mm/memory.c
41495 /* 40482 /*
41496 * Make sure the vDSO gets into every core dump. 40483 * Make sure the vDSO gets into every core dump.
41497 * Dumping its contents makes post-mortem fully interpretable later 40484 * Dumping its contents makes post-mortem fully interpretable later
41498diff -urNp linux-2.6.29.6/mm/mempolicy.c linux-2.6.29.6/mm/mempolicy.c 40485diff -urNp linux-2.6.30.4/mm/mempolicy.c linux-2.6.30.4/mm/mempolicy.c
41499--- linux-2.6.29.6/mm/mempolicy.c 2009-07-02 19:41:20.000000000 -0400 40486--- linux-2.6.30.4/mm/mempolicy.c 2009-07-24 17:47:51.000000000 -0400
41500+++ linux-2.6.29.6/mm/mempolicy.c 2009-07-23 17:34:32.224099604 -0400 40487+++ linux-2.6.30.4/mm/mempolicy.c 2009-07-30 09:48:10.145161384 -0400
41501@@ -551,6 +551,10 @@ static int mbind_range(struct vm_area_st 40488@@ -551,6 +551,10 @@ static int mbind_range(struct vm_area_st
41502 struct vm_area_struct *next; 40489 struct vm_area_struct *next;
41503 int err; 40490 int err;
@@ -41553,9 +40540,9 @@ diff -urNp linux-2.6.29.6/mm/mempolicy.c linux-2.6.29.6/mm/mempolicy.c
41553 } else if (vma->vm_start <= mm->brk && vma->vm_end >= mm->start_brk) { 40540 } else if (vma->vm_start <= mm->brk && vma->vm_end >= mm->start_brk) {
41554 seq_printf(m, " heap"); 40541 seq_printf(m, " heap");
41555 } else if (vma->vm_start <= mm->start_stack && 40542 } else if (vma->vm_start <= mm->start_stack &&
41556diff -urNp linux-2.6.29.6/mm/mlock.c linux-2.6.29.6/mm/mlock.c 40543diff -urNp linux-2.6.30.4/mm/mlock.c linux-2.6.30.4/mm/mlock.c
41557--- linux-2.6.29.6/mm/mlock.c 2009-07-02 19:41:20.000000000 -0400 40544--- linux-2.6.30.4/mm/mlock.c 2009-07-24 17:47:51.000000000 -0400
41558+++ linux-2.6.29.6/mm/mlock.c 2009-07-23 17:34:32.224099604 -0400 40545+++ linux-2.6.30.4/mm/mlock.c 2009-07-30 11:10:49.799565380 -0400
41559@@ -13,6 +13,7 @@ 40546@@ -13,6 +13,7 @@
41560 #include <linux/pagemap.h> 40547 #include <linux/pagemap.h>
41561 #include <linux/mempolicy.h> 40548 #include <linux/mempolicy.h>
@@ -41624,10 +40611,10 @@ diff -urNp linux-2.6.29.6/mm/mlock.c linux-2.6.29.6/mm/mlock.c
41624 if (!(flags & MCL_CURRENT) || (current->mm->total_vm <= lock_limit) || 40611 if (!(flags & MCL_CURRENT) || (current->mm->total_vm <= lock_limit) ||
41625 capable(CAP_IPC_LOCK)) 40612 capable(CAP_IPC_LOCK))
41626 ret = do_mlockall(flags); 40613 ret = do_mlockall(flags);
41627diff -urNp linux-2.6.29.6/mm/mmap.c linux-2.6.29.6/mm/mmap.c 40614diff -urNp linux-2.6.30.4/mm/mmap.c linux-2.6.30.4/mm/mmap.c
41628--- linux-2.6.29.6/mm/mmap.c 2009-07-02 19:41:20.000000000 -0400 40615--- linux-2.6.30.4/mm/mmap.c 2009-07-24 17:47:51.000000000 -0400
41629+++ linux-2.6.29.6/mm/mmap.c 2009-07-23 19:29:10.716514097 -0400 40616+++ linux-2.6.30.4/mm/mmap.c 2009-07-30 11:10:49.813589536 -0400
41630@@ -43,6 +43,16 @@ 40617@@ -44,6 +44,16 @@
41631 #define arch_rebalance_pgtables(addr, len) (addr) 40618 #define arch_rebalance_pgtables(addr, len) (addr)
41632 #endif 40619 #endif
41633 40620
@@ -41644,7 +40631,7 @@ diff -urNp linux-2.6.29.6/mm/mmap.c linux-2.6.29.6/mm/mmap.c
41644 static void unmap_region(struct mm_struct *mm, 40631 static void unmap_region(struct mm_struct *mm,
41645 struct vm_area_struct *vma, struct vm_area_struct *prev, 40632 struct vm_area_struct *vma, struct vm_area_struct *prev,
41646 unsigned long start, unsigned long end); 40633 unsigned long start, unsigned long end);
41647@@ -68,16 +78,25 @@ static void unmap_region(struct mm_struc 40634@@ -69,16 +79,25 @@ static void unmap_region(struct mm_struc
41648 * x: (no) no x: (no) yes x: (no) yes x: (yes) yes 40635 * x: (no) no x: (no) yes x: (no) yes x: (yes) yes
41649 * 40636 *
41650 */ 40637 */
@@ -41672,7 +40659,7 @@ diff -urNp linux-2.6.29.6/mm/mmap.c linux-2.6.29.6/mm/mmap.c
41672 } 40659 }
41673 EXPORT_SYMBOL(vm_get_page_prot); 40660 EXPORT_SYMBOL(vm_get_page_prot);
41674 40661
41675@@ -229,6 +248,7 @@ static struct vm_area_struct *remove_vma 40662@@ -233,6 +252,7 @@ static struct vm_area_struct *remove_vma
41676 struct vm_area_struct *next = vma->vm_next; 40663 struct vm_area_struct *next = vma->vm_next;
41677 40664
41678 might_sleep(); 40665 might_sleep();
@@ -41680,7 +40667,7 @@ diff -urNp linux-2.6.29.6/mm/mmap.c linux-2.6.29.6/mm/mmap.c
41680 if (vma->vm_ops && vma->vm_ops->close) 40667 if (vma->vm_ops && vma->vm_ops->close)
41681 vma->vm_ops->close(vma); 40668 vma->vm_ops->close(vma);
41682 if (vma->vm_file) { 40669 if (vma->vm_file) {
41683@@ -265,6 +285,7 @@ SYSCALL_DEFINE1(brk, unsigned long, brk) 40670@@ -269,6 +289,7 @@ SYSCALL_DEFINE1(brk, unsigned long, brk)
41684 * not page aligned -Ram Gupta 40671 * not page aligned -Ram Gupta
41685 */ 40672 */
41686 rlim = current->signal->rlim[RLIMIT_DATA].rlim_cur; 40673 rlim = current->signal->rlim[RLIMIT_DATA].rlim_cur;
@@ -41688,7 +40675,7 @@ diff -urNp linux-2.6.29.6/mm/mmap.c linux-2.6.29.6/mm/mmap.c
41688 if (rlim < RLIM_INFINITY && (brk - mm->start_brk) + 40675 if (rlim < RLIM_INFINITY && (brk - mm->start_brk) +
41689 (mm->end_data - mm->start_data) > rlim) 40676 (mm->end_data - mm->start_data) > rlim)
41690 goto out; 40677 goto out;
41691@@ -694,6 +715,12 @@ static int 40678@@ -698,6 +719,12 @@ static int
41692 can_vma_merge_before(struct vm_area_struct *vma, unsigned long vm_flags, 40679 can_vma_merge_before(struct vm_area_struct *vma, unsigned long vm_flags,
41693 struct anon_vma *anon_vma, struct file *file, pgoff_t vm_pgoff) 40680 struct anon_vma *anon_vma, struct file *file, pgoff_t vm_pgoff)
41694 { 40681 {
@@ -41701,7 +40688,7 @@ diff -urNp linux-2.6.29.6/mm/mmap.c linux-2.6.29.6/mm/mmap.c
41701 if (is_mergeable_vma(vma, file, vm_flags) && 40688 if (is_mergeable_vma(vma, file, vm_flags) &&
41702 is_mergeable_anon_vma(anon_vma, vma->anon_vma)) { 40689 is_mergeable_anon_vma(anon_vma, vma->anon_vma)) {
41703 if (vma->vm_pgoff == vm_pgoff) 40690 if (vma->vm_pgoff == vm_pgoff)
41704@@ -713,6 +740,12 @@ static int 40691@@ -717,6 +744,12 @@ static int
41705 can_vma_merge_after(struct vm_area_struct *vma, unsigned long vm_flags, 40692 can_vma_merge_after(struct vm_area_struct *vma, unsigned long vm_flags,
41706 struct anon_vma *anon_vma, struct file *file, pgoff_t vm_pgoff) 40693 struct anon_vma *anon_vma, struct file *file, pgoff_t vm_pgoff)
41707 { 40694 {
@@ -41714,7 +40701,7 @@ diff -urNp linux-2.6.29.6/mm/mmap.c linux-2.6.29.6/mm/mmap.c
41714 if (is_mergeable_vma(vma, file, vm_flags) && 40701 if (is_mergeable_vma(vma, file, vm_flags) &&
41715 is_mergeable_anon_vma(anon_vma, vma->anon_vma)) { 40702 is_mergeable_anon_vma(anon_vma, vma->anon_vma)) {
41716 pgoff_t vm_pglen; 40703 pgoff_t vm_pglen;
41717@@ -755,12 +788,19 @@ can_vma_merge_after(struct vm_area_struc 40704@@ -759,12 +792,19 @@ can_vma_merge_after(struct vm_area_struc
41718 struct vm_area_struct *vma_merge(struct mm_struct *mm, 40705 struct vm_area_struct *vma_merge(struct mm_struct *mm,
41719 struct vm_area_struct *prev, unsigned long addr, 40706 struct vm_area_struct *prev, unsigned long addr,
41720 unsigned long end, unsigned long vm_flags, 40707 unsigned long end, unsigned long vm_flags,
@@ -41735,7 +40722,7 @@ diff -urNp linux-2.6.29.6/mm/mmap.c linux-2.6.29.6/mm/mmap.c
41735 /* 40722 /*
41736 * We later require that vma->vm_flags == vm_flags, 40723 * We later require that vma->vm_flags == vm_flags,
41737 * so this tests vma->vm_flags & VM_SPECIAL, too. 40724 * so this tests vma->vm_flags & VM_SPECIAL, too.
41738@@ -776,6 +816,15 @@ struct vm_area_struct *vma_merge(struct 40725@@ -780,6 +820,15 @@ struct vm_area_struct *vma_merge(struct
41739 if (next && next->vm_end == end) /* cases 6, 7, 8 */ 40726 if (next && next->vm_end == end) /* cases 6, 7, 8 */
41740 next = next->vm_next; 40727 next = next->vm_next;
41741 40728
@@ -41751,7 +40738,7 @@ diff -urNp linux-2.6.29.6/mm/mmap.c linux-2.6.29.6/mm/mmap.c
41751 /* 40738 /*
41752 * Can it merge with the predecessor? 40739 * Can it merge with the predecessor?
41753 */ 40740 */
41754@@ -795,9 +844,24 @@ struct vm_area_struct *vma_merge(struct 40741@@ -799,9 +848,24 @@ struct vm_area_struct *vma_merge(struct
41755 /* cases 1, 6 */ 40742 /* cases 1, 6 */
41756 vma_adjust(prev, prev->vm_start, 40743 vma_adjust(prev, prev->vm_start,
41757 next->vm_end, prev->vm_pgoff, NULL); 40744 next->vm_end, prev->vm_pgoff, NULL);
@@ -41777,7 +40764,7 @@ diff -urNp linux-2.6.29.6/mm/mmap.c linux-2.6.29.6/mm/mmap.c
41777 return prev; 40764 return prev;
41778 } 40765 }
41779 40766
41780@@ -808,12 +872,27 @@ struct vm_area_struct *vma_merge(struct 40767@@ -812,12 +876,27 @@ struct vm_area_struct *vma_merge(struct
41781 mpol_equal(policy, vma_policy(next)) && 40768 mpol_equal(policy, vma_policy(next)) &&
41782 can_vma_merge_before(next, vm_flags, 40769 can_vma_merge_before(next, vm_flags,
41783 anon_vma, file, pgoff+pglen)) { 40770 anon_vma, file, pgoff+pglen)) {
@@ -41807,7 +40794,7 @@ diff -urNp linux-2.6.29.6/mm/mmap.c linux-2.6.29.6/mm/mmap.c
41807 return area; 40794 return area;
41808 } 40795 }
41809 40796
41810@@ -888,14 +967,11 @@ none: 40797@@ -892,14 +971,11 @@ none:
41811 void vm_stat_account(struct mm_struct *mm, unsigned long flags, 40798 void vm_stat_account(struct mm_struct *mm, unsigned long flags,
41812 struct file *file, long pages) 40799 struct file *file, long pages)
41813 { 40800 {
@@ -41823,7 +40810,7 @@ diff -urNp linux-2.6.29.6/mm/mmap.c linux-2.6.29.6/mm/mmap.c
41823 mm->stack_vm += pages; 40810 mm->stack_vm += pages;
41824 if (flags & (VM_RESERVED|VM_IO)) 40811 if (flags & (VM_RESERVED|VM_IO))
41825 mm->reserved_vm += pages; 40812 mm->reserved_vm += pages;
41826@@ -922,7 +998,7 @@ unsigned long do_mmap_pgoff(struct file 40813@@ -926,7 +1002,7 @@ unsigned long do_mmap_pgoff(struct file
41827 * (the exception is when the underlying filesystem is noexec 40814 * (the exception is when the underlying filesystem is noexec
41828 * mounted, in which case we dont add PROT_EXEC.) 40815 * mounted, in which case we dont add PROT_EXEC.)
41829 */ 40816 */
@@ -41832,7 +40819,7 @@ diff -urNp linux-2.6.29.6/mm/mmap.c linux-2.6.29.6/mm/mmap.c
41832 if (!(file && (file->f_path.mnt->mnt_flags & MNT_NOEXEC))) 40819 if (!(file && (file->f_path.mnt->mnt_flags & MNT_NOEXEC)))
41833 prot |= PROT_EXEC; 40820 prot |= PROT_EXEC;
41834 40821
41835@@ -932,15 +1008,15 @@ unsigned long do_mmap_pgoff(struct file 40822@@ -936,15 +1012,15 @@ unsigned long do_mmap_pgoff(struct file
41836 if (!(flags & MAP_FIXED)) 40823 if (!(flags & MAP_FIXED))
41837 addr = round_hint_to_min(addr); 40824 addr = round_hint_to_min(addr);
41838 40825
@@ -41852,7 +40839,7 @@ diff -urNp linux-2.6.29.6/mm/mmap.c linux-2.6.29.6/mm/mmap.c
41852 /* offset overflow? */ 40839 /* offset overflow? */
41853 if ((pgoff + (len >> PAGE_SHIFT)) < pgoff) 40840 if ((pgoff + (len >> PAGE_SHIFT)) < pgoff)
41854 return -EOVERFLOW; 40841 return -EOVERFLOW;
41855@@ -952,7 +1028,7 @@ unsigned long do_mmap_pgoff(struct file 40842@@ -956,7 +1032,7 @@ unsigned long do_mmap_pgoff(struct file
41856 /* Obtain the address to map to. we verify (or select) it and ensure 40843 /* Obtain the address to map to. we verify (or select) it and ensure
41857 * that it represents a valid section of the address space. 40844 * that it represents a valid section of the address space.
41858 */ 40845 */
@@ -41861,7 +40848,7 @@ diff -urNp linux-2.6.29.6/mm/mmap.c linux-2.6.29.6/mm/mmap.c
41861 if (addr & ~PAGE_MASK) 40848 if (addr & ~PAGE_MASK)
41862 return addr; 40849 return addr;
41863 40850
41864@@ -963,6 +1039,26 @@ unsigned long do_mmap_pgoff(struct file 40851@@ -967,6 +1043,26 @@ unsigned long do_mmap_pgoff(struct file
41865 vm_flags = calc_vm_prot_bits(prot) | calc_vm_flag_bits(flags) | 40852 vm_flags = calc_vm_prot_bits(prot) | calc_vm_flag_bits(flags) |
41866 mm->def_flags | VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC; 40853 mm->def_flags | VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC;
41867 40854
@@ -41888,7 +40875,7 @@ diff -urNp linux-2.6.29.6/mm/mmap.c linux-2.6.29.6/mm/mmap.c
41888 if (flags & MAP_LOCKED) { 40875 if (flags & MAP_LOCKED) {
41889 if (!can_do_mlock()) 40876 if (!can_do_mlock())
41890 return -EPERM; 40877 return -EPERM;
41891@@ -976,6 +1072,7 @@ unsigned long do_mmap_pgoff(struct file 40878@@ -980,6 +1076,7 @@ unsigned long do_mmap_pgoff(struct file
41892 locked += mm->locked_vm; 40879 locked += mm->locked_vm;
41893 lock_limit = current->signal->rlim[RLIMIT_MEMLOCK].rlim_cur; 40880 lock_limit = current->signal->rlim[RLIMIT_MEMLOCK].rlim_cur;
41894 lock_limit >>= PAGE_SHIFT; 40881 lock_limit >>= PAGE_SHIFT;
@@ -41896,7 +40883,7 @@ diff -urNp linux-2.6.29.6/mm/mmap.c linux-2.6.29.6/mm/mmap.c
41896 if (locked > lock_limit && !capable(CAP_IPC_LOCK)) 40883 if (locked > lock_limit && !capable(CAP_IPC_LOCK))
41897 return -EAGAIN; 40884 return -EAGAIN;
41898 } 40885 }
41899@@ -1046,6 +1143,9 @@ unsigned long do_mmap_pgoff(struct file 40886@@ -1053,6 +1150,9 @@ unsigned long do_mmap_pgoff(struct file
41900 if (error) 40887 if (error)
41901 return error; 40888 return error;
41902 40889
@@ -41906,7 +40893,7 @@ diff -urNp linux-2.6.29.6/mm/mmap.c linux-2.6.29.6/mm/mmap.c
41906 return mmap_region(file, addr, len, flags, vm_flags, pgoff); 40893 return mmap_region(file, addr, len, flags, vm_flags, pgoff);
41907 } 40894 }
41908 EXPORT_SYMBOL(do_mmap_pgoff); 40895 EXPORT_SYMBOL(do_mmap_pgoff);
41909@@ -1058,10 +1158,10 @@ EXPORT_SYMBOL(do_mmap_pgoff); 40896@@ -1065,10 +1165,10 @@ EXPORT_SYMBOL(do_mmap_pgoff);
41910 */ 40897 */
41911 int vma_wants_writenotify(struct vm_area_struct *vma) 40898 int vma_wants_writenotify(struct vm_area_struct *vma)
41912 { 40899 {
@@ -41919,7 +40906,7 @@ diff -urNp linux-2.6.29.6/mm/mmap.c linux-2.6.29.6/mm/mmap.c
41919 return 0; 40906 return 0;
41920 40907
41921 /* The backer wishes to know when pages are first written to? */ 40908 /* The backer wishes to know when pages are first written to? */
41922@@ -1110,14 +1210,24 @@ unsigned long mmap_region(struct file *f 40909@@ -1117,14 +1217,24 @@ unsigned long mmap_region(struct file *f
41923 unsigned long charged = 0; 40910 unsigned long charged = 0;
41924 struct inode *inode = file ? file->f_path.dentry->d_inode : NULL; 40911 struct inode *inode = file ? file->f_path.dentry->d_inode : NULL;
41925 40912
@@ -41946,7 +40933,7 @@ diff -urNp linux-2.6.29.6/mm/mmap.c linux-2.6.29.6/mm/mmap.c
41946 } 40933 }
41947 40934
41948 /* Check against address space limit. */ 40935 /* Check against address space limit. */
41949@@ -1166,6 +1276,16 @@ munmap_back: 40936@@ -1173,6 +1283,16 @@ munmap_back:
41950 goto unacct_error; 40937 goto unacct_error;
41951 } 40938 }
41952 40939
@@ -41963,7 +40950,7 @@ diff -urNp linux-2.6.29.6/mm/mmap.c linux-2.6.29.6/mm/mmap.c
41963 vma->vm_mm = mm; 40950 vma->vm_mm = mm;
41964 vma->vm_start = addr; 40951 vma->vm_start = addr;
41965 vma->vm_end = addr + len; 40952 vma->vm_end = addr + len;
41966@@ -1188,6 +1308,19 @@ munmap_back: 40953@@ -1195,6 +1315,19 @@ munmap_back:
41967 error = file->f_op->mmap(file, vma); 40954 error = file->f_op->mmap(file, vma);
41968 if (error) 40955 if (error)
41969 goto unmap_and_free_vma; 40956 goto unmap_and_free_vma;
@@ -41983,7 +40970,7 @@ diff -urNp linux-2.6.29.6/mm/mmap.c linux-2.6.29.6/mm/mmap.c
41983 if (vm_flags & VM_EXECUTABLE) 40970 if (vm_flags & VM_EXECUTABLE)
41984 added_exe_file_vma(mm); 40971 added_exe_file_vma(mm);
41985 } else if (vm_flags & VM_SHARED) { 40972 } else if (vm_flags & VM_SHARED) {
41986@@ -1211,12 +1344,18 @@ munmap_back: 40973@@ -1218,12 +1351,18 @@ munmap_back:
41987 vma_link(mm, vma, prev, rb_link, rb_parent); 40974 vma_link(mm, vma, prev, rb_link, rb_parent);
41988 file = vma->vm_file; 40975 file = vma->vm_file;
41989 40976
@@ -42002,7 +40989,7 @@ diff -urNp linux-2.6.29.6/mm/mmap.c linux-2.6.29.6/mm/mmap.c
42002 if (vm_flags & VM_LOCKED) { 40989 if (vm_flags & VM_LOCKED) {
42003 /* 40990 /*
42004 * makes pages present; downgrades, drops, reacquires mmap_sem 40991 * makes pages present; downgrades, drops, reacquires mmap_sem
42005@@ -1239,6 +1378,12 @@ unmap_and_free_vma: 40992@@ -1246,6 +1385,12 @@ unmap_and_free_vma:
42006 unmap_region(mm, vma, prev, vma->vm_start, vma->vm_end); 40993 unmap_region(mm, vma, prev, vma->vm_start, vma->vm_end);
42007 charged = 0; 40994 charged = 0;
42008 free_vma: 40995 free_vma:
@@ -42015,7 +41002,7 @@ diff -urNp linux-2.6.29.6/mm/mmap.c linux-2.6.29.6/mm/mmap.c
42015 kmem_cache_free(vm_area_cachep, vma); 41002 kmem_cache_free(vm_area_cachep, vma);
42016 unacct_error: 41003 unacct_error:
42017 if (charged) 41004 if (charged)
42018@@ -1272,6 +1417,10 @@ arch_get_unmapped_area(struct file *filp 41005@@ -1279,6 +1424,10 @@ arch_get_unmapped_area(struct file *filp
42019 if (flags & MAP_FIXED) 41006 if (flags & MAP_FIXED)
42020 return addr; 41007 return addr;
42021 41008
@@ -42026,7 +41013,7 @@ diff -urNp linux-2.6.29.6/mm/mmap.c linux-2.6.29.6/mm/mmap.c
42026 if (addr) { 41013 if (addr) {
42027 addr = PAGE_ALIGN(addr); 41014 addr = PAGE_ALIGN(addr);
42028 vma = find_vma(mm, addr); 41015 vma = find_vma(mm, addr);
42029@@ -1280,10 +1429,10 @@ arch_get_unmapped_area(struct file *filp 41016@@ -1287,10 +1436,10 @@ arch_get_unmapped_area(struct file *filp
42030 return addr; 41017 return addr;
42031 } 41018 }
42032 if (len > mm->cached_hole_size) { 41019 if (len > mm->cached_hole_size) {
@@ -42040,7 +41027,7 @@ diff -urNp linux-2.6.29.6/mm/mmap.c linux-2.6.29.6/mm/mmap.c
42040 } 41027 }
42041 41028
42042 full_search: 41029 full_search:
42043@@ -1294,9 +1443,8 @@ full_search: 41030@@ -1301,9 +1450,8 @@ full_search:
42044 * Start a new search - just in case we missed 41031 * Start a new search - just in case we missed
42045 * some holes. 41032 * some holes.
42046 */ 41033 */
@@ -42052,7 +41039,7 @@ diff -urNp linux-2.6.29.6/mm/mmap.c linux-2.6.29.6/mm/mmap.c
42052 mm->cached_hole_size = 0; 41039 mm->cached_hole_size = 0;
42053 goto full_search; 41040 goto full_search;
42054 } 41041 }
42055@@ -1318,10 +1466,16 @@ full_search: 41042@@ -1325,10 +1473,16 @@ full_search:
42056 41043
42057 void arch_unmap_area(struct mm_struct *mm, unsigned long addr) 41044 void arch_unmap_area(struct mm_struct *mm, unsigned long addr)
42058 { 41045 {
@@ -42070,7 +41057,7 @@ diff -urNp linux-2.6.29.6/mm/mmap.c linux-2.6.29.6/mm/mmap.c
42070 mm->free_area_cache = addr; 41057 mm->free_area_cache = addr;
42071 mm->cached_hole_size = ~0UL; 41058 mm->cached_hole_size = ~0UL;
42072 } 41059 }
42073@@ -1339,7 +1493,7 @@ arch_get_unmapped_area_topdown(struct fi 41060@@ -1346,7 +1500,7 @@ arch_get_unmapped_area_topdown(struct fi
42074 { 41061 {
42075 struct vm_area_struct *vma; 41062 struct vm_area_struct *vma;
42076 struct mm_struct *mm = current->mm; 41063 struct mm_struct *mm = current->mm;
@@ -42079,7 +41066,7 @@ diff -urNp linux-2.6.29.6/mm/mmap.c linux-2.6.29.6/mm/mmap.c
42079 41066
42080 /* requested length too big for entire address space */ 41067 /* requested length too big for entire address space */
42081 if (len > TASK_SIZE) 41068 if (len > TASK_SIZE)
42082@@ -1348,6 +1502,10 @@ arch_get_unmapped_area_topdown(struct fi 41069@@ -1355,6 +1509,10 @@ arch_get_unmapped_area_topdown(struct fi
42083 if (flags & MAP_FIXED) 41070 if (flags & MAP_FIXED)
42084 return addr; 41071 return addr;
42085 41072
@@ -42090,7 +41077,7 @@ diff -urNp linux-2.6.29.6/mm/mmap.c linux-2.6.29.6/mm/mmap.c
42090 /* requesting a specific address */ 41077 /* requesting a specific address */
42091 if (addr) { 41078 if (addr) {
42092 addr = PAGE_ALIGN(addr); 41079 addr = PAGE_ALIGN(addr);
42093@@ -1405,13 +1563,21 @@ bottomup: 41080@@ -1412,13 +1570,21 @@ bottomup:
42094 * can happen with large stack limits and large mmap() 41081 * can happen with large stack limits and large mmap()
42095 * allocations. 41082 * allocations.
42096 */ 41083 */
@@ -42114,7 +41101,7 @@ diff -urNp linux-2.6.29.6/mm/mmap.c linux-2.6.29.6/mm/mmap.c
42114 mm->cached_hole_size = ~0UL; 41101 mm->cached_hole_size = ~0UL;
42115 41102
42116 return addr; 41103 return addr;
42117@@ -1420,6 +1586,12 @@ bottomup: 41104@@ -1427,6 +1593,12 @@ bottomup:
42118 41105
42119 void arch_unmap_area_topdown(struct mm_struct *mm, unsigned long addr) 41106 void arch_unmap_area_topdown(struct mm_struct *mm, unsigned long addr)
42120 { 41107 {
@@ -42127,7 +41114,7 @@ diff -urNp linux-2.6.29.6/mm/mmap.c linux-2.6.29.6/mm/mmap.c
42127 /* 41114 /*
42128 * Is this a new hole at the highest possible address? 41115 * Is this a new hole at the highest possible address?
42129 */ 41116 */
42130@@ -1427,8 +1599,10 @@ void arch_unmap_area_topdown(struct mm_s 41117@@ -1434,8 +1606,10 @@ void arch_unmap_area_topdown(struct mm_s
42131 mm->free_area_cache = addr; 41118 mm->free_area_cache = addr;
42132 41119
42133 /* dont allow allocations above current base */ 41120 /* dont allow allocations above current base */
@@ -42139,7 +41126,7 @@ diff -urNp linux-2.6.29.6/mm/mmap.c linux-2.6.29.6/mm/mmap.c
42139 } 41126 }
42140 41127
42141 unsigned long 41128 unsigned long
42142@@ -1528,6 +1702,27 @@ out: 41129@@ -1535,6 +1709,27 @@ out:
42143 return prev ? prev->vm_next : vma; 41130 return prev ? prev->vm_next : vma;
42144 } 41131 }
42145 41132
@@ -42167,7 +41154,7 @@ diff -urNp linux-2.6.29.6/mm/mmap.c linux-2.6.29.6/mm/mmap.c
42167 /* 41154 /*
42168 * Verify that the stack growth is acceptable and 41155 * Verify that the stack growth is acceptable and
42169 * update accounting. This is shared with both the 41156 * update accounting. This is shared with both the
42170@@ -1544,6 +1739,7 @@ static int acct_stack_growth(struct vm_a 41157@@ -1551,6 +1746,7 @@ static int acct_stack_growth(struct vm_a
42171 return -ENOMEM; 41158 return -ENOMEM;
42172 41159
42173 /* Stack limit test */ 41160 /* Stack limit test */
@@ -42175,7 +41162,7 @@ diff -urNp linux-2.6.29.6/mm/mmap.c linux-2.6.29.6/mm/mmap.c
42175 if (size > rlim[RLIMIT_STACK].rlim_cur) 41162 if (size > rlim[RLIMIT_STACK].rlim_cur)
42176 return -ENOMEM; 41163 return -ENOMEM;
42177 41164
42178@@ -1553,6 +1749,7 @@ static int acct_stack_growth(struct vm_a 41165@@ -1560,6 +1756,7 @@ static int acct_stack_growth(struct vm_a
42179 unsigned long limit; 41166 unsigned long limit;
42180 locked = mm->locked_vm + grow; 41167 locked = mm->locked_vm + grow;
42181 limit = rlim[RLIMIT_MEMLOCK].rlim_cur >> PAGE_SHIFT; 41168 limit = rlim[RLIMIT_MEMLOCK].rlim_cur >> PAGE_SHIFT;
@@ -42183,7 +41170,7 @@ diff -urNp linux-2.6.29.6/mm/mmap.c linux-2.6.29.6/mm/mmap.c
42183 if (locked > limit && !capable(CAP_IPC_LOCK)) 41170 if (locked > limit && !capable(CAP_IPC_LOCK))
42184 return -ENOMEM; 41171 return -ENOMEM;
42185 } 41172 }
42186@@ -1588,35 +1785,40 @@ static 41173@@ -1595,35 +1792,40 @@ static
42187 #endif 41174 #endif
42188 int expand_upwards(struct vm_area_struct *vma, unsigned long address) 41175 int expand_upwards(struct vm_area_struct *vma, unsigned long address)
42189 { 41176 {
@@ -42234,7 +41221,7 @@ diff -urNp linux-2.6.29.6/mm/mmap.c linux-2.6.29.6/mm/mmap.c
42234 unsigned long size, grow; 41221 unsigned long size, grow;
42235 41222
42236 size = address - vma->vm_start; 41223 size = address - vma->vm_start;
42237@@ -1626,6 +1828,8 @@ int expand_upwards(struct vm_area_struct 41224@@ -1633,6 +1835,8 @@ int expand_upwards(struct vm_area_struct
42238 if (!error) 41225 if (!error)
42239 vma->vm_end = address; 41226 vma->vm_end = address;
42240 } 41227 }
@@ -42243,7 +41230,7 @@ diff -urNp linux-2.6.29.6/mm/mmap.c linux-2.6.29.6/mm/mmap.c
42243 anon_vma_unlock(vma); 41230 anon_vma_unlock(vma);
42244 return error; 41231 return error;
42245 } 41232 }
42246@@ -1637,7 +1841,8 @@ int expand_upwards(struct vm_area_struct 41233@@ -1644,7 +1848,8 @@ int expand_upwards(struct vm_area_struct
42247 static int expand_downwards(struct vm_area_struct *vma, 41234 static int expand_downwards(struct vm_area_struct *vma,
42248 unsigned long address) 41235 unsigned long address)
42249 { 41236 {
@@ -42253,7 +41240,7 @@ diff -urNp linux-2.6.29.6/mm/mmap.c linux-2.6.29.6/mm/mmap.c
42253 41240
42254 /* 41241 /*
42255 * We must make sure the anon_vma is allocated 41242 * We must make sure the anon_vma is allocated
42256@@ -1651,6 +1856,15 @@ static int expand_downwards(struct vm_ar 41243@@ -1658,6 +1863,15 @@ static int expand_downwards(struct vm_ar
42257 if (error) 41244 if (error)
42258 return error; 41245 return error;
42259 41246
@@ -42269,7 +41256,7 @@ diff -urNp linux-2.6.29.6/mm/mmap.c linux-2.6.29.6/mm/mmap.c
42269 anon_vma_lock(vma); 41256 anon_vma_lock(vma);
42270 41257
42271 /* 41258 /*
42272@@ -1660,9 +1874,15 @@ static int expand_downwards(struct vm_ar 41259@@ -1667,9 +1881,15 @@ static int expand_downwards(struct vm_ar
42273 */ 41260 */
42274 41261
42275 /* Somebody else might have raced and expanded it already */ 41262 /* Somebody else might have raced and expanded it already */
@@ -42286,7 +41273,7 @@ diff -urNp linux-2.6.29.6/mm/mmap.c linux-2.6.29.6/mm/mmap.c
42286 size = vma->vm_end - address; 41273 size = vma->vm_end - address;
42287 grow = (vma->vm_start - address) >> PAGE_SHIFT; 41274 grow = (vma->vm_start - address) >> PAGE_SHIFT;
42288 41275
42289@@ -1670,9 +1890,20 @@ static int expand_downwards(struct vm_ar 41276@@ -1677,9 +1897,20 @@ static int expand_downwards(struct vm_ar
42290 if (!error) { 41277 if (!error) {
42291 vma->vm_start = address; 41278 vma->vm_start = address;
42292 vma->vm_pgoff -= grow; 41279 vma->vm_pgoff -= grow;
@@ -42307,7 +41294,7 @@ diff -urNp linux-2.6.29.6/mm/mmap.c linux-2.6.29.6/mm/mmap.c
42307 return error; 41294 return error;
42308 } 41295 }
42309 41296
42310@@ -1748,6 +1979,13 @@ static void remove_vma_list(struct mm_st 41297@@ -1755,6 +1986,13 @@ static void remove_vma_list(struct mm_st
42311 do { 41298 do {
42312 long nrpages = vma_pages(vma); 41299 long nrpages = vma_pages(vma);
42313 41300
@@ -42321,7 +41308,7 @@ diff -urNp linux-2.6.29.6/mm/mmap.c linux-2.6.29.6/mm/mmap.c
42321 mm->total_vm -= nrpages; 41308 mm->total_vm -= nrpages;
42322 vm_stat_account(mm, vma->vm_flags, vma->vm_file, -nrpages); 41309 vm_stat_account(mm, vma->vm_flags, vma->vm_file, -nrpages);
42323 vma = remove_vma(vma); 41310 vma = remove_vma(vma);
42324@@ -1792,6 +2030,16 @@ detach_vmas_to_be_unmapped(struct mm_str 41311@@ -1799,6 +2037,16 @@ detach_vmas_to_be_unmapped(struct mm_str
42325 41312
42326 insertion_point = (prev ? &prev->vm_next : &mm->mmap); 41313 insertion_point = (prev ? &prev->vm_next : &mm->mmap);
42327 do { 41314 do {
@@ -42338,7 +41325,7 @@ diff -urNp linux-2.6.29.6/mm/mmap.c linux-2.6.29.6/mm/mmap.c
42338 rb_erase(&vma->vm_rb, &mm->mm_rb); 41325 rb_erase(&vma->vm_rb, &mm->mm_rb);
42339 mm->map_count--; 41326 mm->map_count--;
42340 tail_vma = vma; 41327 tail_vma = vma;
42341@@ -1811,6 +2059,108 @@ detach_vmas_to_be_unmapped(struct mm_str 41328@@ -1818,6 +2066,108 @@ detach_vmas_to_be_unmapped(struct mm_str
42342 * Split a vma into two pieces at address 'addr', a new vma is allocated 41329 * Split a vma into two pieces at address 'addr', a new vma is allocated
42343 * either for the first part or the tail. 41330 * either for the first part or the tail.
42344 */ 41331 */
@@ -42447,7 +41434,7 @@ diff -urNp linux-2.6.29.6/mm/mmap.c linux-2.6.29.6/mm/mmap.c
42447 int split_vma(struct mm_struct * mm, struct vm_area_struct * vma, 41434 int split_vma(struct mm_struct * mm, struct vm_area_struct * vma,
42448 unsigned long addr, int new_below) 41435 unsigned long addr, int new_below)
42449 { 41436 {
42450@@ -1862,17 +2212,37 @@ int split_vma(struct mm_struct * mm, str 41437@@ -1869,17 +2219,37 @@ int split_vma(struct mm_struct * mm, str
42451 41438
42452 return 0; 41439 return 0;
42453 } 41440 }
@@ -42485,7 +41472,7 @@ diff -urNp linux-2.6.29.6/mm/mmap.c linux-2.6.29.6/mm/mmap.c
42485 if ((start & ~PAGE_MASK) || start > TASK_SIZE || len > TASK_SIZE-start) 41472 if ((start & ~PAGE_MASK) || start > TASK_SIZE || len > TASK_SIZE-start)
42486 return -EINVAL; 41473 return -EINVAL;
42487 41474
42488@@ -1936,6 +2306,8 @@ int do_munmap(struct mm_struct *mm, unsi 41475@@ -1943,6 +2313,8 @@ int do_munmap(struct mm_struct *mm, unsi
42489 /* Fix up all other VM information */ 41476 /* Fix up all other VM information */
42490 remove_vma_list(mm, vma); 41477 remove_vma_list(mm, vma);
42491 41478
@@ -42494,7 +41481,7 @@ diff -urNp linux-2.6.29.6/mm/mmap.c linux-2.6.29.6/mm/mmap.c
42494 return 0; 41481 return 0;
42495 } 41482 }
42496 41483
42497@@ -1948,22 +2320,18 @@ SYSCALL_DEFINE2(munmap, unsigned long, a 41484@@ -1955,22 +2327,18 @@ SYSCALL_DEFINE2(munmap, unsigned long, a
42498 41485
42499 profile_munmap(addr); 41486 profile_munmap(addr);
42500 41487
@@ -42523,7 +41510,7 @@ diff -urNp linux-2.6.29.6/mm/mmap.c linux-2.6.29.6/mm/mmap.c
42523 /* 41510 /*
42524 * this is really a simplified "do_mmap". it only handles 41511 * this is really a simplified "do_mmap". it only handles
42525 * anonymous maps. eventually we may be able to do some 41512 * anonymous maps. eventually we may be able to do some
42526@@ -1977,6 +2345,11 @@ unsigned long do_brk(unsigned long addr, 41513@@ -1984,6 +2352,11 @@ unsigned long do_brk(unsigned long addr,
42527 struct rb_node ** rb_link, * rb_parent; 41514 struct rb_node ** rb_link, * rb_parent;
42528 pgoff_t pgoff = addr >> PAGE_SHIFT; 41515 pgoff_t pgoff = addr >> PAGE_SHIFT;
42529 int error; 41516 int error;
@@ -42535,7 +41522,7 @@ diff -urNp linux-2.6.29.6/mm/mmap.c linux-2.6.29.6/mm/mmap.c
42535 41522
42536 len = PAGE_ALIGN(len); 41523 len = PAGE_ALIGN(len);
42537 if (!len) 41524 if (!len)
42538@@ -1994,19 +2367,34 @@ unsigned long do_brk(unsigned long addr, 41525@@ -2001,19 +2374,34 @@ unsigned long do_brk(unsigned long addr,
42539 41526
42540 flags = VM_DATA_DEFAULT_FLAGS | VM_ACCOUNT | mm->def_flags; 41527 flags = VM_DATA_DEFAULT_FLAGS | VM_ACCOUNT | mm->def_flags;
42541 41528
@@ -42571,7 +41558,7 @@ diff -urNp linux-2.6.29.6/mm/mmap.c linux-2.6.29.6/mm/mmap.c
42571 if (locked > lock_limit && !capable(CAP_IPC_LOCK)) 41558 if (locked > lock_limit && !capable(CAP_IPC_LOCK))
42572 return -EAGAIN; 41559 return -EAGAIN;
42573 } 41560 }
42574@@ -2020,22 +2408,22 @@ unsigned long do_brk(unsigned long addr, 41561@@ -2027,22 +2415,22 @@ unsigned long do_brk(unsigned long addr,
42575 /* 41562 /*
42576 * Clear old maps. this also does some error checking for us 41563 * Clear old maps. this also does some error checking for us
42577 */ 41564 */
@@ -42598,7 +41585,7 @@ diff -urNp linux-2.6.29.6/mm/mmap.c linux-2.6.29.6/mm/mmap.c
42598 return -ENOMEM; 41585 return -ENOMEM;
42599 41586
42600 /* Can we just expand an old private anonymous mapping? */ 41587 /* Can we just expand an old private anonymous mapping? */
42601@@ -2049,10 +2437,21 @@ unsigned long do_brk(unsigned long addr, 41588@@ -2056,10 +2444,21 @@ unsigned long do_brk(unsigned long addr,
42602 */ 41589 */
42603 vma = kmem_cache_zalloc(vm_area_cachep, GFP_KERNEL); 41590 vma = kmem_cache_zalloc(vm_area_cachep, GFP_KERNEL);
42604 if (!vma) { 41591 if (!vma) {
@@ -42621,7 +41608,7 @@ diff -urNp linux-2.6.29.6/mm/mmap.c linux-2.6.29.6/mm/mmap.c
42621 vma->vm_mm = mm; 41608 vma->vm_mm = mm;
42622 vma->vm_start = addr; 41609 vma->vm_start = addr;
42623 vma->vm_end = addr + len; 41610 vma->vm_end = addr + len;
42624@@ -2061,11 +2460,12 @@ unsigned long do_brk(unsigned long addr, 41611@@ -2068,11 +2467,12 @@ unsigned long do_brk(unsigned long addr,
42625 vma->vm_page_prot = vm_get_page_prot(flags); 41612 vma->vm_page_prot = vm_get_page_prot(flags);
42626 vma_link(mm, vma, prev, rb_link, rb_parent); 41613 vma_link(mm, vma, prev, rb_link, rb_parent);
42627 out: 41614 out:
@@ -42636,7 +41623,7 @@ diff -urNp linux-2.6.29.6/mm/mmap.c linux-2.6.29.6/mm/mmap.c
42636 return addr; 41623 return addr;
42637 } 41624 }
42638 41625
42639@@ -2111,8 +2511,10 @@ void exit_mmap(struct mm_struct *mm) 41626@@ -2118,8 +2518,10 @@ void exit_mmap(struct mm_struct *mm)
42640 * Walk the list again, actually closing and freeing it, 41627 * Walk the list again, actually closing and freeing it,
42641 * with preemption enabled, without holding any MM locks. 41628 * with preemption enabled, without holding any MM locks.
42642 */ 41629 */
@@ -42648,7 +41635,7 @@ diff -urNp linux-2.6.29.6/mm/mmap.c linux-2.6.29.6/mm/mmap.c
42648 41635
42649 BUG_ON(mm->nr_ptes > (FIRST_USER_ADDRESS+PMD_SIZE-1)>>PMD_SHIFT); 41636 BUG_ON(mm->nr_ptes > (FIRST_USER_ADDRESS+PMD_SIZE-1)>>PMD_SHIFT);
42650 } 41637 }
42651@@ -2126,6 +2528,10 @@ int insert_vm_struct(struct mm_struct * 41638@@ -2133,6 +2535,10 @@ int insert_vm_struct(struct mm_struct *
42652 struct vm_area_struct * __vma, * prev; 41639 struct vm_area_struct * __vma, * prev;
42653 struct rb_node ** rb_link, * rb_parent; 41640 struct rb_node ** rb_link, * rb_parent;
42654 41641
@@ -42659,7 +41646,7 @@ diff -urNp linux-2.6.29.6/mm/mmap.c linux-2.6.29.6/mm/mmap.c
42659 /* 41646 /*
42660 * The vm_pgoff of a purely anonymous vma should be irrelevant 41647 * The vm_pgoff of a purely anonymous vma should be irrelevant
42661 * until its first write fault, when page's anon_vma and index 41648 * until its first write fault, when page's anon_vma and index
42662@@ -2148,7 +2554,22 @@ int insert_vm_struct(struct mm_struct * 41649@@ -2155,7 +2561,22 @@ int insert_vm_struct(struct mm_struct *
42663 if ((vma->vm_flags & VM_ACCOUNT) && 41650 if ((vma->vm_flags & VM_ACCOUNT) &&
42664 security_vm_enough_memory_mm(mm, vma_pages(vma))) 41651 security_vm_enough_memory_mm(mm, vma_pages(vma)))
42665 return -ENOMEM; 41652 return -ENOMEM;
@@ -42682,7 +41669,7 @@ diff -urNp linux-2.6.29.6/mm/mmap.c linux-2.6.29.6/mm/mmap.c
42682 return 0; 41669 return 0;
42683 } 41670 }
42684 41671
42685@@ -2166,6 +2587,8 @@ struct vm_area_struct *copy_vma(struct v 41672@@ -2173,6 +2594,8 @@ struct vm_area_struct *copy_vma(struct v
42686 struct rb_node **rb_link, *rb_parent; 41673 struct rb_node **rb_link, *rb_parent;
42687 struct mempolicy *pol; 41674 struct mempolicy *pol;
42688 41675
@@ -42691,7 +41678,7 @@ diff -urNp linux-2.6.29.6/mm/mmap.c linux-2.6.29.6/mm/mmap.c
42691 /* 41678 /*
42692 * If anonymous vma has not yet been faulted, update new pgoff 41679 * If anonymous vma has not yet been faulted, update new pgoff
42693 * to match new location, to increase its chance of merging. 41680 * to match new location, to increase its chance of merging.
42694@@ -2209,6 +2632,35 @@ struct vm_area_struct *copy_vma(struct v 41681@@ -2216,6 +2639,35 @@ struct vm_area_struct *copy_vma(struct v
42695 return new_vma; 41682 return new_vma;
42696 } 41683 }
42697 41684
@@ -42727,7 +41714,7 @@ diff -urNp linux-2.6.29.6/mm/mmap.c linux-2.6.29.6/mm/mmap.c
42727 /* 41714 /*
42728 * Return true if the calling process may expand its vm space by the passed 41715 * Return true if the calling process may expand its vm space by the passed
42729 * number of pages 41716 * number of pages
42730@@ -2219,7 +2671,7 @@ int may_expand_vm(struct mm_struct *mm, 41717@@ -2226,7 +2678,7 @@ int may_expand_vm(struct mm_struct *mm,
42731 unsigned long lim; 41718 unsigned long lim;
42732 41719
42733 lim = current->signal->rlim[RLIMIT_AS].rlim_cur >> PAGE_SHIFT; 41720 lim = current->signal->rlim[RLIMIT_AS].rlim_cur >> PAGE_SHIFT;
@@ -42736,7 +41723,7 @@ diff -urNp linux-2.6.29.6/mm/mmap.c linux-2.6.29.6/mm/mmap.c
42736 if (cur + npages > lim) 41723 if (cur + npages > lim)
42737 return 0; 41724 return 0;
42738 return 1; 41725 return 1;
42739@@ -2260,7 +2712,7 @@ static void special_mapping_close(struct 41726@@ -2267,7 +2719,7 @@ static void special_mapping_close(struct
42740 { 41727 {
42741 } 41728 }
42742 41729
@@ -42745,7 +41732,7 @@ diff -urNp linux-2.6.29.6/mm/mmap.c linux-2.6.29.6/mm/mmap.c
42745 .close = special_mapping_close, 41732 .close = special_mapping_close,
42746 .fault = special_mapping_fault, 41733 .fault = special_mapping_fault,
42747 }; 41734 };
42748@@ -2288,6 +2740,15 @@ int install_special_mapping(struct mm_st 41735@@ -2295,6 +2747,15 @@ int install_special_mapping(struct mm_st
42749 vma->vm_start = addr; 41736 vma->vm_start = addr;
42750 vma->vm_end = addr + len; 41737 vma->vm_end = addr + len;
42751 41738
@@ -42761,9 +41748,9 @@ diff -urNp linux-2.6.29.6/mm/mmap.c linux-2.6.29.6/mm/mmap.c
42761 vma->vm_flags = vm_flags | mm->def_flags | VM_DONTEXPAND; 41748 vma->vm_flags = vm_flags | mm->def_flags | VM_DONTEXPAND;
42762 vma->vm_page_prot = vm_get_page_prot(vma->vm_flags); 41749 vma->vm_page_prot = vm_get_page_prot(vma->vm_flags);
42763 41750
42764diff -urNp linux-2.6.29.6/mm/mprotect.c linux-2.6.29.6/mm/mprotect.c 41751diff -urNp linux-2.6.30.4/mm/mprotect.c linux-2.6.30.4/mm/mprotect.c
42765--- linux-2.6.29.6/mm/mprotect.c 2009-07-02 19:41:20.000000000 -0400 41752--- linux-2.6.30.4/mm/mprotect.c 2009-07-24 17:47:51.000000000 -0400
42766+++ linux-2.6.29.6/mm/mprotect.c 2009-07-23 17:34:32.228714408 -0400 41753+++ linux-2.6.30.4/mm/mprotect.c 2009-07-30 11:10:49.815552001 -0400
42767@@ -23,10 +23,16 @@ 41754@@ -23,10 +23,16 @@
42768 #include <linux/swapops.h> 41755 #include <linux/swapops.h>
42769 #include <linux/mmu_notifier.h> 41756 #include <linux/mmu_notifier.h>
@@ -42954,9 +41941,9 @@ diff -urNp linux-2.6.29.6/mm/mprotect.c linux-2.6.29.6/mm/mprotect.c
42954 nstart = tmp; 41941 nstart = tmp;
42955 41942
42956 if (nstart < prev->vm_end) 41943 if (nstart < prev->vm_end)
42957diff -urNp linux-2.6.29.6/mm/mremap.c linux-2.6.29.6/mm/mremap.c 41944diff -urNp linux-2.6.30.4/mm/mremap.c linux-2.6.30.4/mm/mremap.c
42958--- linux-2.6.29.6/mm/mremap.c 2009-07-02 19:41:20.000000000 -0400 41945--- linux-2.6.30.4/mm/mremap.c 2009-07-24 17:47:51.000000000 -0400
42959+++ linux-2.6.29.6/mm/mremap.c 2009-07-23 17:34:32.228714408 -0400 41946+++ linux-2.6.30.4/mm/mremap.c 2009-07-30 09:48:10.147955205 -0400
42960@@ -113,6 +113,12 @@ static void move_ptes(struct vm_area_str 41947@@ -113,6 +113,12 @@ static void move_ptes(struct vm_area_str
42961 continue; 41948 continue;
42962 pte = ptep_clear_flush(vma, old_addr, old_pte); 41949 pte = ptep_clear_flush(vma, old_addr, old_pte);
@@ -43068,10 +42055,10 @@ diff -urNp linux-2.6.29.6/mm/mremap.c linux-2.6.29.6/mm/mremap.c
43068 } 42055 }
43069 out: 42056 out:
43070 if (ret & ~PAGE_MASK) 42057 if (ret & ~PAGE_MASK)
43071diff -urNp linux-2.6.29.6/mm/nommu.c linux-2.6.29.6/mm/nommu.c 42058diff -urNp linux-2.6.30.4/mm/nommu.c linux-2.6.30.4/mm/nommu.c
43072--- linux-2.6.29.6/mm/nommu.c 2009-07-02 19:41:20.000000000 -0400 42059--- linux-2.6.30.4/mm/nommu.c 2009-07-30 20:32:40.555603021 -0400
43073+++ linux-2.6.29.6/mm/nommu.c 2009-07-23 18:40:27.482433806 -0400 42060+++ linux-2.6.30.4/mm/nommu.c 2009-07-30 20:32:48.097607328 -0400
43074@@ -79,7 +79,7 @@ static struct kmem_cache *vm_region_jar; 42061@@ -82,7 +82,7 @@ static struct kmem_cache *vm_region_jar;
43075 struct rb_root nommu_region_tree = RB_ROOT; 42062 struct rb_root nommu_region_tree = RB_ROOT;
43076 DECLARE_RWSEM(nommu_region_sem); 42063 DECLARE_RWSEM(nommu_region_sem);
43077 42064
@@ -43080,7 +42067,7 @@ diff -urNp linux-2.6.29.6/mm/nommu.c linux-2.6.29.6/mm/nommu.c
43080 }; 42067 };
43081 42068
43082 /* 42069 /*
43083@@ -770,15 +770,6 @@ struct vm_area_struct *find_vma(struct m 42070@@ -764,15 +764,6 @@ struct vm_area_struct *find_vma(struct m
43084 EXPORT_SYMBOL(find_vma); 42071 EXPORT_SYMBOL(find_vma);
43085 42072
43086 /* 42073 /*
@@ -43096,9 +42083,9 @@ diff -urNp linux-2.6.29.6/mm/nommu.c linux-2.6.29.6/mm/nommu.c
43096 * expand a stack to a given address 42083 * expand a stack to a given address
43097 * - not supported under NOMMU conditions 42084 * - not supported under NOMMU conditions
43098 */ 42085 */
43099diff -urNp linux-2.6.29.6/mm/page_alloc.c linux-2.6.29.6/mm/page_alloc.c 42086diff -urNp linux-2.6.30.4/mm/page_alloc.c linux-2.6.30.4/mm/page_alloc.c
43100--- linux-2.6.29.6/mm/page_alloc.c 2009-07-02 19:41:20.000000000 -0400 42087--- linux-2.6.30.4/mm/page_alloc.c 2009-07-30 20:32:40.556595558 -0400
43101+++ linux-2.6.29.6/mm/page_alloc.c 2009-07-23 17:34:32.229702725 -0400 42088+++ linux-2.6.30.4/mm/page_alloc.c 2009-07-30 20:32:48.098681549 -0400
43102@@ -549,6 +549,10 @@ static void __free_pages_ok(struct page 42089@@ -549,6 +549,10 @@ static void __free_pages_ok(struct page
43103 int i; 42090 int i;
43104 int bad = 0; 42091 int bad = 0;
@@ -43134,7 +42121,7 @@ diff -urNp linux-2.6.29.6/mm/page_alloc.c linux-2.6.29.6/mm/page_alloc.c
43134 42121
43135 if (order && (gfp_flags & __GFP_COMP)) 42122 if (order && (gfp_flags & __GFP_COMP))
43136 prep_compound_page(page, order); 42123 prep_compound_page(page, order);
43137@@ -1009,6 +1021,11 @@ static void free_hot_cold_page(struct pa 42124@@ -1006,6 +1018,11 @@ static void free_hot_cold_page(struct pa
43138 debug_check_no_locks_freed(page_address(page), PAGE_SIZE); 42125 debug_check_no_locks_freed(page_address(page), PAGE_SIZE);
43139 debug_check_no_obj_freed(page_address(page), PAGE_SIZE); 42126 debug_check_no_obj_freed(page_address(page), PAGE_SIZE);
43140 } 42127 }
@@ -43146,9 +42133,21 @@ diff -urNp linux-2.6.29.6/mm/page_alloc.c linux-2.6.29.6/mm/page_alloc.c
43146 arch_free_page(page, 0); 42133 arch_free_page(page, 0);
43147 kernel_map_pages(page, 1, 0); 42134 kernel_map_pages(page, 1, 0);
43148 42135
43149diff -urNp linux-2.6.29.6/mm/rmap.c linux-2.6.29.6/mm/rmap.c 42136diff -urNp linux-2.6.30.4/mm/percpu.c linux-2.6.30.4/mm/percpu.c
43150--- linux-2.6.29.6/mm/rmap.c 2009-07-02 19:41:20.000000000 -0400 42137--- linux-2.6.30.4/mm/percpu.c 2009-07-24 17:47:51.000000000 -0400
43151+++ linux-2.6.29.6/mm/rmap.c 2009-07-23 17:34:32.230802833 -0400 42138+++ linux-2.6.30.4/mm/percpu.c 2009-07-30 09:48:10.149665939 -0400
42139@@ -107,7 +107,7 @@ static int pcpu_nr_slots __read_mostly;
42140 static size_t pcpu_chunk_struct_size __read_mostly;
42141
42142 /* the address of the first chunk which starts with the kernel static area */
42143-void *pcpu_base_addr __read_mostly;
42144+void *pcpu_base_addr __read_only;
42145 EXPORT_SYMBOL_GPL(pcpu_base_addr);
42146
42147 /* optional reserved chunk, only accessible for reserved allocations */
42148diff -urNp linux-2.6.30.4/mm/rmap.c linux-2.6.30.4/mm/rmap.c
42149--- linux-2.6.30.4/mm/rmap.c 2009-07-24 17:47:51.000000000 -0400
42150+++ linux-2.6.30.4/mm/rmap.c 2009-07-30 09:48:10.149665939 -0400
43152@@ -103,6 +103,10 @@ int anon_vma_prepare(struct vm_area_stru 42151@@ -103,6 +103,10 @@ int anon_vma_prepare(struct vm_area_stru
43153 struct mm_struct *mm = vma->vm_mm; 42152 struct mm_struct *mm = vma->vm_mm;
43154 struct anon_vma *allocated; 42153 struct anon_vma *allocated;
@@ -43176,19 +42175,19 @@ diff -urNp linux-2.6.29.6/mm/rmap.c linux-2.6.29.6/mm/rmap.c
43176 vma->anon_vma = anon_vma; 42175 vma->anon_vma = anon_vma;
43177 list_add_tail(&vma->anon_vma_node, &anon_vma->head); 42176 list_add_tail(&vma->anon_vma_node, &anon_vma->head);
43178 allocated = NULL; 42177 allocated = NULL;
43179diff -urNp linux-2.6.29.6/mm/shmem.c linux-2.6.29.6/mm/shmem.c 42178diff -urNp linux-2.6.30.4/mm/shmem.c linux-2.6.30.4/mm/shmem.c
43180--- linux-2.6.29.6/mm/shmem.c 2009-07-02 19:41:20.000000000 -0400 42179--- linux-2.6.30.4/mm/shmem.c 2009-07-24 17:47:51.000000000 -0400
43181+++ linux-2.6.29.6/mm/shmem.c 2009-07-23 18:40:28.737571137 -0400 42180+++ linux-2.6.30.4/mm/shmem.c 2009-07-30 11:10:49.822549311 -0400
43182@@ -29,7 +29,7 @@ 42181@@ -31,7 +31,7 @@
43183 #include <linux/module.h>
43184 #include <linux/swap.h> 42182 #include <linux/swap.h>
42183 #include <linux/ima.h>
43185 42184
43186-static struct vfsmount *shm_mnt; 42185-static struct vfsmount *shm_mnt;
43187+struct vfsmount *shm_mnt; 42186+struct vfsmount *shm_mnt;
43188 42187
43189 #ifdef CONFIG_SHMEM 42188 #ifdef CONFIG_SHMEM
43190 /* 42189 /*
43191@@ -203,7 +203,7 @@ static const struct file_operations shme 42190@@ -219,7 +219,7 @@ static const struct file_operations shme
43192 static const struct inode_operations shmem_inode_operations; 42191 static const struct inode_operations shmem_inode_operations;
43193 static const struct inode_operations shmem_dir_inode_operations; 42192 static const struct inode_operations shmem_dir_inode_operations;
43194 static const struct inode_operations shmem_special_inode_operations; 42193 static const struct inode_operations shmem_special_inode_operations;
@@ -43197,7 +42196,7 @@ diff -urNp linux-2.6.29.6/mm/shmem.c linux-2.6.29.6/mm/shmem.c
43197 42196
43198 static struct backing_dev_info shmem_backing_dev_info __read_mostly = { 42197 static struct backing_dev_info shmem_backing_dev_info __read_mostly = {
43199 .ra_pages = 0, /* No readahead */ 42198 .ra_pages = 0, /* No readahead */
43200@@ -2482,7 +2482,7 @@ static const struct super_operations shm 42199@@ -2501,7 +2501,7 @@ static const struct super_operations shm
43201 .put_super = shmem_put_super, 42200 .put_super = shmem_put_super,
43202 }; 42201 };
43203 42202
@@ -43206,10 +42205,10 @@ diff -urNp linux-2.6.29.6/mm/shmem.c linux-2.6.29.6/mm/shmem.c
43206 .fault = shmem_fault, 42205 .fault = shmem_fault,
43207 #ifdef CONFIG_NUMA 42206 #ifdef CONFIG_NUMA
43208 .set_policy = shmem_set_policy, 42207 .set_policy = shmem_set_policy,
43209diff -urNp linux-2.6.29.6/mm/slab.c linux-2.6.29.6/mm/slab.c 42208diff -urNp linux-2.6.30.4/mm/slab.c linux-2.6.30.4/mm/slab.c
43210--- linux-2.6.29.6/mm/slab.c 2009-07-02 19:41:20.000000000 -0400 42209--- linux-2.6.30.4/mm/slab.c 2009-07-30 20:32:40.559581250 -0400
43211+++ linux-2.6.29.6/mm/slab.c 2009-07-23 17:34:32.231924238 -0400 42210+++ linux-2.6.30.4/mm/slab.c 2009-07-30 20:32:48.099850445 -0400
43212@@ -305,7 +305,7 @@ struct kmem_list3 { 42211@@ -306,7 +306,7 @@ struct kmem_list3 {
43213 * Need this for bootstrapping a per node allocator. 42212 * Need this for bootstrapping a per node allocator.
43214 */ 42213 */
43215 #define NUM_INIT_LISTS (3 * MAX_NUMNODES) 42214 #define NUM_INIT_LISTS (3 * MAX_NUMNODES)
@@ -43218,7 +42217,7 @@ diff -urNp linux-2.6.29.6/mm/slab.c linux-2.6.29.6/mm/slab.c
43218 #define CACHE_CACHE 0 42217 #define CACHE_CACHE 0
43219 #define SIZE_AC MAX_NUMNODES 42218 #define SIZE_AC MAX_NUMNODES
43220 #define SIZE_L3 (2 * MAX_NUMNODES) 42219 #define SIZE_L3 (2 * MAX_NUMNODES)
43221@@ -628,7 +628,7 @@ static inline void *index_to_obj(struct 42220@@ -637,7 +637,7 @@ static inline void *index_to_obj(struct
43222 * reciprocal_divide(offset, cache->reciprocal_buffer_size) 42221 * reciprocal_divide(offset, cache->reciprocal_buffer_size)
43223 */ 42222 */
43224 static inline unsigned int obj_to_index(const struct kmem_cache *cache, 42223 static inline unsigned int obj_to_index(const struct kmem_cache *cache,
@@ -43227,7 +42226,7 @@ diff -urNp linux-2.6.29.6/mm/slab.c linux-2.6.29.6/mm/slab.c
43227 { 42226 {
43228 u32 offset = (obj - slab->s_mem); 42227 u32 offset = (obj - slab->s_mem);
43229 return reciprocal_divide(offset, cache->reciprocal_buffer_size); 42228 return reciprocal_divide(offset, cache->reciprocal_buffer_size);
43230@@ -654,14 +654,14 @@ struct cache_names { 42229@@ -663,14 +663,14 @@ struct cache_names {
43231 static struct cache_names __initdata cache_names[] = { 42230 static struct cache_names __initdata cache_names[] = {
43232 #define CACHE(x) { .name = "size-" #x, .name_dma = "size-" #x "(DMA)" }, 42231 #define CACHE(x) { .name = "size-" #x, .name_dma = "size-" #x "(DMA)" },
43233 #include <linux/kmalloc_sizes.h> 42232 #include <linux/kmalloc_sizes.h>
@@ -43245,7 +42244,7 @@ diff -urNp linux-2.6.29.6/mm/slab.c linux-2.6.29.6/mm/slab.c
43245 42244
43246 /* internal cache of cache description objs */ 42245 /* internal cache of cache description objs */
43247 static struct kmem_cache cache_cache = { 42246 static struct kmem_cache cache_cache = {
43248@@ -4428,15 +4428,60 @@ static const struct file_operations proc 42247@@ -4486,15 +4486,64 @@ static const struct file_operations proc
43249 42248
43250 static int __init slab_proc_init(void) 42249 static int __init slab_proc_init(void)
43251 { 42250 {
@@ -43281,8 +42280,12 @@ diff -urNp linux-2.6.29.6/mm/slab.c linux-2.6.29.6/mm/slab.c
43281+ 42280+
43282+ page = virt_to_head_page(ptr); 42281+ page = virt_to_head_page(ptr);
43283+ 42282+
43284+ if (!PageSlab(page)) 42283+ /* XXX: can get a little tighter with this stack check */
43285+ /* TODO: check for stack based ptr */ 42284+ if (!PageSlab(page) && object_is_on_stack(ptr) &&
42285+ (n > ((unsigned long)task_stack_page(current) + THREAD_SIZE -
42286+ (unsigned long)ptr)))
42287+ goto report;
42288+ else
43286+ return; 42289+ return;
43287+ 42290+
43288+ cachep = page_get_cache(page); 42291+ cachep = page_get_cache(page);
@@ -43306,9 +42309,9 @@ diff -urNp linux-2.6.29.6/mm/slab.c linux-2.6.29.6/mm/slab.c
43306 /** 42309 /**
43307 * ksize - get the actual amount of memory allocated for a given object 42310 * ksize - get the actual amount of memory allocated for a given object
43308 * @objp: Pointer to the object 42311 * @objp: Pointer to the object
43309diff -urNp linux-2.6.29.6/mm/slob.c linux-2.6.29.6/mm/slob.c 42312diff -urNp linux-2.6.30.4/mm/slob.c linux-2.6.30.4/mm/slob.c
43310--- linux-2.6.29.6/mm/slob.c 2009-07-02 19:41:20.000000000 -0400 42313--- linux-2.6.30.4/mm/slob.c 2009-07-30 20:32:40.560667928 -0400
43311+++ linux-2.6.29.6/mm/slob.c 2009-07-23 17:34:32.232713662 -0400 42314+++ linux-2.6.30.4/mm/slob.c 2009-07-30 20:32:48.100694054 -0400
43312@@ -29,7 +29,7 @@ 42315@@ -29,7 +29,7 @@
43313 * If kmalloc is asked for objects of PAGE_SIZE or larger, it calls 42316 * If kmalloc is asked for objects of PAGE_SIZE or larger, it calls
43314 * alloc_pages() directly, allocating compound pages so the page order 42317 * alloc_pages() directly, allocating compound pages so the page order
@@ -43325,8 +42328,8 @@ diff -urNp linux-2.6.29.6/mm/slob.c linux-2.6.29.6/mm/slob.c
43325+#include <linux/sched.h> 42328+#include <linux/sched.h>
43326 #include <linux/slab.h> 42329 #include <linux/slab.h>
43327 #include <linux/mm.h> 42330 #include <linux/mm.h>
43328 #include <linux/cache.h> 42331 #include <linux/swap.h> /* struct reclaim_state */
43329@@ -97,7 +98,8 @@ struct slob_page { 42332@@ -99,7 +100,8 @@ struct slob_page {
43330 unsigned long flags; /* mandatory */ 42333 unsigned long flags; /* mandatory */
43331 atomic_t _count; /* mandatory */ 42334 atomic_t _count; /* mandatory */
43332 slobidx_t units; /* free units left in page */ 42335 slobidx_t units; /* free units left in page */
@@ -43336,16 +42339,16 @@ diff -urNp linux-2.6.29.6/mm/slob.c linux-2.6.29.6/mm/slob.c
43336 slob_t *free; /* first free slob_t in page */ 42339 slob_t *free; /* first free slob_t in page */
43337 struct list_head list; /* linked list of free pages */ 42340 struct list_head list; /* linked list of free pages */
43338 }; 42341 };
43339@@ -130,7 +132,7 @@ static LIST_HEAD(free_slob_large); 42342@@ -132,7 +134,7 @@ static LIST_HEAD(free_slob_large);
43340 */ 42343 */
43341 static inline int slob_page(struct slob_page *sp) 42344 static inline int is_slob_page(struct slob_page *sp)
43342 { 42345 {
43343- return PageSlobPage((struct page *)sp); 42346- return PageSlobPage((struct page *)sp);
43344+ return PageSlobPage((struct page *)sp) && !sp->size; 42347+ return PageSlobPage((struct page *)sp) && !sp->size;
43345 } 42348 }
43346 42349
43347 static inline void set_slob_page(struct slob_page *sp) 42350 static inline void set_slob_page(struct slob_page *sp)
43348@@ -200,7 +202,7 @@ static void set_slob(slob_t *s, slobidx_ 42351@@ -207,7 +209,7 @@ static void set_slob(slob_t *s, slobidx_
43349 /* 42352 /*
43350 * Return the size of a slob block. 42353 * Return the size of a slob block.
43351 */ 42354 */
@@ -43354,7 +42357,7 @@ diff -urNp linux-2.6.29.6/mm/slob.c linux-2.6.29.6/mm/slob.c
43354 { 42357 {
43355 if (s->units > 0) 42358 if (s->units > 0)
43356 return s->units; 42359 return s->units;
43357@@ -210,7 +212,7 @@ static slobidx_t slob_units(slob_t *s) 42360@@ -217,7 +219,7 @@ static slobidx_t slob_units(slob_t *s)
43358 /* 42361 /*
43359 * Return the next free slob block pointer after this one. 42362 * Return the next free slob block pointer after this one.
43360 */ 42363 */
@@ -43363,7 +42366,7 @@ diff -urNp linux-2.6.29.6/mm/slob.c linux-2.6.29.6/mm/slob.c
43363 { 42366 {
43364 slob_t *base = (slob_t *)((unsigned long)s & PAGE_MASK); 42367 slob_t *base = (slob_t *)((unsigned long)s & PAGE_MASK);
43365 slobidx_t next; 42368 slobidx_t next;
43366@@ -225,7 +227,7 @@ static slob_t *slob_next(slob_t *s) 42369@@ -232,7 +234,7 @@ static slob_t *slob_next(slob_t *s)
43367 /* 42370 /*
43368 * Returns true if s is the last free block in its page. 42371 * Returns true if s is the last free block in its page.
43369 */ 42372 */
@@ -43372,7 +42375,7 @@ diff -urNp linux-2.6.29.6/mm/slob.c linux-2.6.29.6/mm/slob.c
43372 { 42375 {
43373 return !((unsigned long)slob_next(s) & ~PAGE_MASK); 42376 return !((unsigned long)slob_next(s) & ~PAGE_MASK);
43374 } 42377 }
43375@@ -244,6 +246,7 @@ static void *slob_new_page(gfp_t gfp, in 42378@@ -251,6 +253,7 @@ static void *slob_new_pages(gfp_t gfp, i
43376 if (!page) 42379 if (!page)
43377 return NULL; 42380 return NULL;
43378 42381
@@ -43380,10 +42383,10 @@ diff -urNp linux-2.6.29.6/mm/slob.c linux-2.6.29.6/mm/slob.c
43380 return page_address(page); 42383 return page_address(page);
43381 } 42384 }
43382 42385
43383@@ -353,11 +356,11 @@ static void *slob_alloc(size_t size, gfp 42386@@ -367,11 +370,11 @@ static void *slob_alloc(size_t size, gfp
43384 if (!b) 42387 if (!b)
43385 return 0; 42388 return NULL;
43386 sp = (struct slob_page *)virt_to_page(b); 42389 sp = slob_page(b);
43387- set_slob_page(sp); 42390- set_slob_page(sp);
43388 42391
43389 spin_lock_irqsave(&slob_lock, flags); 42392 spin_lock_irqsave(&slob_lock, flags);
@@ -43393,7 +42396,7 @@ diff -urNp linux-2.6.29.6/mm/slob.c linux-2.6.29.6/mm/slob.c
43393 INIT_LIST_HEAD(&sp->list); 42396 INIT_LIST_HEAD(&sp->list);
43394 set_slob(b, SLOB_UNITS(PAGE_SIZE), b + SLOB_UNITS(PAGE_SIZE)); 42397 set_slob(b, SLOB_UNITS(PAGE_SIZE), b + SLOB_UNITS(PAGE_SIZE));
43395 set_slob_page_free(sp, slob_list); 42398 set_slob_page_free(sp, slob_list);
43396@@ -459,10 +462,9 @@ out: 42399@@ -474,10 +477,9 @@ out:
43397 #define ARCH_SLAB_MINALIGN __alignof__(unsigned long) 42400 #define ARCH_SLAB_MINALIGN __alignof__(unsigned long)
43398 #endif 42401 #endif
43399 42402
@@ -43403,11 +42406,11 @@ diff -urNp linux-2.6.29.6/mm/slob.c linux-2.6.29.6/mm/slob.c
43403- unsigned int *m; 42406- unsigned int *m;
43404- int align = max(ARCH_KMALLOC_MINALIGN, ARCH_SLAB_MINALIGN); 42407- int align = max(ARCH_KMALLOC_MINALIGN, ARCH_SLAB_MINALIGN);
43405+ slob_t *m; 42408+ slob_t *m;
42409 void *ret;
42410
42411 lockdep_trace_alloc(gfp);
42412@@ -490,7 +492,10 @@ void *__kmalloc_node(size_t size, gfp_t
43406 42413
43407 if (size < PAGE_SIZE - align) {
43408 if (!size)
43409@@ -471,20 +473,30 @@ void *__kmalloc_node(size_t size, gfp_t
43410 m = slob_alloc(size + align, gfp, align, node);
43411 if (!m) 42414 if (!m)
43412 return NULL; 42415 return NULL;
43413- *m = size; 42416- *m = size;
@@ -43415,11 +42418,12 @@ diff -urNp linux-2.6.29.6/mm/slob.c linux-2.6.29.6/mm/slob.c
43415+ BUILD_BUG_ON(ARCH_SLAB_MINALIGN < 2 * SLOB_UNIT); 42418+ BUILD_BUG_ON(ARCH_SLAB_MINALIGN < 2 * SLOB_UNIT);
43416+ m[0].units = size; 42419+ m[0].units = size;
43417+ m[1].units = align; 42420+ m[1].units = align;
43418 return (void *)m + align; 42421 ret = (void *)m + align;
43419 } else {
43420 void *ret;
43421 42422
43422 ret = slob_new_page(gfp | __GFP_COMP, get_order(size), node); 42423 trace_kmalloc_node(_RET_IP_, ret,
42424@@ -500,9 +505,9 @@ void *__kmalloc_node(size_t size, gfp_t
42425
42426 ret = slob_new_pages(gfp | __GFP_COMP, get_order(size), node);
43423 if (ret) { 42427 if (ret) {
43424- struct page *page; 42428- struct page *page;
43425- page = virt_to_page(ret); 42429- page = virt_to_page(ret);
@@ -43428,8 +42432,11 @@ diff -urNp linux-2.6.29.6/mm/slob.c linux-2.6.29.6/mm/slob.c
43428+ sp = (struct slob_page *)virt_to_head_page(ret); 42432+ sp = (struct slob_page *)virt_to_head_page(ret);
43429+ sp->size = size; 42433+ sp->size = size;
43430 } 42434 }
43431 return ret; 42435
43432 } 42436 trace_kmalloc_node(_RET_IP_, ret,
42437@@ -511,6 +516,13 @@ void *__kmalloc_node(size_t size, gfp_t
42438
42439 return ret;
43433 } 42440 }
43434+ 42441+
43435+void *__kmalloc_node(size_t size, gfp_t gfp, int node) 42442+void *__kmalloc_node(size_t size, gfp_t gfp, int node)
@@ -43441,9 +42448,9 @@ diff -urNp linux-2.6.29.6/mm/slob.c linux-2.6.29.6/mm/slob.c
43441 EXPORT_SYMBOL(__kmalloc_node); 42448 EXPORT_SYMBOL(__kmalloc_node);
43442 42449
43443 void kfree(const void *block) 42450 void kfree(const void *block)
43444@@ -497,13 +509,81 @@ void kfree(const void *block) 42451@@ -525,13 +537,86 @@ void kfree(const void *block)
43445 sp = (struct slob_page *)virt_to_page(block); 42452 sp = slob_page(block);
43446 if (slob_page(sp)) { 42453 if (is_slob_page(sp)) {
43447 int align = max(ARCH_KMALLOC_MINALIGN, ARCH_SLAB_MINALIGN); 42454 int align = max(ARCH_KMALLOC_MINALIGN, ARCH_SLAB_MINALIGN);
43448- unsigned int *m = (unsigned int *)(block - align); 42455- unsigned int *m = (unsigned int *)(block - align);
43449- slob_free(m, *m + align); 42456- slob_free(m, *m + align);
@@ -43477,7 +42484,12 @@ diff -urNp linux-2.6.29.6/mm/slob.c linux-2.6.29.6/mm/slob.c
43477+ return; 42484+ return;
43478+ 42485+
43479+ sp = (struct slob_page *)virt_to_head_page(ptr); 42486+ sp = (struct slob_page *)virt_to_head_page(ptr);
43480+ if (!PageSlobPage((struct page*)sp)) 42487+ /* XXX: can get a little tighter with this stack check */
42488+ if (!PageSlobPage((struct page*)sp) && object_is_on_stack(ptr) &&
42489+ (n > ((unsigned long)task_stack_page(current) + THREAD_SIZE -
42490+ (unsigned long)ptr)))
42491+ goto report;
42492+ else
43481+ return; 42493+ return;
43482+ 42494+
43483+ if (sp->size) { 42495+ if (sp->size) {
@@ -43526,9 +42538,9 @@ diff -urNp linux-2.6.29.6/mm/slob.c linux-2.6.29.6/mm/slob.c
43526 /* can't use ksize for kmem_cache_alloc memory, only kmalloc */ 42538 /* can't use ksize for kmem_cache_alloc memory, only kmalloc */
43527 size_t ksize(const void *block) 42539 size_t ksize(const void *block)
43528 { 42540 {
43529@@ -516,10 +596,10 @@ size_t ksize(const void *block) 42541@@ -544,10 +629,10 @@ size_t ksize(const void *block)
43530 sp = (struct slob_page *)virt_to_page(block); 42542 sp = slob_page(block);
43531 if (slob_page(sp)) { 42543 if (is_slob_page(sp)) {
43532 int align = max(ARCH_KMALLOC_MINALIGN, ARCH_SLAB_MINALIGN); 42544 int align = max(ARCH_KMALLOC_MINALIGN, ARCH_SLAB_MINALIGN);
43533- unsigned int *m = (unsigned int *)(block - align); 42545- unsigned int *m = (unsigned int *)(block - align);
43534- return SLOB_UNITS(*m) * SLOB_UNIT; 42546- return SLOB_UNITS(*m) * SLOB_UNIT;
@@ -43540,28 +42552,33 @@ diff -urNp linux-2.6.29.6/mm/slob.c linux-2.6.29.6/mm/slob.c
43540 } 42552 }
43541 EXPORT_SYMBOL(ksize); 42553 EXPORT_SYMBOL(ksize);
43542 42554
43543@@ -570,10 +650,19 @@ void *kmem_cache_alloc_node(struct kmem_ 42555@@ -600,17 +685,25 @@ void *kmem_cache_alloc_node(struct kmem_
43544 { 42556 {
43545 void *b; 42557 void *b;
43546 42558
43547+#ifdef CONFIG_PAX_USERCOPY 42559+#ifdef CONFIG_PAX_USERCOPY
43548+ b = __kmalloc_node_align(c->size, flags, node, c->align); 42560+ b = __kmalloc_node_align(c->size, flags, node, c->align);
43549+#else 42561+#else
43550 if (c->size < PAGE_SIZE) 42562 if (c->size < PAGE_SIZE) {
43551 b = slob_alloc(c->size, flags, c->align, node); 42563 b = slob_alloc(c->size, flags, c->align, node);
43552- else 42564 trace_kmem_cache_alloc_node(_RET_IP_, b, c->size,
43553+ else { 42565 SLOB_UNITS(c->size) * SLOB_UNIT,
42566 flags, node);
42567 } else {
43554+ struct slob_page *sp; 42568+ struct slob_page *sp;
43555+ 42569+
43556 b = slob_new_page(flags, get_order(c->size), node); 42570 b = slob_new_pages(flags, get_order(c->size), node);
43557+ sp = (struct slob_page *)virt_to_head_page(b); 42571+ sp = (struct slob_page *)virt_to_head_page(b);
43558+ sp->size = c->size; 42572+ sp->size = c->size;
43559+ } 42573 trace_kmem_cache_alloc_node(_RET_IP_, b, c->size,
42574 PAGE_SIZE << get_order(c->size),
42575 flags, node);
42576 }
43560+#endif 42577+#endif
43561 42578
43562 if (c->ctor) 42579 if (c->ctor)
43563 c->ctor(b); 42580 c->ctor(b);
43564@@ -584,10 +673,16 @@ EXPORT_SYMBOL(kmem_cache_alloc_node); 42581@@ -621,10 +714,16 @@ EXPORT_SYMBOL(kmem_cache_alloc_node);
43565 42582
43566 static void __kmem_cache_free(void *b, int size) 42583 static void __kmem_cache_free(void *b, int size)
43567 { 42584 {
@@ -43575,12 +42592,12 @@ diff -urNp linux-2.6.29.6/mm/slob.c linux-2.6.29.6/mm/slob.c
43575+ clear_slob_page(sp); 42592+ clear_slob_page(sp);
43576+ free_slob_page(sp); 42593+ free_slob_page(sp);
43577+ sp->size = 0; 42594+ sp->size = 0;
43578 free_pages((unsigned long)b, get_order(size)); 42595 slob_free_pages(b, get_order(size));
43579+ } 42596+ }
43580 } 42597 }
43581 42598
43582 static void kmem_rcu_free(struct rcu_head *head) 42599 static void kmem_rcu_free(struct rcu_head *head)
43583@@ -600,14 +695,23 @@ static void kmem_rcu_free(struct rcu_hea 42600@@ -637,14 +736,23 @@ static void kmem_rcu_free(struct rcu_hea
43584 42601
43585 void kmem_cache_free(struct kmem_cache *c, void *b) 42602 void kmem_cache_free(struct kmem_cache *c, void *b)
43586 { 42603 {
@@ -43605,12 +42622,12 @@ diff -urNp linux-2.6.29.6/mm/slob.c linux-2.6.29.6/mm/slob.c
43605- __kmem_cache_free(b, c->size); 42622- __kmem_cache_free(b, c->size);
43606+ __kmem_cache_free(b, size); 42623+ __kmem_cache_free(b, size);
43607 } 42624 }
43608 } 42625
43609 EXPORT_SYMBOL(kmem_cache_free); 42626 trace_kmem_cache_free(_RET_IP_, b);
43610diff -urNp linux-2.6.29.6/mm/slub.c linux-2.6.29.6/mm/slub.c 42627diff -urNp linux-2.6.30.4/mm/slub.c linux-2.6.30.4/mm/slub.c
43611--- linux-2.6.29.6/mm/slub.c 2009-07-02 19:41:20.000000000 -0400 42628--- linux-2.6.30.4/mm/slub.c 2009-07-30 20:32:40.563597140 -0400
43612+++ linux-2.6.29.6/mm/slub.c 2009-07-23 17:34:32.232713662 -0400 42629+++ linux-2.6.30.4/mm/slub.c 2009-07-30 20:32:48.102657318 -0400
43613@@ -1786,7 +1786,7 @@ static int slub_min_objects; 42630@@ -1811,7 +1811,7 @@ static int slub_min_objects;
43614 * Merge control. If this is set then no merging of slab caches will occur. 42631 * Merge control. If this is set then no merging of slab caches will occur.
43615 * (Could be removed. This was introduced to pacify the merge skeptics.) 42632 * (Could be removed. This was introduced to pacify the merge skeptics.)
43616 */ 42633 */
@@ -43619,18 +42636,18 @@ diff -urNp linux-2.6.29.6/mm/slub.c linux-2.6.29.6/mm/slub.c
43619 42636
43620 /* 42637 /*
43621 * Calculate the order of allocation given an slab object size. 42638 * Calculate the order of allocation given an slab object size.
43622@@ -2322,7 +2322,7 @@ static int kmem_cache_open(struct kmem_c 42639@@ -2354,7 +2354,7 @@ static int kmem_cache_open(struct kmem_c
43623 if (!calculate_sizes(s, -1)) 42640 * list to avoid pounding the page allocator excessively.
43624 goto error; 42641 */
43625 42642 set_min_partial(s, ilog2(s->size));
43626- s->refcount = 1; 42643- s->refcount = 1;
43627+ atomic_set(&s->refcount, 1); 42644+ atomic_set(&s->refcount, 1);
43628 #ifdef CONFIG_NUMA 42645 #ifdef CONFIG_NUMA
43629 s->remote_node_defrag_ratio = 1000; 42646 s->remote_node_defrag_ratio = 1000;
43630 #endif 42647 #endif
43631@@ -2459,8 +2459,7 @@ static inline int kmem_cache_close(struc 42648@@ -2493,8 +2493,7 @@ void kmem_cache_destroy(struct kmem_cach
43632 void kmem_cache_destroy(struct kmem_cache *s) 42649 if (s->flags & SLAB_DESTROY_BY_RCU)
43633 { 42650 rcu_barrier();
43634 down_write(&slub_lock); 42651 down_write(&slub_lock);
43635- s->refcount--; 42652- s->refcount--;
43636- if (!s->refcount) { 42653- if (!s->refcount) {
@@ -43638,7 +42655,7 @@ diff -urNp linux-2.6.29.6/mm/slub.c linux-2.6.29.6/mm/slub.c
43638 list_del(&s->list); 42655 list_del(&s->list);
43639 up_write(&slub_lock); 42656 up_write(&slub_lock);
43640 if (kmem_cache_close(s)) { 42657 if (kmem_cache_close(s)) {
43641@@ -2702,6 +2701,44 @@ void *__kmalloc_node(size_t size, gfp_t 42658@@ -2754,6 +2753,48 @@ void *__kmalloc_node(size_t size, gfp_t
43642 EXPORT_SYMBOL(__kmalloc_node); 42659 EXPORT_SYMBOL(__kmalloc_node);
43643 #endif 42660 #endif
43644 42661
@@ -43661,8 +42678,12 @@ diff -urNp linux-2.6.29.6/mm/slub.c linux-2.6.29.6/mm/slub.c
43661+ 42678+
43662+ page = get_object_page(ptr); 42679+ page = get_object_page(ptr);
43663+ 42680+
43664+ if (!page) 42681+ /* XXX: can get a little tighter with this stack check */
43665+ /* TODO: check for stack based ptr */ 42682+ if (!page && object_is_on_stack(ptr) &&
42683+ (n > ((unsigned long)task_stack_page(current) + THREAD_SIZE -
42684+ (unsigned long)ptr)))
42685+ goto report;
42686+ else
43666+ return; 42687+ return;
43667+ 42688+
43668+ s = page->slab; 42689+ s = page->slab;
@@ -43683,7 +42704,7 @@ diff -urNp linux-2.6.29.6/mm/slub.c linux-2.6.29.6/mm/slub.c
43683 size_t ksize(const void *object) 42704 size_t ksize(const void *object)
43684 { 42705 {
43685 struct page *page; 42706 struct page *page;
43686@@ -2970,7 +3007,7 @@ void __init kmem_cache_init(void) 42707@@ -3024,7 +3065,7 @@ void __init kmem_cache_init(void)
43687 */ 42708 */
43688 create_kmalloc_cache(&kmalloc_caches[0], "kmem_cache_node", 42709 create_kmalloc_cache(&kmalloc_caches[0], "kmem_cache_node",
43689 sizeof(struct kmem_cache_node), GFP_KERNEL); 42710 sizeof(struct kmem_cache_node), GFP_KERNEL);
@@ -43692,7 +42713,7 @@ diff -urNp linux-2.6.29.6/mm/slub.c linux-2.6.29.6/mm/slub.c
43692 caches++; 42713 caches++;
43693 42714
43694 hotplug_memory_notifier(slab_memory_callback, SLAB_CALLBACK_PRI); 42715 hotplug_memory_notifier(slab_memory_callback, SLAB_CALLBACK_PRI);
43695@@ -3060,7 +3097,7 @@ static int slab_unmergeable(struct kmem_ 42716@@ -3114,7 +3155,7 @@ static int slab_unmergeable(struct kmem_
43696 /* 42717 /*
43697 * We may have set a slab to be unmergeable during bootstrap. 42718 * We may have set a slab to be unmergeable during bootstrap.
43698 */ 42719 */
@@ -43701,7 +42722,7 @@ diff -urNp linux-2.6.29.6/mm/slub.c linux-2.6.29.6/mm/slub.c
43701 return 1; 42722 return 1;
43702 42723
43703 return 0; 42724 return 0;
43704@@ -3117,7 +3154,7 @@ struct kmem_cache *kmem_cache_create(con 42725@@ -3171,7 +3212,7 @@ struct kmem_cache *kmem_cache_create(con
43705 if (s) { 42726 if (s) {
43706 int cpu; 42727 int cpu;
43707 42728
@@ -43710,7 +42731,7 @@ diff -urNp linux-2.6.29.6/mm/slub.c linux-2.6.29.6/mm/slub.c
43710 /* 42731 /*
43711 * Adjust the object sizes so that we clear 42732 * Adjust the object sizes so that we clear
43712 * the complete object on kzalloc. 42733 * the complete object on kzalloc.
43713@@ -3136,7 +3173,7 @@ struct kmem_cache *kmem_cache_create(con 42734@@ -3190,7 +3231,7 @@ struct kmem_cache *kmem_cache_create(con
43714 42735
43715 if (sysfs_slab_alias(s, name)) { 42736 if (sysfs_slab_alias(s, name)) {
43716 down_write(&slub_lock); 42737 down_write(&slub_lock);
@@ -43719,7 +42740,7 @@ diff -urNp linux-2.6.29.6/mm/slub.c linux-2.6.29.6/mm/slub.c
43719 up_write(&slub_lock); 42740 up_write(&slub_lock);
43720 goto err; 42741 goto err;
43721 } 42742 }
43722@@ -3852,7 +3889,7 @@ SLAB_ATTR_RO(ctor); 42743@@ -3938,7 +3979,7 @@ SLAB_ATTR_RO(ctor);
43723 42744
43724 static ssize_t aliases_show(struct kmem_cache *s, char *buf) 42745 static ssize_t aliases_show(struct kmem_cache *s, char *buf)
43725 { 42746 {
@@ -43728,7 +42749,7 @@ diff -urNp linux-2.6.29.6/mm/slub.c linux-2.6.29.6/mm/slub.c
43728 } 42749 }
43729 SLAB_ATTR_RO(aliases); 42750 SLAB_ATTR_RO(aliases);
43730 42751
43731@@ -4530,7 +4567,9 @@ static const struct file_operations proc 42752@@ -4617,7 +4658,9 @@ static const struct file_operations proc
43732 42753
43733 static int __init slab_proc_init(void) 42754 static int __init slab_proc_init(void)
43734 { 42755 {
@@ -43738,10 +42759,10 @@ diff -urNp linux-2.6.29.6/mm/slub.c linux-2.6.29.6/mm/slub.c
43738 return 0; 42759 return 0;
43739 } 42760 }
43740 module_init(slab_proc_init); 42761 module_init(slab_proc_init);
43741diff -urNp linux-2.6.29.6/mm/util.c linux-2.6.29.6/mm/util.c 42762diff -urNp linux-2.6.30.4/mm/util.c linux-2.6.30.4/mm/util.c
43742--- linux-2.6.29.6/mm/util.c 2009-07-02 19:41:20.000000000 -0400 42763--- linux-2.6.30.4/mm/util.c 2009-07-24 17:47:51.000000000 -0400
43743+++ linux-2.6.29.6/mm/util.c 2009-07-23 17:34:32.233880520 -0400 42764+++ linux-2.6.30.4/mm/util.c 2009-07-30 09:48:10.152770641 -0400
43744@@ -187,6 +187,12 @@ EXPORT_SYMBOL(strndup_user); 42765@@ -218,6 +218,12 @@ EXPORT_SYMBOL(strndup_user);
43745 void arch_pick_mmap_layout(struct mm_struct *mm) 42766 void arch_pick_mmap_layout(struct mm_struct *mm)
43746 { 42767 {
43747 mm->mmap_base = TASK_UNMAPPED_BASE; 42768 mm->mmap_base = TASK_UNMAPPED_BASE;
@@ -43754,10 +42775,10 @@ diff -urNp linux-2.6.29.6/mm/util.c linux-2.6.29.6/mm/util.c
43754 mm->get_unmapped_area = arch_get_unmapped_area; 42775 mm->get_unmapped_area = arch_get_unmapped_area;
43755 mm->unmap_area = arch_unmap_area; 42776 mm->unmap_area = arch_unmap_area;
43756 } 42777 }
43757diff -urNp linux-2.6.29.6/mm/vmalloc.c linux-2.6.29.6/mm/vmalloc.c 42778diff -urNp linux-2.6.30.4/mm/vmalloc.c linux-2.6.30.4/mm/vmalloc.c
43758--- linux-2.6.29.6/mm/vmalloc.c 2009-07-02 19:41:20.000000000 -0400 42779--- linux-2.6.30.4/mm/vmalloc.c 2009-07-24 17:47:51.000000000 -0400
43759+++ linux-2.6.29.6/mm/vmalloc.c 2009-07-23 17:34:32.233880520 -0400 42780+++ linux-2.6.30.4/mm/vmalloc.c 2009-07-30 09:48:10.153729053 -0400
43760@@ -90,6 +90,11 @@ static int vmap_pte_range(pmd_t *pmd, un 42781@@ -91,6 +91,11 @@ static int vmap_pte_range(pmd_t *pmd, un
43761 unsigned long end, pgprot_t prot, struct page **pages, int *nr) 42782 unsigned long end, pgprot_t prot, struct page **pages, int *nr)
43762 { 42783 {
43763 pte_t *pte; 42784 pte_t *pte;
@@ -43769,7 +42790,7 @@ diff -urNp linux-2.6.29.6/mm/vmalloc.c linux-2.6.29.6/mm/vmalloc.c
43769 42790
43770 /* 42791 /*
43771 * nr is a running index into the array which helps higher level 42792 * nr is a running index into the array which helps higher level
43772@@ -99,17 +104,33 @@ static int vmap_pte_range(pmd_t *pmd, un 42793@@ -100,17 +105,33 @@ static int vmap_pte_range(pmd_t *pmd, un
43773 pte = pte_alloc_kernel(pmd, addr); 42794 pte = pte_alloc_kernel(pmd, addr);
43774 if (!pte) 42795 if (!pte)
43775 return -ENOMEM; 42796 return -ENOMEM;
@@ -43808,7 +42829,7 @@ diff -urNp linux-2.6.29.6/mm/vmalloc.c linux-2.6.29.6/mm/vmalloc.c
43808 } 42829 }
43809 42830
43810 static int vmap_pmd_range(pud_t *pud, unsigned long addr, 42831 static int vmap_pmd_range(pud_t *pud, unsigned long addr,
43811@@ -1056,6 +1077,16 @@ static struct vm_struct *__get_vm_area_n 42832@@ -1132,6 +1153,16 @@ static struct vm_struct *__get_vm_area_n
43812 unsigned long align = 1; 42833 unsigned long align = 1;
43813 42834
43814 BUG_ON(in_interrupt()); 42835 BUG_ON(in_interrupt());
@@ -43825,7 +42846,7 @@ diff -urNp linux-2.6.29.6/mm/vmalloc.c linux-2.6.29.6/mm/vmalloc.c
43825 if (flags & VM_IOREMAP) { 42846 if (flags & VM_IOREMAP) {
43826 int bit = fls(size); 42847 int bit = fls(size);
43827 42848
43828@@ -1289,6 +1320,11 @@ void *vmap(struct page **pages, unsigned 42849@@ -1368,6 +1399,11 @@ void *vmap(struct page **pages, unsigned
43829 if (count > num_physpages) 42850 if (count > num_physpages)
43830 return NULL; 42851 return NULL;
43831 42852
@@ -43837,7 +42858,7 @@ diff -urNp linux-2.6.29.6/mm/vmalloc.c linux-2.6.29.6/mm/vmalloc.c
43837 area = get_vm_area_caller((count << PAGE_SHIFT), flags, 42858 area = get_vm_area_caller((count << PAGE_SHIFT), flags,
43838 __builtin_return_address(0)); 42859 __builtin_return_address(0));
43839 if (!area) 42860 if (!area)
43840@@ -1385,6 +1421,13 @@ static void *__vmalloc_node(unsigned lon 42861@@ -1464,6 +1500,13 @@ static void *__vmalloc_node(unsigned lon
43841 if (!size || (size >> PAGE_SHIFT) > num_physpages) 42862 if (!size || (size >> PAGE_SHIFT) > num_physpages)
43842 return NULL; 42863 return NULL;
43843 42864
@@ -43851,7 +42872,7 @@ diff -urNp linux-2.6.29.6/mm/vmalloc.c linux-2.6.29.6/mm/vmalloc.c
43851 area = __get_vm_area_node(size, VM_ALLOC, VMALLOC_START, VMALLOC_END, 42872 area = __get_vm_area_node(size, VM_ALLOC, VMALLOC_START, VMALLOC_END,
43852 node, gfp_mask, caller); 42873 node, gfp_mask, caller);
43853 42874
43854@@ -1394,6 +1437,7 @@ static void *__vmalloc_node(unsigned lon 42875@@ -1473,6 +1516,7 @@ static void *__vmalloc_node(unsigned lon
43855 return __vmalloc_area_node(area, gfp_mask, prot, node, caller); 42876 return __vmalloc_area_node(area, gfp_mask, prot, node, caller);
43856 } 42877 }
43857 42878
@@ -43859,7 +42880,7 @@ diff -urNp linux-2.6.29.6/mm/vmalloc.c linux-2.6.29.6/mm/vmalloc.c
43859 void *__vmalloc(unsigned long size, gfp_t gfp_mask, pgprot_t prot) 42880 void *__vmalloc(unsigned long size, gfp_t gfp_mask, pgprot_t prot)
43860 { 42881 {
43861 return __vmalloc_node(size, gfp_mask, prot, -1, 42882 return __vmalloc_node(size, gfp_mask, prot, -1,
43862@@ -1410,6 +1454,7 @@ EXPORT_SYMBOL(__vmalloc); 42883@@ -1489,6 +1533,7 @@ EXPORT_SYMBOL(__vmalloc);
43863 * For tight control over page level allocator and protection flags 42884 * For tight control over page level allocator and protection flags
43864 * use __vmalloc() instead. 42885 * use __vmalloc() instead.
43865 */ 42886 */
@@ -43867,7 +42888,7 @@ diff -urNp linux-2.6.29.6/mm/vmalloc.c linux-2.6.29.6/mm/vmalloc.c
43867 void *vmalloc(unsigned long size) 42888 void *vmalloc(unsigned long size)
43868 { 42889 {
43869 return __vmalloc_node(size, GFP_KERNEL | __GFP_HIGHMEM, PAGE_KERNEL, 42890 return __vmalloc_node(size, GFP_KERNEL | __GFP_HIGHMEM, PAGE_KERNEL,
43870@@ -1424,6 +1469,7 @@ EXPORT_SYMBOL(vmalloc); 42891@@ -1503,6 +1548,7 @@ EXPORT_SYMBOL(vmalloc);
43871 * The resulting memory area is zeroed so it can be mapped to userspace 42892 * The resulting memory area is zeroed so it can be mapped to userspace
43872 * without leaking data. 42893 * without leaking data.
43873 */ 42894 */
@@ -43875,7 +42896,7 @@ diff -urNp linux-2.6.29.6/mm/vmalloc.c linux-2.6.29.6/mm/vmalloc.c
43875 void *vmalloc_user(unsigned long size) 42896 void *vmalloc_user(unsigned long size)
43876 { 42897 {
43877 struct vm_struct *area; 42898 struct vm_struct *area;
43878@@ -1450,6 +1496,7 @@ EXPORT_SYMBOL(vmalloc_user); 42899@@ -1529,6 +1575,7 @@ EXPORT_SYMBOL(vmalloc_user);
43879 * For tight control over page level allocator and protection flags 42900 * For tight control over page level allocator and protection flags
43880 * use __vmalloc() instead. 42901 * use __vmalloc() instead.
43881 */ 42902 */
@@ -43883,7 +42904,7 @@ diff -urNp linux-2.6.29.6/mm/vmalloc.c linux-2.6.29.6/mm/vmalloc.c
43883 void *vmalloc_node(unsigned long size, int node) 42904 void *vmalloc_node(unsigned long size, int node)
43884 { 42905 {
43885 return __vmalloc_node(size, GFP_KERNEL | __GFP_HIGHMEM, PAGE_KERNEL, 42906 return __vmalloc_node(size, GFP_KERNEL | __GFP_HIGHMEM, PAGE_KERNEL,
43886@@ -1472,10 +1519,10 @@ EXPORT_SYMBOL(vmalloc_node); 42907@@ -1551,10 +1598,10 @@ EXPORT_SYMBOL(vmalloc_node);
43887 * For tight control over page level allocator and protection flags 42908 * For tight control over page level allocator and protection flags
43888 * use __vmalloc() instead. 42909 * use __vmalloc() instead.
43889 */ 42910 */
@@ -43896,7 +42917,7 @@ diff -urNp linux-2.6.29.6/mm/vmalloc.c linux-2.6.29.6/mm/vmalloc.c
43896 -1, __builtin_return_address(0)); 42917 -1, __builtin_return_address(0));
43897 } 42918 }
43898 42919
43899@@ -1494,6 +1541,7 @@ void *vmalloc_exec(unsigned long size) 42920@@ -1573,6 +1620,7 @@ void *vmalloc_exec(unsigned long size)
43900 * Allocate enough 32bit PA addressable pages to cover @size from the 42921 * Allocate enough 32bit PA addressable pages to cover @size from the
43901 * page level allocator and map them into contiguous kernel virtual space. 42922 * page level allocator and map them into contiguous kernel virtual space.
43902 */ 42923 */
@@ -43904,7 +42925,7 @@ diff -urNp linux-2.6.29.6/mm/vmalloc.c linux-2.6.29.6/mm/vmalloc.c
43904 void *vmalloc_32(unsigned long size) 42925 void *vmalloc_32(unsigned long size)
43905 { 42926 {
43906 return __vmalloc_node(size, GFP_VMALLOC32, PAGE_KERNEL, 42927 return __vmalloc_node(size, GFP_VMALLOC32, PAGE_KERNEL,
43907@@ -1508,6 +1556,7 @@ EXPORT_SYMBOL(vmalloc_32); 42928@@ -1587,6 +1635,7 @@ EXPORT_SYMBOL(vmalloc_32);
43908 * The resulting memory area is 32bit addressable and zeroed so it can be 42929 * The resulting memory area is 32bit addressable and zeroed so it can be
43909 * mapped to userspace without leaking data. 42930 * mapped to userspace without leaking data.
43910 */ 42931 */
@@ -43912,9 +42933,9 @@ diff -urNp linux-2.6.29.6/mm/vmalloc.c linux-2.6.29.6/mm/vmalloc.c
43912 void *vmalloc_32_user(unsigned long size) 42933 void *vmalloc_32_user(unsigned long size)
43913 { 42934 {
43914 struct vm_struct *area; 42935 struct vm_struct *area;
43915diff -urNp linux-2.6.29.6/net/atm/atm_misc.c linux-2.6.29.6/net/atm/atm_misc.c 42936diff -urNp linux-2.6.30.4/net/atm/atm_misc.c linux-2.6.30.4/net/atm/atm_misc.c
43916--- linux-2.6.29.6/net/atm/atm_misc.c 2009-07-02 19:41:20.000000000 -0400 42937--- linux-2.6.30.4/net/atm/atm_misc.c 2009-07-24 17:47:51.000000000 -0400
43917+++ linux-2.6.29.6/net/atm/atm_misc.c 2009-07-23 17:34:37.460011249 -0400 42938+++ linux-2.6.30.4/net/atm/atm_misc.c 2009-07-30 09:48:10.153729053 -0400
43918@@ -19,7 +19,7 @@ int atm_charge(struct atm_vcc *vcc,int t 42939@@ -19,7 +19,7 @@ int atm_charge(struct atm_vcc *vcc,int t
43919 if (atomic_read(&sk_atm(vcc)->sk_rmem_alloc) <= sk_atm(vcc)->sk_rcvbuf) 42940 if (atomic_read(&sk_atm(vcc)->sk_rmem_alloc) <= sk_atm(vcc)->sk_rcvbuf)
43920 return 1; 42941 return 1;
@@ -43942,9 +42963,9 @@ diff -urNp linux-2.6.29.6/net/atm/atm_misc.c linux-2.6.29.6/net/atm/atm_misc.c
43942 __SONET_ITEMS 42963 __SONET_ITEMS
43943 #undef __HANDLE_ITEM 42964 #undef __HANDLE_ITEM
43944 } 42965 }
43945diff -urNp linux-2.6.29.6/net/atm/resources.c linux-2.6.29.6/net/atm/resources.c 42966diff -urNp linux-2.6.30.4/net/atm/resources.c linux-2.6.30.4/net/atm/resources.c
43946--- linux-2.6.29.6/net/atm/resources.c 2009-07-02 19:41:20.000000000 -0400 42967--- linux-2.6.30.4/net/atm/resources.c 2009-07-24 17:47:51.000000000 -0400
43947+++ linux-2.6.29.6/net/atm/resources.c 2009-07-23 17:34:32.234796571 -0400 42968+++ linux-2.6.30.4/net/atm/resources.c 2009-07-30 09:48:10.153729053 -0400
43948@@ -170,7 +170,7 @@ static void copy_aal_stats(struct k_atm_ 42969@@ -170,7 +170,7 @@ static void copy_aal_stats(struct k_atm_
43949 static void subtract_aal_stats(struct k_atm_aal_stats *from, 42970 static void subtract_aal_stats(struct k_atm_aal_stats *from,
43950 struct atm_aal_stats *to) 42971 struct atm_aal_stats *to)
@@ -43954,9 +42975,9 @@ diff -urNp linux-2.6.29.6/net/atm/resources.c linux-2.6.29.6/net/atm/resources.c
43954 __AAL_STAT_ITEMS 42975 __AAL_STAT_ITEMS
43955 #undef __HANDLE_ITEM 42976 #undef __HANDLE_ITEM
43956 } 42977 }
43957diff -urNp linux-2.6.29.6/net/bridge/br_stp_if.c linux-2.6.29.6/net/bridge/br_stp_if.c 42978diff -urNp linux-2.6.30.4/net/bridge/br_stp_if.c linux-2.6.30.4/net/bridge/br_stp_if.c
43958--- linux-2.6.29.6/net/bridge/br_stp_if.c 2009-07-02 19:41:20.000000000 -0400 42979--- linux-2.6.30.4/net/bridge/br_stp_if.c 2009-07-24 17:47:51.000000000 -0400
43959+++ linux-2.6.29.6/net/bridge/br_stp_if.c 2009-07-23 17:34:32.234796571 -0400 42980+++ linux-2.6.30.4/net/bridge/br_stp_if.c 2009-07-30 09:48:10.153729053 -0400
43960@@ -146,7 +146,7 @@ static void br_stp_stop(struct net_bridg 42981@@ -146,7 +146,7 @@ static void br_stp_stop(struct net_bridg
43961 char *envp[] = { NULL }; 42982 char *envp[] = { NULL };
43962 42983
@@ -43966,9 +42987,9 @@ diff -urNp linux-2.6.29.6/net/bridge/br_stp_if.c linux-2.6.29.6/net/bridge/br_st
43966 printk(KERN_INFO "%s: userspace STP stopped, return code %d\n", 42987 printk(KERN_INFO "%s: userspace STP stopped, return code %d\n",
43967 br->dev->name, r); 42988 br->dev->name, r);
43968 42989
43969diff -urNp linux-2.6.29.6/net/core/flow.c linux-2.6.29.6/net/core/flow.c 42990diff -urNp linux-2.6.30.4/net/core/flow.c linux-2.6.30.4/net/core/flow.c
43970--- linux-2.6.29.6/net/core/flow.c 2009-07-02 19:41:20.000000000 -0400 42991--- linux-2.6.30.4/net/core/flow.c 2009-07-24 17:47:51.000000000 -0400
43971+++ linux-2.6.29.6/net/core/flow.c 2009-07-23 17:34:32.234796571 -0400 42992+++ linux-2.6.30.4/net/core/flow.c 2009-07-30 09:48:10.154837046 -0400
43972@@ -39,7 +39,7 @@ atomic_t flow_cache_genid = ATOMIC_INIT( 42993@@ -39,7 +39,7 @@ atomic_t flow_cache_genid = ATOMIC_INIT(
43973 42994
43974 static u32 flow_hash_shift; 42995 static u32 flow_hash_shift;
@@ -43996,9 +43017,9 @@ diff -urNp linux-2.6.29.6/net/core/flow.c linux-2.6.29.6/net/core/flow.c
43996 43017
43997 #define flow_flush_tasklet(cpu) (&per_cpu(flow_flush_tasklets, cpu)) 43018 #define flow_flush_tasklet(cpu) (&per_cpu(flow_flush_tasklets, cpu))
43998 43019
43999diff -urNp linux-2.6.29.6/net/dccp/ccids/ccid3.c linux-2.6.29.6/net/dccp/ccids/ccid3.c 43020diff -urNp linux-2.6.30.4/net/dccp/ccids/ccid3.c linux-2.6.30.4/net/dccp/ccids/ccid3.c
44000--- linux-2.6.29.6/net/dccp/ccids/ccid3.c 2009-07-02 19:41:20.000000000 -0400 43021--- linux-2.6.30.4/net/dccp/ccids/ccid3.c 2009-07-24 17:47:51.000000000 -0400
44001+++ linux-2.6.29.6/net/dccp/ccids/ccid3.c 2009-07-23 17:34:32.234796571 -0400 43022+++ linux-2.6.30.4/net/dccp/ccids/ccid3.c 2009-07-30 09:48:10.154837046 -0400
44002@@ -43,7 +43,7 @@ 43023@@ -43,7 +43,7 @@
44003 static int ccid3_debug; 43024 static int ccid3_debug;
44004 #define ccid3_pr_debug(format, a...) DCCP_PR_DEBUG(ccid3_debug, format, ##a) 43025 #define ccid3_pr_debug(format, a...) DCCP_PR_DEBUG(ccid3_debug, format, ##a)
@@ -44008,34 +43029,25 @@ diff -urNp linux-2.6.29.6/net/dccp/ccids/ccid3.c linux-2.6.29.6/net/dccp/ccids/c
44008 #endif 43029 #endif
44009 43030
44010 /* 43031 /*
44011diff -urNp linux-2.6.29.6/net/dccp/dccp.h linux-2.6.29.6/net/dccp/dccp.h 43032diff -urNp linux-2.6.30.4/net/dccp/dccp.h linux-2.6.30.4/net/dccp/dccp.h
44012--- linux-2.6.29.6/net/dccp/dccp.h 2009-07-02 19:41:20.000000000 -0400 43033--- linux-2.6.30.4/net/dccp/dccp.h 2009-07-24 17:47:51.000000000 -0400
44013+++ linux-2.6.29.6/net/dccp/dccp.h 2009-07-23 17:34:32.235712173 -0400 43034+++ linux-2.6.30.4/net/dccp/dccp.h 2009-07-30 09:48:10.154837046 -0400
44014@@ -43,8 +43,8 @@ extern int dccp_debug; 43035@@ -44,9 +44,9 @@ extern int dccp_debug;
44015 #define dccp_pr_debug(format, a...) DCCP_PR_DEBUG(dccp_debug, format, ##a)
44016 #define dccp_pr_debug_cat(format, a...) DCCP_PRINTK(dccp_debug, format, ##a) 43036 #define dccp_pr_debug_cat(format, a...) DCCP_PRINTK(dccp_debug, format, ##a)
43037 #define dccp_debug(fmt, a...) dccp_pr_debug_cat(KERN_DEBUG fmt, ##a)
44017 #else 43038 #else
44018-#define dccp_pr_debug(format, a...) 43039-#define dccp_pr_debug(format, a...)
44019-#define dccp_pr_debug_cat(format, a...) 43040-#define dccp_pr_debug_cat(format, a...)
43041-#define dccp_debug(format, a...)
44020+#define dccp_pr_debug(format, a...) do {} while (0) 43042+#define dccp_pr_debug(format, a...) do {} while (0)
44021+#define dccp_pr_debug_cat(format, a...) do {} while (0) 43043+#define dccp_pr_debug_cat(format, a...) do {} while (0)
43044+#define dccp_debug(format, a...) do {} while (0)
44022 #endif 43045 #endif
44023 43046
44024 extern struct inet_hashinfo dccp_hashinfo; 43047 extern struct inet_hashinfo dccp_hashinfo;
44025diff -urNp linux-2.6.29.6/net/ipv4/inet_connection_sock.c linux-2.6.29.6/net/ipv4/inet_connection_sock.c 43048diff -urNp linux-2.6.30.4/net/ipv4/inet_hashtables.c linux-2.6.30.4/net/ipv4/inet_hashtables.c
44026--- linux-2.6.29.6/net/ipv4/inet_connection_sock.c 2009-07-02 19:41:20.000000000 -0400 43049--- linux-2.6.30.4/net/ipv4/inet_hashtables.c 2009-07-24 17:47:51.000000000 -0400
44027+++ linux-2.6.29.6/net/ipv4/inet_connection_sock.c 2009-07-23 17:34:32.235712173 -0400 43050+++ linux-2.6.30.4/net/ipv4/inet_hashtables.c 2009-07-30 11:10:49.904544447 -0400
44028@@ -15,6 +15,7 @@
44029
44030 #include <linux/module.h>
44031 #include <linux/jhash.h>
44032+#include <linux/security.h>
44033
44034 #include <net/inet_connection_sock.h>
44035 #include <net/inet_hashtables.h>
44036diff -urNp linux-2.6.29.6/net/ipv4/inet_hashtables.c linux-2.6.29.6/net/ipv4/inet_hashtables.c
44037--- linux-2.6.29.6/net/ipv4/inet_hashtables.c 2009-07-02 19:41:20.000000000 -0400
44038+++ linux-2.6.29.6/net/ipv4/inet_hashtables.c 2009-07-23 17:34:32.235712173 -0400
44039@@ -18,11 +18,14 @@ 43051@@ -18,11 +18,14 @@
44040 #include <linux/sched.h> 43052 #include <linux/sched.h>
44041 #include <linux/slab.h> 43053 #include <linux/slab.h>
@@ -44051,7 +43063,7 @@ diff -urNp linux-2.6.29.6/net/ipv4/inet_hashtables.c linux-2.6.29.6/net/ipv4/ine
44051 /* 43063 /*
44052 * Allocate and initialize a new local port bind bucket. 43064 * Allocate and initialize a new local port bind bucket.
44053 * The bindhash mutex for snum's hash chain must be held here. 43065 * The bindhash mutex for snum's hash chain must be held here.
44054@@ -481,6 +484,8 @@ ok: 43066@@ -490,6 +493,8 @@ ok:
44055 } 43067 }
44056 spin_unlock(&head->lock); 43068 spin_unlock(&head->lock);
44057 43069
@@ -44060,9 +43072,9 @@ diff -urNp linux-2.6.29.6/net/ipv4/inet_hashtables.c linux-2.6.29.6/net/ipv4/ine
44060 if (tw) { 43072 if (tw) {
44061 inet_twsk_deschedule(tw, death_row); 43073 inet_twsk_deschedule(tw, death_row);
44062 inet_twsk_put(tw); 43074 inet_twsk_put(tw);
44063diff -urNp linux-2.6.29.6/net/ipv4/netfilter/nf_nat_snmp_basic.c linux-2.6.29.6/net/ipv4/netfilter/nf_nat_snmp_basic.c 43075diff -urNp linux-2.6.30.4/net/ipv4/netfilter/nf_nat_snmp_basic.c linux-2.6.30.4/net/ipv4/netfilter/nf_nat_snmp_basic.c
44064--- linux-2.6.29.6/net/ipv4/netfilter/nf_nat_snmp_basic.c 2009-07-02 19:41:20.000000000 -0400 43076--- linux-2.6.30.4/net/ipv4/netfilter/nf_nat_snmp_basic.c 2009-07-24 17:47:51.000000000 -0400
44065+++ linux-2.6.29.6/net/ipv4/netfilter/nf_nat_snmp_basic.c 2009-07-23 17:34:32.235712173 -0400 43077+++ linux-2.6.30.4/net/ipv4/netfilter/nf_nat_snmp_basic.c 2009-07-30 09:48:10.155784268 -0400
44066@@ -397,7 +397,7 @@ static unsigned char asn1_octets_decode( 43078@@ -397,7 +397,7 @@ static unsigned char asn1_octets_decode(
44067 43079
44068 *len = 0; 43080 *len = 0;
@@ -44072,10 +43084,10 @@ diff -urNp linux-2.6.29.6/net/ipv4/netfilter/nf_nat_snmp_basic.c linux-2.6.29.6/
44072 if (*octets == NULL) { 43084 if (*octets == NULL) {
44073 if (net_ratelimit()) 43085 if (net_ratelimit())
44074 printk("OOM in bsalg (%d)\n", __LINE__); 43086 printk("OOM in bsalg (%d)\n", __LINE__);
44075diff -urNp linux-2.6.29.6/net/ipv4/tcp_ipv4.c linux-2.6.29.6/net/ipv4/tcp_ipv4.c 43087diff -urNp linux-2.6.30.4/net/ipv4/tcp_ipv4.c linux-2.6.30.4/net/ipv4/tcp_ipv4.c
44076--- linux-2.6.29.6/net/ipv4/tcp_ipv4.c 2009-07-02 19:41:20.000000000 -0400 43088--- linux-2.6.30.4/net/ipv4/tcp_ipv4.c 2009-07-24 17:47:51.000000000 -0400
44077+++ linux-2.6.29.6/net/ipv4/tcp_ipv4.c 2009-07-23 17:34:32.236754222 -0400 43089+++ linux-2.6.30.4/net/ipv4/tcp_ipv4.c 2009-07-30 11:10:49.916766621 -0400
44078@@ -1512,6 +1512,9 @@ int tcp_v4_do_rcv(struct sock *sk, struc 43090@@ -1503,6 +1503,9 @@ int tcp_v4_do_rcv(struct sock *sk, struc
44079 return 0; 43091 return 0;
44080 43092
44081 reset: 43093 reset:
@@ -44085,7 +43097,7 @@ diff -urNp linux-2.6.29.6/net/ipv4/tcp_ipv4.c linux-2.6.29.6/net/ipv4/tcp_ipv4.c
44085 tcp_v4_send_reset(rsk, skb); 43097 tcp_v4_send_reset(rsk, skb);
44086 discard: 43098 discard:
44087 kfree_skb(skb); 43099 kfree_skb(skb);
44088@@ -1620,6 +1623,9 @@ no_tcp_socket: 43100@@ -1611,6 +1614,9 @@ no_tcp_socket:
44089 bad_packet: 43101 bad_packet:
44090 TCP_INC_STATS_BH(net, TCP_MIB_INERRS); 43102 TCP_INC_STATS_BH(net, TCP_MIB_INERRS);
44091 } else { 43103 } else {
@@ -44095,10 +43107,10 @@ diff -urNp linux-2.6.29.6/net/ipv4/tcp_ipv4.c linux-2.6.29.6/net/ipv4/tcp_ipv4.c
44095 tcp_v4_send_reset(NULL, skb); 43107 tcp_v4_send_reset(NULL, skb);
44096 } 43108 }
44097 43109
44098diff -urNp linux-2.6.29.6/net/ipv4/tcp_minisocks.c linux-2.6.29.6/net/ipv4/tcp_minisocks.c 43110diff -urNp linux-2.6.30.4/net/ipv4/tcp_minisocks.c linux-2.6.30.4/net/ipv4/tcp_minisocks.c
44099--- linux-2.6.29.6/net/ipv4/tcp_minisocks.c 2009-07-02 19:41:20.000000000 -0400 43111--- linux-2.6.30.4/net/ipv4/tcp_minisocks.c 2009-07-24 17:47:51.000000000 -0400
44100+++ linux-2.6.29.6/net/ipv4/tcp_minisocks.c 2009-07-23 17:34:32.236754222 -0400 43112+++ linux-2.6.30.4/net/ipv4/tcp_minisocks.c 2009-07-30 11:10:49.922670152 -0400
44101@@ -695,8 +695,11 @@ listen_overflow: 43113@@ -694,8 +694,11 @@ listen_overflow:
44102 43114
44103 embryonic_reset: 43115 embryonic_reset:
44104 NET_INC_STATS_BH(sock_net(sk), LINUX_MIB_EMBRYONICRSTS); 43116 NET_INC_STATS_BH(sock_net(sk), LINUX_MIB_EMBRYONICRSTS);
@@ -44110,9 +43122,9 @@ diff -urNp linux-2.6.29.6/net/ipv4/tcp_minisocks.c linux-2.6.29.6/net/ipv4/tcp_m
44110 43122
44111 inet_csk_reqsk_queue_drop(sk, req, prev); 43123 inet_csk_reqsk_queue_drop(sk, req, prev);
44112 return NULL; 43124 return NULL;
44113diff -urNp linux-2.6.29.6/net/ipv4/udp.c linux-2.6.29.6/net/ipv4/udp.c 43125diff -urNp linux-2.6.30.4/net/ipv4/udp.c linux-2.6.30.4/net/ipv4/udp.c
44114--- linux-2.6.29.6/net/ipv4/udp.c 2009-07-02 19:41:20.000000000 -0400 43126--- linux-2.6.30.4/net/ipv4/udp.c 2009-07-24 17:47:51.000000000 -0400
44115+++ linux-2.6.29.6/net/ipv4/udp.c 2009-07-23 17:34:32.237793198 -0400 43127+++ linux-2.6.30.4/net/ipv4/udp.c 2009-07-30 11:10:49.923319110 -0400
44116@@ -86,6 +86,7 @@ 43128@@ -86,6 +86,7 @@
44117 #include <linux/types.h> 43129 #include <linux/types.h>
44118 #include <linux/fcntl.h> 43130 #include <linux/fcntl.h>
@@ -44131,7 +43143,7 @@ diff -urNp linux-2.6.29.6/net/ipv4/udp.c linux-2.6.29.6/net/ipv4/udp.c
44131 /* 43143 /*
44132 * This routine is called by the ICMP module when it gets some 43144 * This routine is called by the ICMP module when it gets some
44133 * sort of error condition. If err < 0 then the socket should 43145 * sort of error condition. If err < 0 then the socket should
44134@@ -630,9 +634,18 @@ int udp_sendmsg(struct kiocb *iocb, stru 43146@@ -631,9 +635,18 @@ int udp_sendmsg(struct kiocb *iocb, stru
44135 dport = usin->sin_port; 43147 dport = usin->sin_port;
44136 if (dport == 0) 43148 if (dport == 0)
44137 return -EINVAL; 43149 return -EINVAL;
@@ -44150,7 +43162,7 @@ diff -urNp linux-2.6.29.6/net/ipv4/udp.c linux-2.6.29.6/net/ipv4/udp.c
44150 daddr = inet->daddr; 43162 daddr = inet->daddr;
44151 dport = inet->dport; 43163 dport = inet->dport;
44152 /* Open fast path for connected socket. 43164 /* Open fast path for connected socket.
44153@@ -898,6 +911,10 @@ try_again: 43165@@ -902,6 +915,10 @@ try_again:
44154 if (!skb) 43166 if (!skb)
44155 goto out; 43167 goto out;
44156 43168
@@ -44161,7 +43173,7 @@ diff -urNp linux-2.6.29.6/net/ipv4/udp.c linux-2.6.29.6/net/ipv4/udp.c
44161 ulen = skb->len - sizeof(struct udphdr); 43173 ulen = skb->len - sizeof(struct udphdr);
44162 copied = len; 43174 copied = len;
44163 if (copied > ulen) 43175 if (copied > ulen)
44164@@ -1288,6 +1305,9 @@ int __udp4_lib_rcv(struct sk_buff *skb, 43176@@ -1292,6 +1309,9 @@ int __udp4_lib_rcv(struct sk_buff *skb,
44165 goto csum_error; 43177 goto csum_error;
44166 43178
44167 UDP_INC_STATS_BH(net, UDP_MIB_NOPORTS, proto == IPPROTO_UDPLITE); 43179 UDP_INC_STATS_BH(net, UDP_MIB_NOPORTS, proto == IPPROTO_UDPLITE);
@@ -44171,9 +43183,9 @@ diff -urNp linux-2.6.29.6/net/ipv4/udp.c linux-2.6.29.6/net/ipv4/udp.c
44171 icmp_send(skb, ICMP_DEST_UNREACH, ICMP_PORT_UNREACH, 0); 43183 icmp_send(skb, ICMP_DEST_UNREACH, ICMP_PORT_UNREACH, 0);
44172 43184
44173 /* 43185 /*
44174diff -urNp linux-2.6.29.6/net/ipv6/exthdrs.c linux-2.6.29.6/net/ipv6/exthdrs.c 43186diff -urNp linux-2.6.30.4/net/ipv6/exthdrs.c linux-2.6.30.4/net/ipv6/exthdrs.c
44175--- linux-2.6.29.6/net/ipv6/exthdrs.c 2009-07-02 19:41:20.000000000 -0400 43187--- linux-2.6.30.4/net/ipv6/exthdrs.c 2009-07-24 17:47:51.000000000 -0400
44176+++ linux-2.6.29.6/net/ipv6/exthdrs.c 2009-07-23 17:34:32.237793198 -0400 43188+++ linux-2.6.30.4/net/ipv6/exthdrs.c 2009-07-30 09:48:10.155784268 -0400
44177@@ -630,7 +630,7 @@ static struct tlvtype_proc tlvprochopopt 43189@@ -630,7 +630,7 @@ static struct tlvtype_proc tlvprochopopt
44178 .type = IPV6_TLV_JUMBO, 43190 .type = IPV6_TLV_JUMBO,
44179 .func = ipv6_hop_jumbo, 43191 .func = ipv6_hop_jumbo,
@@ -44183,9 +43195,9 @@ diff -urNp linux-2.6.29.6/net/ipv6/exthdrs.c linux-2.6.29.6/net/ipv6/exthdrs.c
44183 }; 43195 };
44184 43196
44185 int ipv6_parse_hopopts(struct sk_buff *skb) 43197 int ipv6_parse_hopopts(struct sk_buff *skb)
44186diff -urNp linux-2.6.29.6/net/ipv6/ip6mr.c linux-2.6.29.6/net/ipv6/ip6mr.c 43198diff -urNp linux-2.6.30.4/net/ipv6/ip6mr.c linux-2.6.30.4/net/ipv6/ip6mr.c
44187--- linux-2.6.29.6/net/ipv6/ip6mr.c 2009-07-02 19:41:20.000000000 -0400 43199--- linux-2.6.30.4/net/ipv6/ip6mr.c 2009-07-24 17:47:51.000000000 -0400
44188+++ linux-2.6.29.6/net/ipv6/ip6mr.c 2009-07-23 18:40:28.745511060 -0400 43200+++ linux-2.6.30.4/net/ipv6/ip6mr.c 2009-07-30 09:48:10.156679415 -0400
44189@@ -204,7 +204,7 @@ static int ip6mr_vif_seq_show(struct seq 43201@@ -204,7 +204,7 @@ static int ip6mr_vif_seq_show(struct seq
44190 return 0; 43202 return 0;
44191 } 43203 }
@@ -44222,9 +43234,9 @@ diff -urNp linux-2.6.29.6/net/ipv6/ip6mr.c linux-2.6.29.6/net/ipv6/ip6mr.c
44222 .owner = THIS_MODULE, 43234 .owner = THIS_MODULE,
44223 .open = ipmr_mfc_open, 43235 .open = ipmr_mfc_open,
44224 .read = seq_read, 43236 .read = seq_read,
44225diff -urNp linux-2.6.29.6/net/ipv6/raw.c linux-2.6.29.6/net/ipv6/raw.c 43237diff -urNp linux-2.6.30.4/net/ipv6/raw.c linux-2.6.30.4/net/ipv6/raw.c
44226--- linux-2.6.29.6/net/ipv6/raw.c 2009-07-02 19:41:20.000000000 -0400 43238--- linux-2.6.30.4/net/ipv6/raw.c 2009-07-24 17:47:51.000000000 -0400
44227+++ linux-2.6.29.6/net/ipv6/raw.c 2009-07-23 17:34:32.237793198 -0400 43239+++ linux-2.6.30.4/net/ipv6/raw.c 2009-07-30 09:48:10.156679415 -0400
44228@@ -600,7 +600,7 @@ out: 43240@@ -600,7 +600,7 @@ out:
44229 return err; 43241 return err;
44230 } 43242 }
@@ -44234,10 +43246,10 @@ diff -urNp linux-2.6.29.6/net/ipv6/raw.c linux-2.6.29.6/net/ipv6/raw.c
44234 struct flowi *fl, struct rt6_info *rt, 43246 struct flowi *fl, struct rt6_info *rt,
44235 unsigned int flags) 43247 unsigned int flags)
44236 { 43248 {
44237diff -urNp linux-2.6.29.6/net/ipv6/tcp_ipv6.c linux-2.6.29.6/net/ipv6/tcp_ipv6.c 43249diff -urNp linux-2.6.30.4/net/ipv6/tcp_ipv6.c linux-2.6.30.4/net/ipv6/tcp_ipv6.c
44238--- linux-2.6.29.6/net/ipv6/tcp_ipv6.c 2009-07-02 19:41:20.000000000 -0400 43250--- linux-2.6.30.4/net/ipv6/tcp_ipv6.c 2009-07-24 17:47:51.000000000 -0400
44239+++ linux-2.6.29.6/net/ipv6/tcp_ipv6.c 2009-07-23 17:34:32.238737195 -0400 43251+++ linux-2.6.30.4/net/ipv6/tcp_ipv6.c 2009-07-30 11:10:49.952595469 -0400
44240@@ -1576,6 +1576,9 @@ static int tcp_v6_do_rcv(struct sock *sk 43252@@ -1575,6 +1575,9 @@ static int tcp_v6_do_rcv(struct sock *sk
44241 return 0; 43253 return 0;
44242 43254
44243 reset: 43255 reset:
@@ -44247,7 +43259,7 @@ diff -urNp linux-2.6.29.6/net/ipv6/tcp_ipv6.c linux-2.6.29.6/net/ipv6/tcp_ipv6.c
44247 tcp_v6_send_reset(sk, skb); 43259 tcp_v6_send_reset(sk, skb);
44248 discard: 43260 discard:
44249 if (opt_skb) 43261 if (opt_skb)
44250@@ -1699,6 +1702,9 @@ no_tcp_socket: 43262@@ -1697,6 +1700,9 @@ no_tcp_socket:
44251 bad_packet: 43263 bad_packet:
44252 TCP_INC_STATS_BH(net, TCP_MIB_INERRS); 43264 TCP_INC_STATS_BH(net, TCP_MIB_INERRS);
44253 } else { 43265 } else {
@@ -44257,10 +43269,10 @@ diff -urNp linux-2.6.29.6/net/ipv6/tcp_ipv6.c linux-2.6.29.6/net/ipv6/tcp_ipv6.c
44257 tcp_v6_send_reset(NULL, skb); 43269 tcp_v6_send_reset(NULL, skb);
44258 } 43270 }
44259 43271
44260diff -urNp linux-2.6.29.6/net/ipv6/udp.c linux-2.6.29.6/net/ipv6/udp.c 43272diff -urNp linux-2.6.30.4/net/ipv6/udp.c linux-2.6.30.4/net/ipv6/udp.c
44261--- linux-2.6.29.6/net/ipv6/udp.c 2009-07-02 19:41:20.000000000 -0400 43273--- linux-2.6.30.4/net/ipv6/udp.c 2009-07-24 17:47:51.000000000 -0400
44262+++ linux-2.6.29.6/net/ipv6/udp.c 2009-07-23 17:34:32.238737195 -0400 43274+++ linux-2.6.30.4/net/ipv6/udp.c 2009-07-30 11:10:49.959325956 -0400
44263@@ -558,6 +558,9 @@ int __udp6_lib_rcv(struct sk_buff *skb, 43275@@ -590,6 +590,9 @@ int __udp6_lib_rcv(struct sk_buff *skb,
44264 UDP6_INC_STATS_BH(net, UDP_MIB_NOPORTS, 43276 UDP6_INC_STATS_BH(net, UDP_MIB_NOPORTS,
44265 proto == IPPROTO_UDPLITE); 43277 proto == IPPROTO_UDPLITE);
44266 43278
@@ -44270,10 +43282,10 @@ diff -urNp linux-2.6.29.6/net/ipv6/udp.c linux-2.6.29.6/net/ipv6/udp.c
44270 icmpv6_send(skb, ICMPV6_DEST_UNREACH, ICMPV6_PORT_UNREACH, 0, dev); 43282 icmpv6_send(skb, ICMPV6_DEST_UNREACH, ICMPV6_PORT_UNREACH, 0, dev);
44271 43283
44272 kfree_skb(skb); 43284 kfree_skb(skb);
44273diff -urNp linux-2.6.29.6/net/key/af_key.c linux-2.6.29.6/net/key/af_key.c 43285diff -urNp linux-2.6.30.4/net/key/af_key.c linux-2.6.30.4/net/key/af_key.c
44274--- linux-2.6.29.6/net/key/af_key.c 2009-07-02 19:41:20.000000000 -0400 43286--- linux-2.6.30.4/net/key/af_key.c 2009-07-24 17:47:51.000000000 -0400
44275+++ linux-2.6.29.6/net/key/af_key.c 2009-07-23 18:40:28.770272617 -0400 43287+++ linux-2.6.30.4/net/key/af_key.c 2009-07-30 09:48:10.157841054 -0400
44276@@ -3707,7 +3707,7 @@ static void pfkey_seq_stop(struct seq_fi 43288@@ -3705,7 +3705,7 @@ static void pfkey_seq_stop(struct seq_fi
44277 read_unlock(&pfkey_table_lock); 43289 read_unlock(&pfkey_table_lock);
44278 } 43290 }
44279 43291
@@ -44282,7 +43294,7 @@ diff -urNp linux-2.6.29.6/net/key/af_key.c linux-2.6.29.6/net/key/af_key.c
44282 .start = pfkey_seq_start, 43294 .start = pfkey_seq_start,
44283 .next = pfkey_seq_next, 43295 .next = pfkey_seq_next,
44284 .stop = pfkey_seq_stop, 43296 .stop = pfkey_seq_stop,
44285@@ -3720,7 +3720,7 @@ static int pfkey_seq_open(struct inode * 43297@@ -3718,7 +3718,7 @@ static int pfkey_seq_open(struct inode *
44286 sizeof(struct seq_net_private)); 43298 sizeof(struct seq_net_private));
44287 } 43299 }
44288 43300
@@ -44291,22 +43303,22 @@ diff -urNp linux-2.6.29.6/net/key/af_key.c linux-2.6.29.6/net/key/af_key.c
44291 .open = pfkey_seq_open, 43303 .open = pfkey_seq_open,
44292 .read = seq_read, 43304 .read = seq_read,
44293 .llseek = seq_lseek, 43305 .llseek = seq_lseek,
44294diff -urNp linux-2.6.29.6/net/mac80211/ieee80211_i.h linux-2.6.29.6/net/mac80211/ieee80211_i.h 43306diff -urNp linux-2.6.30.4/net/mac80211/ieee80211_i.h linux-2.6.30.4/net/mac80211/ieee80211_i.h
44295--- linux-2.6.29.6/net/mac80211/ieee80211_i.h 2009-07-02 19:41:20.000000000 -0400 43307--- linux-2.6.30.4/net/mac80211/ieee80211_i.h 2009-07-24 17:47:51.000000000 -0400
44296+++ linux-2.6.29.6/net/mac80211/ieee80211_i.h 2009-07-23 17:34:32.239733592 -0400 43308+++ linux-2.6.30.4/net/mac80211/ieee80211_i.h 2009-07-30 09:48:10.157841054 -0400
44297@@ -562,7 +562,7 @@ struct ieee80211_local { 43309@@ -599,7 +599,7 @@ struct ieee80211_local {
44298 unsigned long queue_stop_reasons[IEEE80211_MAX_QUEUES];
44299 spinlock_t queue_stop_reason_lock; 43310 spinlock_t queue_stop_reason_lock;
43311
44300 struct net_device *mdev; /* wmaster# - "master" 802.11 device */ 43312 struct net_device *mdev; /* wmaster# - "master" 802.11 device */
44301- int open_count; 43313- int open_count;
44302+ atomic_t open_count; 43314+ atomic_t open_count;
44303 int monitors, cooked_mntrs; 43315 int monitors, cooked_mntrs;
44304 /* number of interfaces with corresponding FIF_ flags */ 43316 /* number of interfaces with corresponding FIF_ flags */
44305 int fif_fcsfail, fif_plcpfail, fif_control, fif_other_bss; 43317 int fif_fcsfail, fif_plcpfail, fif_control, fif_other_bss;
44306diff -urNp linux-2.6.29.6/net/mac80211/iface.c linux-2.6.29.6/net/mac80211/iface.c 43318diff -urNp linux-2.6.30.4/net/mac80211/iface.c linux-2.6.30.4/net/mac80211/iface.c
44307--- linux-2.6.29.6/net/mac80211/iface.c 2009-07-02 19:41:20.000000000 -0400 43319--- linux-2.6.30.4/net/mac80211/iface.c 2009-07-24 17:47:51.000000000 -0400
44308+++ linux-2.6.29.6/net/mac80211/iface.c 2009-07-23 17:34:32.239733592 -0400 43320+++ linux-2.6.30.4/net/mac80211/iface.c 2009-07-30 09:48:10.157841054 -0400
44309@@ -146,7 +146,7 @@ static int ieee80211_open(struct net_dev 43321@@ -163,7 +163,7 @@ static int ieee80211_open(struct net_dev
44310 break; 43322 break;
44311 } 43323 }
44312 43324
@@ -44315,7 +43327,7 @@ diff -urNp linux-2.6.29.6/net/mac80211/iface.c linux-2.6.29.6/net/mac80211/iface
44315 res = 0; 43327 res = 0;
44316 if (local->ops->start) 43328 if (local->ops->start)
44317 res = local->ops->start(local_to_hw(local)); 43329 res = local->ops->start(local_to_hw(local));
44318@@ -182,7 +182,7 @@ static int ieee80211_open(struct net_dev 43330@@ -199,7 +199,7 @@ static int ieee80211_open(struct net_dev
44319 * Validate the MAC address for this device. 43331 * Validate the MAC address for this device.
44320 */ 43332 */
44321 if (!is_valid_ether_addr(dev->dev_addr)) { 43333 if (!is_valid_ether_addr(dev->dev_addr)) {
@@ -44324,7 +43336,7 @@ diff -urNp linux-2.6.29.6/net/mac80211/iface.c linux-2.6.29.6/net/mac80211/iface
44324 local->ops->stop(local_to_hw(local)); 43336 local->ops->stop(local_to_hw(local));
44325 return -EADDRNOTAVAIL; 43337 return -EADDRNOTAVAIL;
44326 } 43338 }
44327@@ -267,7 +267,7 @@ static int ieee80211_open(struct net_dev 43339@@ -286,7 +286,7 @@ static int ieee80211_open(struct net_dev
44328 } 43340 }
44329 } 43341 }
44330 43342
@@ -44333,7 +43345,7 @@ diff -urNp linux-2.6.29.6/net/mac80211/iface.c linux-2.6.29.6/net/mac80211/iface
44333 res = dev_open(local->mdev); 43345 res = dev_open(local->mdev);
44334 WARN_ON(res); 43346 WARN_ON(res);
44335 if (res) 43347 if (res)
44336@@ -287,7 +287,7 @@ static int ieee80211_open(struct net_dev 43348@@ -306,7 +306,7 @@ static int ieee80211_open(struct net_dev
44337 if (sdata->flags & IEEE80211_SDATA_PROMISC) 43349 if (sdata->flags & IEEE80211_SDATA_PROMISC)
44338 atomic_inc(&local->iff_promiscs); 43350 atomic_inc(&local->iff_promiscs);
44339 43351
@@ -44342,7 +43354,7 @@ diff -urNp linux-2.6.29.6/net/mac80211/iface.c linux-2.6.29.6/net/mac80211/iface
44342 if (hw_reconf_flags) { 43354 if (hw_reconf_flags) {
44343 ieee80211_hw_config(local, hw_reconf_flags); 43355 ieee80211_hw_config(local, hw_reconf_flags);
44344 /* 43356 /*
44345@@ -316,7 +316,7 @@ static int ieee80211_open(struct net_dev 43357@@ -334,7 +334,7 @@ static int ieee80211_open(struct net_dev
44346 err_del_interface: 43358 err_del_interface:
44347 local->ops->remove_interface(local_to_hw(local), &conf); 43359 local->ops->remove_interface(local_to_hw(local), &conf);
44348 err_stop: 43360 err_stop:
@@ -44351,7 +43363,7 @@ diff -urNp linux-2.6.29.6/net/mac80211/iface.c linux-2.6.29.6/net/mac80211/iface
44351 local->ops->stop(local_to_hw(local)); 43363 local->ops->stop(local_to_hw(local));
44352 err_del_bss: 43364 err_del_bss:
44353 sdata->bss = NULL; 43365 sdata->bss = NULL;
44354@@ -401,7 +401,7 @@ static int ieee80211_stop(struct net_dev 43366@@ -432,7 +432,7 @@ static int ieee80211_stop(struct net_dev
44355 WARN_ON(!list_empty(&sdata->u.ap.vlans)); 43367 WARN_ON(!list_empty(&sdata->u.ap.vlans));
44356 } 43368 }
44357 43369
@@ -44360,7 +43372,7 @@ diff -urNp linux-2.6.29.6/net/mac80211/iface.c linux-2.6.29.6/net/mac80211/iface
44360 43372
44361 switch (sdata->vif.type) { 43373 switch (sdata->vif.type) {
44362 case NL80211_IFTYPE_AP_VLAN: 43374 case NL80211_IFTYPE_AP_VLAN:
44363@@ -514,7 +514,7 @@ static int ieee80211_stop(struct net_dev 43375@@ -554,7 +554,7 @@ static int ieee80211_stop(struct net_dev
44364 43376
44365 sdata->bss = NULL; 43377 sdata->bss = NULL;
44366 43378
@@ -44369,10 +43381,10 @@ diff -urNp linux-2.6.29.6/net/mac80211/iface.c linux-2.6.29.6/net/mac80211/iface
44369 if (netif_running(local->mdev)) 43381 if (netif_running(local->mdev))
44370 dev_close(local->mdev); 43382 dev_close(local->mdev);
44371 43383
44372diff -urNp linux-2.6.29.6/net/mac80211/main.c linux-2.6.29.6/net/mac80211/main.c 43384diff -urNp linux-2.6.30.4/net/mac80211/main.c linux-2.6.30.4/net/mac80211/main.c
44373--- linux-2.6.29.6/net/mac80211/main.c 2009-07-02 19:41:20.000000000 -0400 43385--- linux-2.6.30.4/net/mac80211/main.c 2009-07-24 17:47:51.000000000 -0400
44374+++ linux-2.6.29.6/net/mac80211/main.c 2009-07-23 17:34:32.239733592 -0400 43386+++ linux-2.6.30.4/net/mac80211/main.c 2009-07-30 09:48:10.158959820 -0400
44375@@ -233,7 +233,7 @@ int ieee80211_hw_config(struct ieee80211 43387@@ -266,7 +266,7 @@ int ieee80211_hw_config(struct ieee80211
44376 local->hw.conf.power_level = power; 43388 local->hw.conf.power_level = power;
44377 } 43389 }
44378 43390
@@ -44381,10 +43393,31 @@ diff -urNp linux-2.6.29.6/net/mac80211/main.c linux-2.6.29.6/net/mac80211/main.c
44381 ret = local->ops->config(local_to_hw(local), changed); 43393 ret = local->ops->config(local_to_hw(local), changed);
44382 /* 43394 /*
44383 * Goal: 43395 * Goal:
44384diff -urNp linux-2.6.29.6/net/mac80211/rate.c linux-2.6.29.6/net/mac80211/rate.c 43396diff -urNp linux-2.6.30.4/net/mac80211/pm.c linux-2.6.30.4/net/mac80211/pm.c
44385--- linux-2.6.29.6/net/mac80211/rate.c 2009-07-02 19:41:20.000000000 -0400 43397--- linux-2.6.30.4/net/mac80211/pm.c 2009-07-24 17:47:51.000000000 -0400
44386+++ linux-2.6.29.6/net/mac80211/rate.c 2009-07-23 17:34:32.240714874 -0400 43398+++ linux-2.6.30.4/net/mac80211/pm.c 2009-07-30 09:48:10.158959820 -0400
44387@@ -256,7 +256,7 @@ int ieee80211_init_rate_ctrl_alg(struct 43399@@ -65,7 +65,7 @@ int __ieee80211_suspend(struct ieee80211
43400 flush_workqueue(local->hw.workqueue);
43401
43402 /* stop hardware */
43403- if (local->open_count) {
43404+ if (atomic_read(&local->open_count)) {
43405 ieee80211_led_radio(local, false);
43406 local->ops->stop(hw);
43407 }
43408@@ -82,7 +82,7 @@ int __ieee80211_resume(struct ieee80211_
43409 int res;
43410
43411 /* restart hardware */
43412- if (local->open_count) {
43413+ if (atomic_read(&local->open_count)) {
43414 res = local->ops->start(hw);
43415
43416 ieee80211_led_radio(local, hw->conf.radio_enabled);
43417diff -urNp linux-2.6.30.4/net/mac80211/rate.c linux-2.6.30.4/net/mac80211/rate.c
43418--- linux-2.6.30.4/net/mac80211/rate.c 2009-07-24 17:47:51.000000000 -0400
43419+++ linux-2.6.30.4/net/mac80211/rate.c 2009-07-30 09:48:10.158959820 -0400
43420@@ -258,7 +258,7 @@ int ieee80211_init_rate_ctrl_alg(struct
44388 struct rate_control_ref *ref, *old; 43421 struct rate_control_ref *ref, *old;
44389 43422
44390 ASSERT_RTNL(); 43423 ASSERT_RTNL();
@@ -44393,9 +43426,9 @@ diff -urNp linux-2.6.29.6/net/mac80211/rate.c linux-2.6.29.6/net/mac80211/rate.c
44393 return -EBUSY; 43426 return -EBUSY;
44394 43427
44395 ref = rate_control_alloc(name, local); 43428 ref = rate_control_alloc(name, local);
44396diff -urNp linux-2.6.29.6/net/mac80211/rc80211_minstrel_debugfs.c linux-2.6.29.6/net/mac80211/rc80211_minstrel_debugfs.c 43429diff -urNp linux-2.6.30.4/net/mac80211/rc80211_minstrel_debugfs.c linux-2.6.30.4/net/mac80211/rc80211_minstrel_debugfs.c
44397--- linux-2.6.29.6/net/mac80211/rc80211_minstrel_debugfs.c 2009-07-02 19:41:20.000000000 -0400 43430--- linux-2.6.30.4/net/mac80211/rc80211_minstrel_debugfs.c 2009-07-24 17:47:51.000000000 -0400
44398+++ linux-2.6.29.6/net/mac80211/rc80211_minstrel_debugfs.c 2009-07-23 18:40:28.777436731 -0400 43431+++ linux-2.6.30.4/net/mac80211/rc80211_minstrel_debugfs.c 2009-07-30 09:48:10.158959820 -0400
44399@@ -139,7 +139,7 @@ minstrel_stats_release(struct inode *ino 43432@@ -139,7 +139,7 @@ minstrel_stats_release(struct inode *ino
44400 return 0; 43433 return 0;
44401 } 43434 }
@@ -44405,9 +43438,9 @@ diff -urNp linux-2.6.29.6/net/mac80211/rc80211_minstrel_debugfs.c linux-2.6.29.6
44405 .owner = THIS_MODULE, 43438 .owner = THIS_MODULE,
44406 .open = minstrel_stats_open, 43439 .open = minstrel_stats_open,
44407 .read = minstrel_stats_read, 43440 .read = minstrel_stats_read,
44408diff -urNp linux-2.6.29.6/net/mac80211/rc80211_pid_debugfs.c linux-2.6.29.6/net/mac80211/rc80211_pid_debugfs.c 43441diff -urNp linux-2.6.30.4/net/mac80211/rc80211_pid_debugfs.c linux-2.6.30.4/net/mac80211/rc80211_pid_debugfs.c
44409--- linux-2.6.29.6/net/mac80211/rc80211_pid_debugfs.c 2009-07-02 19:41:20.000000000 -0400 43442--- linux-2.6.30.4/net/mac80211/rc80211_pid_debugfs.c 2009-07-24 17:47:51.000000000 -0400
44410+++ linux-2.6.29.6/net/mac80211/rc80211_pid_debugfs.c 2009-07-23 18:40:28.783149857 -0400 43443+++ linux-2.6.30.4/net/mac80211/rc80211_pid_debugfs.c 2009-07-30 09:48:10.158959820 -0400
44411@@ -198,7 +198,7 @@ static ssize_t rate_control_pid_events_r 43444@@ -198,7 +198,7 @@ static ssize_t rate_control_pid_events_r
44412 43445
44413 #undef RC_PID_PRINT_BUF_SIZE 43446 #undef RC_PID_PRINT_BUF_SIZE
@@ -44417,10 +43450,10 @@ diff -urNp linux-2.6.29.6/net/mac80211/rc80211_pid_debugfs.c linux-2.6.29.6/net/
44417 .owner = THIS_MODULE, 43450 .owner = THIS_MODULE,
44418 .read = rate_control_pid_events_read, 43451 .read = rate_control_pid_events_read,
44419 .poll = rate_control_pid_events_poll, 43452 .poll = rate_control_pid_events_poll,
44420diff -urNp linux-2.6.29.6/net/packet/af_packet.c linux-2.6.29.6/net/packet/af_packet.c 43453diff -urNp linux-2.6.30.4/net/packet/af_packet.c linux-2.6.30.4/net/packet/af_packet.c
44421--- linux-2.6.29.6/net/packet/af_packet.c 2009-07-02 19:41:20.000000000 -0400 43454--- linux-2.6.30.4/net/packet/af_packet.c 2009-07-24 17:47:51.000000000 -0400
44422+++ linux-2.6.29.6/net/packet/af_packet.c 2009-07-23 18:40:28.789919912 -0400 43455+++ linux-2.6.30.4/net/packet/af_packet.c 2009-07-30 09:48:10.160018712 -0400
44423@@ -1741,7 +1741,7 @@ static void packet_mm_close(struct vm_ar 43456@@ -1740,7 +1740,7 @@ static void packet_mm_close(struct vm_ar
44424 atomic_dec(&pkt_sk(sk)->mapped); 43457 atomic_dec(&pkt_sk(sk)->mapped);
44425 } 43458 }
44426 43459
@@ -44429,9 +43462,9 @@ diff -urNp linux-2.6.29.6/net/packet/af_packet.c linux-2.6.29.6/net/packet/af_pa
44429 .open = packet_mm_open, 43462 .open = packet_mm_open,
44430 .close =packet_mm_close, 43463 .close =packet_mm_close,
44431 }; 43464 };
44432diff -urNp linux-2.6.29.6/net/sctp/socket.c linux-2.6.29.6/net/sctp/socket.c 43465diff -urNp linux-2.6.30.4/net/sctp/socket.c linux-2.6.30.4/net/sctp/socket.c
44433--- linux-2.6.29.6/net/sctp/socket.c 2009-07-02 19:41:20.000000000 -0400 43466--- linux-2.6.30.4/net/sctp/socket.c 2009-07-24 17:47:51.000000000 -0400
44434+++ linux-2.6.29.6/net/sctp/socket.c 2009-07-23 17:34:32.240714874 -0400 43467+++ linux-2.6.30.4/net/sctp/socket.c 2009-07-30 09:48:10.161030758 -0400
44435@@ -1434,7 +1434,7 @@ SCTP_STATIC int sctp_sendmsg(struct kioc 43468@@ -1434,7 +1434,7 @@ SCTP_STATIC int sctp_sendmsg(struct kioc
44436 struct sctp_sndrcvinfo *sinfo; 43469 struct sctp_sndrcvinfo *sinfo;
44437 struct sctp_initmsg *sinit; 43470 struct sctp_initmsg *sinit;
@@ -44441,7 +43474,7 @@ diff -urNp linux-2.6.29.6/net/sctp/socket.c linux-2.6.29.6/net/sctp/socket.c
44441 int err; 43474 int err;
44442 sctp_scope_t scope; 43475 sctp_scope_t scope;
44443 long timeo; 43476 long timeo;
44444@@ -5756,7 +5756,6 @@ pp_found: 43477@@ -5750,7 +5750,6 @@ pp_found:
44445 */ 43478 */
44446 int reuse = sk->sk_reuse; 43479 int reuse = sk->sk_reuse;
44447 struct sock *sk2; 43480 struct sock *sk2;
@@ -44449,9 +43482,9 @@ diff -urNp linux-2.6.29.6/net/sctp/socket.c linux-2.6.29.6/net/sctp/socket.c
44449 43482
44450 SCTP_DEBUG_PRINTK("sctp_get_port() found a possible match\n"); 43483 SCTP_DEBUG_PRINTK("sctp_get_port() found a possible match\n");
44451 if (pp->fastreuse && sk->sk_reuse && 43484 if (pp->fastreuse && sk->sk_reuse &&
44452diff -urNp linux-2.6.29.6/net/socket.c linux-2.6.29.6/net/socket.c 43485diff -urNp linux-2.6.30.4/net/socket.c linux-2.6.30.4/net/socket.c
44453--- linux-2.6.29.6/net/socket.c 2009-07-02 19:41:20.000000000 -0400 43486--- linux-2.6.30.4/net/socket.c 2009-07-24 17:47:51.000000000 -0400
44454+++ linux-2.6.29.6/net/socket.c 2009-07-23 19:30:30.968455360 -0400 43487+++ linux-2.6.30.4/net/socket.c 2009-07-30 11:29:24.032618401 -0400
44455@@ -86,6 +86,7 @@ 43488@@ -86,6 +86,7 @@
44456 #include <linux/audit.h> 43489 #include <linux/audit.h>
44457 #include <linux/wireless.h> 43490 #include <linux/wireless.h>
@@ -44500,16 +43533,7 @@ diff -urNp linux-2.6.29.6/net/socket.c linux-2.6.29.6/net/socket.c
44500 43533
44501 static struct file_system_type sock_fs_type = { 43534 static struct file_system_type sock_fs_type = {
44502 .name = "sockfs", 43535 .name = "sockfs",
44503@@ -328,7 +344,7 @@ static char *sockfs_dname(struct dentry 43536@@ -1283,6 +1299,16 @@ SYSCALL_DEFINE3(socket, int, family, int
44504 dentry->d_inode->i_ino);
44505 }
44506
44507-static struct dentry_operations sockfs_dentry_operations = {
44508+static const struct dentry_operations sockfs_dentry_operations = {
44509 .d_delete = sockfs_delete_dentry,
44510 .d_dname = sockfs_dname,
44511 };
44512@@ -1234,6 +1250,16 @@ SYSCALL_DEFINE3(socket, int, family, int
44513 if (SOCK_NONBLOCK != O_NONBLOCK && (flags & SOCK_NONBLOCK)) 43537 if (SOCK_NONBLOCK != O_NONBLOCK && (flags & SOCK_NONBLOCK))
44514 flags = (flags & ~SOCK_NONBLOCK) | O_NONBLOCK; 43538 flags = (flags & ~SOCK_NONBLOCK) | O_NONBLOCK;
44515 43539
@@ -44526,7 +43550,7 @@ diff -urNp linux-2.6.29.6/net/socket.c linux-2.6.29.6/net/socket.c
44526 retval = sock_create(family, type, protocol, &sock); 43550 retval = sock_create(family, type, protocol, &sock);
44527 if (retval < 0) 43551 if (retval < 0)
44528 goto out; 43552 goto out;
44529@@ -1366,6 +1392,14 @@ SYSCALL_DEFINE3(bind, int, fd, struct so 43553@@ -1415,6 +1441,14 @@ SYSCALL_DEFINE3(bind, int, fd, struct so
44530 if (sock) { 43554 if (sock) {
44531 err = move_addr_to_kernel(umyaddr, addrlen, (struct sockaddr *)&address); 43555 err = move_addr_to_kernel(umyaddr, addrlen, (struct sockaddr *)&address);
44532 if (err >= 0) { 43556 if (err >= 0) {
@@ -44541,7 +43565,7 @@ diff -urNp linux-2.6.29.6/net/socket.c linux-2.6.29.6/net/socket.c
44541 err = security_socket_bind(sock, 43565 err = security_socket_bind(sock,
44542 (struct sockaddr *)&address, 43566 (struct sockaddr *)&address,
44543 addrlen); 43567 addrlen);
44544@@ -1374,6 +1408,7 @@ SYSCALL_DEFINE3(bind, int, fd, struct so 43568@@ -1423,6 +1457,7 @@ SYSCALL_DEFINE3(bind, int, fd, struct so
44545 (struct sockaddr *) 43569 (struct sockaddr *)
44546 &address, addrlen); 43570 &address, addrlen);
44547 } 43571 }
@@ -44549,7 +43573,7 @@ diff -urNp linux-2.6.29.6/net/socket.c linux-2.6.29.6/net/socket.c
44549 fput_light(sock->file, fput_needed); 43573 fput_light(sock->file, fput_needed);
44550 } 43574 }
44551 return err; 43575 return err;
44552@@ -1397,10 +1432,20 @@ SYSCALL_DEFINE2(listen, int, fd, int, ba 43576@@ -1446,10 +1481,20 @@ SYSCALL_DEFINE2(listen, int, fd, int, ba
44553 if ((unsigned)backlog > somaxconn) 43577 if ((unsigned)backlog > somaxconn)
44554 backlog = somaxconn; 43578 backlog = somaxconn;
44555 43579
@@ -44570,7 +43594,7 @@ diff -urNp linux-2.6.29.6/net/socket.c linux-2.6.29.6/net/socket.c
44570 fput_light(sock->file, fput_needed); 43594 fput_light(sock->file, fput_needed);
44571 } 43595 }
44572 return err; 43596 return err;
44573@@ -1443,6 +1488,18 @@ SYSCALL_DEFINE4(accept4, int, fd, struct 43597@@ -1492,6 +1537,18 @@ SYSCALL_DEFINE4(accept4, int, fd, struct
44574 newsock->type = sock->type; 43598 newsock->type = sock->type;
44575 newsock->ops = sock->ops; 43599 newsock->ops = sock->ops;
44576 43600
@@ -44589,15 +43613,16 @@ diff -urNp linux-2.6.29.6/net/socket.c linux-2.6.29.6/net/socket.c
44589 /* 43613 /*
44590 * We don't need try_module_get here, as the listening socket (sock) 43614 * We don't need try_module_get here, as the listening socket (sock)
44591 * has the protocol module (sock->ops->owner) held. 43615 * has the protocol module (sock->ops->owner) held.
44592@@ -1486,6 +1543,7 @@ SYSCALL_DEFINE4(accept4, int, fd, struct 43616@@ -1534,6 +1591,8 @@ SYSCALL_DEFINE4(accept4, int, fd, struct
43617 fd_install(newfd, newfile);
44593 err = newfd; 43618 err = newfd;
44594 43619
44595 security_socket_post_accept(sock, newsock);
44596+ gr_attach_curr_ip(newsock->sk); 43620+ gr_attach_curr_ip(newsock->sk);
44597 43621+
44598 out_put: 43622 out_put:
44599 fput_light(sock->file, fput_needed); 43623 fput_light(sock->file, fput_needed);
44600@@ -1524,6 +1582,7 @@ SYSCALL_DEFINE3(connect, int, fd, struct 43624 out:
43625@@ -1571,6 +1630,7 @@ SYSCALL_DEFINE3(connect, int, fd, struct
44601 int, addrlen) 43626 int, addrlen)
44602 { 43627 {
44603 struct socket *sock; 43628 struct socket *sock;
@@ -44605,7 +43630,7 @@ diff -urNp linux-2.6.29.6/net/socket.c linux-2.6.29.6/net/socket.c
44605 struct sockaddr_storage address; 43630 struct sockaddr_storage address;
44606 int err, fput_needed; 43631 int err, fput_needed;
44607 43632
44608@@ -1534,6 +1593,17 @@ SYSCALL_DEFINE3(connect, int, fd, struct 43633@@ -1581,6 +1641,17 @@ SYSCALL_DEFINE3(connect, int, fd, struct
44609 if (err < 0) 43634 if (err < 0)
44610 goto out_put; 43635 goto out_put;
44611 43636
@@ -44623,18 +43648,9 @@ diff -urNp linux-2.6.29.6/net/socket.c linux-2.6.29.6/net/socket.c
44623 err = 43648 err =
44624 security_socket_connect(sock, (struct sockaddr *)&address, addrlen); 43649 security_socket_connect(sock, (struct sockaddr *)&address, addrlen);
44625 if (err) 43650 if (err)
44626diff -urNp linux-2.6.29.6/net/sunrpc/rpc_pipe.c linux-2.6.29.6/net/sunrpc/rpc_pipe.c 43651diff -urNp linux-2.6.30.4/net/sunrpc/rpc_pipe.c linux-2.6.30.4/net/sunrpc/rpc_pipe.c
44627--- linux-2.6.29.6/net/sunrpc/rpc_pipe.c 2009-07-02 19:41:20.000000000 -0400 43652--- linux-2.6.30.4/net/sunrpc/rpc_pipe.c 2009-07-24 17:47:51.000000000 -0400
44628+++ linux-2.6.29.6/net/sunrpc/rpc_pipe.c 2009-07-23 18:40:28.803536193 -0400 43653+++ linux-2.6.30.4/net/sunrpc/rpc_pipe.c 2009-07-30 12:07:21.048974939 -0400
44629@@ -480,7 +480,7 @@ static int rpc_delete_dentry(struct dent
44630 return 1;
44631 }
44632
44633-static struct dentry_operations rpc_dentry_operations = {
44634+static const struct dentry_operations rpc_dentry_operations = {
44635 .d_delete = rpc_delete_dentry,
44636 };
44637
44638@@ -858,7 +858,7 @@ EXPORT_SYMBOL_GPL(rpc_unlink); 43654@@ -858,7 +858,7 @@ EXPORT_SYMBOL_GPL(rpc_unlink);
44639 /* 43655 /*
44640 * populate the filesystem 43656 * populate the filesystem
@@ -44644,9 +43660,9 @@ diff -urNp linux-2.6.29.6/net/sunrpc/rpc_pipe.c linux-2.6.29.6/net/sunrpc/rpc_pi
44644 .alloc_inode = rpc_alloc_inode, 43660 .alloc_inode = rpc_alloc_inode,
44645 .destroy_inode = rpc_destroy_inode, 43661 .destroy_inode = rpc_destroy_inode,
44646 .statfs = simple_statfs, 43662 .statfs = simple_statfs,
44647diff -urNp linux-2.6.29.6/net/unix/af_unix.c linux-2.6.29.6/net/unix/af_unix.c 43663diff -urNp linux-2.6.30.4/net/unix/af_unix.c linux-2.6.30.4/net/unix/af_unix.c
44648--- linux-2.6.29.6/net/unix/af_unix.c 2009-07-02 19:41:20.000000000 -0400 43664--- linux-2.6.30.4/net/unix/af_unix.c 2009-07-24 17:47:51.000000000 -0400
44649+++ linux-2.6.29.6/net/unix/af_unix.c 2009-07-23 17:34:32.242831111 -0400 43665+++ linux-2.6.30.4/net/unix/af_unix.c 2009-07-30 11:10:49.995552784 -0400
44650@@ -734,6 +734,12 @@ static struct sock *unix_find_other(stru 43666@@ -734,6 +734,12 @@ static struct sock *unix_find_other(stru
44651 err = -ECONNREFUSED; 43667 err = -ECONNREFUSED;
44652 if (!S_ISSOCK(inode->i_mode)) 43668 if (!S_ISSOCK(inode->i_mode))
@@ -44704,9 +43720,9 @@ diff -urNp linux-2.6.29.6/net/unix/af_unix.c linux-2.6.29.6/net/unix/af_unix.c
44704 list = &unix_socket_table[addr->hash]; 43720 list = &unix_socket_table[addr->hash];
44705 } else { 43721 } else {
44706 list = &unix_socket_table[dentry->d_inode->i_ino & (UNIX_HASH_SIZE-1)]; 43722 list = &unix_socket_table[dentry->d_inode->i_ino & (UNIX_HASH_SIZE-1)];
44707diff -urNp linux-2.6.29.6/net/xfrm/xfrm_proc.c linux-2.6.29.6/net/xfrm/xfrm_proc.c 43723diff -urNp linux-2.6.30.4/net/xfrm/xfrm_proc.c linux-2.6.30.4/net/xfrm/xfrm_proc.c
44708--- linux-2.6.29.6/net/xfrm/xfrm_proc.c 2009-07-02 19:41:20.000000000 -0400 43724--- linux-2.6.30.4/net/xfrm/xfrm_proc.c 2009-07-24 17:47:51.000000000 -0400
44709+++ linux-2.6.29.6/net/xfrm/xfrm_proc.c 2009-07-23 18:40:28.814555102 -0400 43725+++ linux-2.6.30.4/net/xfrm/xfrm_proc.c 2009-07-30 09:48:10.161962049 -0400
44710@@ -60,7 +60,7 @@ static int xfrm_statistics_seq_open(stru 43726@@ -60,7 +60,7 @@ static int xfrm_statistics_seq_open(stru
44711 return single_open_net(inode, file, xfrm_statistics_seq_show); 43727 return single_open_net(inode, file, xfrm_statistics_seq_show);
44712 } 43728 }
@@ -44716,9 +43732,9 @@ diff -urNp linux-2.6.29.6/net/xfrm/xfrm_proc.c linux-2.6.29.6/net/xfrm/xfrm_proc
44716 .owner = THIS_MODULE, 43732 .owner = THIS_MODULE,
44717 .open = xfrm_statistics_seq_open, 43733 .open = xfrm_statistics_seq_open,
44718 .read = seq_read, 43734 .read = seq_read,
44719diff -urNp linux-2.6.29.6/samples/markers/marker-example.c linux-2.6.29.6/samples/markers/marker-example.c 43735diff -urNp linux-2.6.30.4/samples/markers/marker-example.c linux-2.6.30.4/samples/markers/marker-example.c
44720--- linux-2.6.29.6/samples/markers/marker-example.c 2009-07-02 19:41:20.000000000 -0400 43736--- linux-2.6.30.4/samples/markers/marker-example.c 2009-07-24 17:47:51.000000000 -0400
44721+++ linux-2.6.29.6/samples/markers/marker-example.c 2009-07-23 18:40:28.823705055 -0400 43737+++ linux-2.6.30.4/samples/markers/marker-example.c 2009-07-30 09:48:10.161962049 -0400
44722@@ -26,7 +26,7 @@ static int my_open(struct inode *inode, 43738@@ -26,7 +26,7 @@ static int my_open(struct inode *inode,
44723 return -EPERM; 43739 return -EPERM;
44724 } 43740 }
@@ -44728,9 +43744,9 @@ diff -urNp linux-2.6.29.6/samples/markers/marker-example.c linux-2.6.29.6/sample
44728 .open = my_open, 43744 .open = my_open,
44729 }; 43745 };
44730 43746
44731diff -urNp linux-2.6.29.6/samples/tracepoints/tracepoint-sample.c linux-2.6.29.6/samples/tracepoints/tracepoint-sample.c 43747diff -urNp linux-2.6.30.4/samples/tracepoints/tracepoint-sample.c linux-2.6.30.4/samples/tracepoints/tracepoint-sample.c
44732--- linux-2.6.29.6/samples/tracepoints/tracepoint-sample.c 2009-07-02 19:41:20.000000000 -0400 43748--- linux-2.6.30.4/samples/tracepoints/tracepoint-sample.c 2009-07-24 17:47:51.000000000 -0400
44733+++ linux-2.6.29.6/samples/tracepoints/tracepoint-sample.c 2009-07-23 18:40:28.824321350 -0400 43749+++ linux-2.6.30.4/samples/tracepoints/tracepoint-sample.c 2009-07-30 09:48:10.161962049 -0400
44734@@ -28,7 +28,7 @@ static int my_open(struct inode *inode, 43750@@ -28,7 +28,7 @@ static int my_open(struct inode *inode,
44735 return -EPERM; 43751 return -EPERM;
44736 } 43752 }
@@ -44740,10 +43756,10 @@ diff -urNp linux-2.6.29.6/samples/tracepoints/tracepoint-sample.c linux-2.6.29.6
44740 .open = my_open, 43756 .open = my_open,
44741 }; 43757 };
44742 43758
44743diff -urNp linux-2.6.29.6/scripts/mod/modpost.c linux-2.6.29.6/scripts/mod/modpost.c 43759diff -urNp linux-2.6.30.4/scripts/mod/modpost.c linux-2.6.30.4/scripts/mod/modpost.c
44744--- linux-2.6.29.6/scripts/mod/modpost.c 2009-07-02 19:41:20.000000000 -0400 43760--- linux-2.6.30.4/scripts/mod/modpost.c 2009-07-24 17:47:51.000000000 -0400
44745+++ linux-2.6.29.6/scripts/mod/modpost.c 2009-07-23 17:34:32.242831111 -0400 43761+++ linux-2.6.30.4/scripts/mod/modpost.c 2009-07-30 09:48:10.162851614 -0400
44746@@ -830,6 +830,7 @@ enum mismatch { 43762@@ -831,6 +831,7 @@ enum mismatch {
44747 INIT_TO_EXIT, 43763 INIT_TO_EXIT,
44748 EXIT_TO_INIT, 43764 EXIT_TO_INIT,
44749 EXPORT_TO_INIT_EXIT, 43765 EXPORT_TO_INIT_EXIT,
@@ -44751,7 +43767,7 @@ diff -urNp linux-2.6.29.6/scripts/mod/modpost.c linux-2.6.29.6/scripts/mod/modpo
44751 }; 43767 };
44752 43768
44753 struct sectioncheck { 43769 struct sectioncheck {
44754@@ -891,6 +892,12 @@ const struct sectioncheck sectioncheck[] 43770@@ -892,6 +893,12 @@ const struct sectioncheck sectioncheck[]
44755 .fromsec = { "__ksymtab*", NULL }, 43771 .fromsec = { "__ksymtab*", NULL },
44756 .tosec = { INIT_SECTIONS, EXIT_SECTIONS, NULL }, 43772 .tosec = { INIT_SECTIONS, EXIT_SECTIONS, NULL },
44757 .mismatch = EXPORT_TO_INIT_EXIT 43773 .mismatch = EXPORT_TO_INIT_EXIT
@@ -44764,7 +43780,7 @@ diff -urNp linux-2.6.29.6/scripts/mod/modpost.c linux-2.6.29.6/scripts/mod/modpo
44764 } 43780 }
44765 }; 43781 };
44766 43782
44767@@ -1249,6 +1256,14 @@ static void report_sec_mismatch(const ch 43783@@ -1240,6 +1247,14 @@ static void report_sec_mismatch(const ch
44768 "Fix this by removing the %sannotation of %s " 43784 "Fix this by removing the %sannotation of %s "
44769 "or drop the export.\n", 43785 "or drop the export.\n",
44770 tosym, sec2annotation(tosec), sec2annotation(tosec), tosym); 43786 tosym, sec2annotation(tosec), sec2annotation(tosec), tosym);
@@ -44779,9 +43795,9 @@ diff -urNp linux-2.6.29.6/scripts/mod/modpost.c linux-2.6.29.6/scripts/mod/modpo
44779 case NO_MISMATCH: 43795 case NO_MISMATCH:
44780 /* To get warnings on missing members */ 43796 /* To get warnings on missing members */
44781 break; 43797 break;
44782diff -urNp linux-2.6.29.6/scripts/pnmtologo.c linux-2.6.29.6/scripts/pnmtologo.c 43798diff -urNp linux-2.6.30.4/scripts/pnmtologo.c linux-2.6.30.4/scripts/pnmtologo.c
44783--- linux-2.6.29.6/scripts/pnmtologo.c 2009-07-02 19:41:20.000000000 -0400 43799--- linux-2.6.30.4/scripts/pnmtologo.c 2009-07-24 17:47:51.000000000 -0400
44784+++ linux-2.6.29.6/scripts/pnmtologo.c 2009-07-23 17:34:32.243888317 -0400 43800+++ linux-2.6.30.4/scripts/pnmtologo.c 2009-07-30 09:48:10.162851614 -0400
44785@@ -237,14 +237,14 @@ static void write_header(void) 43801@@ -237,14 +237,14 @@ static void write_header(void)
44786 fprintf(out, " * Linux logo %s\n", logoname); 43802 fprintf(out, " * Linux logo %s\n", logoname);
44787 fputs(" */\n\n", out); 43803 fputs(" */\n\n", out);
@@ -44808,9 +43824,9 @@ diff -urNp linux-2.6.29.6/scripts/pnmtologo.c linux-2.6.29.6/scripts/pnmtologo.c
44808 logoname); 43824 logoname);
44809 write_hex_cnt = 0; 43825 write_hex_cnt = 0;
44810 for (i = 0; i < logo_clutsize; i++) { 43826 for (i = 0; i < logo_clutsize; i++) {
44811diff -urNp linux-2.6.29.6/security/commoncap.c linux-2.6.29.6/security/commoncap.c 43827diff -urNp linux-2.6.30.4/security/commoncap.c linux-2.6.30.4/security/commoncap.c
44812--- linux-2.6.29.6/security/commoncap.c 2009-07-02 19:41:20.000000000 -0400 43828--- linux-2.6.30.4/security/commoncap.c 2009-07-24 17:47:51.000000000 -0400
44813+++ linux-2.6.29.6/security/commoncap.c 2009-07-23 17:34:32.243888317 -0400 43829+++ linux-2.6.30.4/security/commoncap.c 2009-07-30 11:10:50.017289381 -0400
44814@@ -28,9 +28,11 @@ 43830@@ -28,9 +28,11 @@
44815 #include <linux/prctl.h> 43831 #include <linux/prctl.h>
44816 #include <linux/securebits.h> 43832 #include <linux/securebits.h>
@@ -44824,10 +43840,76 @@ diff -urNp linux-2.6.29.6/security/commoncap.c linux-2.6.29.6/security/commoncap
44824 return 0; 43840 return 0;
44825 } 43841 }
44826 43842
44827diff -urNp linux-2.6.29.6/security/Kconfig linux-2.6.29.6/security/Kconfig 43843diff -urNp linux-2.6.30.4/security/integrity/ima/ima_fs.c linux-2.6.30.4/security/integrity/ima/ima_fs.c
44828--- linux-2.6.29.6/security/Kconfig 2009-07-02 19:41:20.000000000 -0400 43844--- linux-2.6.30.4/security/integrity/ima/ima_fs.c 2009-07-24 17:47:51.000000000 -0400
44829+++ linux-2.6.29.6/security/Kconfig 2009-07-23 17:35:37.439768706 -0400 43845+++ linux-2.6.30.4/security/integrity/ima/ima_fs.c 2009-07-30 12:06:52.190847656 -0400
44830@@ -4,6 +4,465 @@ 43846@@ -42,7 +42,7 @@ static ssize_t ima_show_htable_violation
43847 return ima_show_htable_value(buf, count, ppos, &ima_htable.violations);
43848 }
43849
43850-static struct file_operations ima_htable_violations_ops = {
43851+static const struct file_operations ima_htable_violations_ops = {
43852 .read = ima_show_htable_violations
43853 };
43854
43855@@ -54,7 +54,7 @@ static ssize_t ima_show_measurements_cou
43856
43857 }
43858
43859-static struct file_operations ima_measurements_count_ops = {
43860+static const struct file_operations ima_measurements_count_ops = {
43861 .read = ima_show_measurements_count
43862 };
43863
43864@@ -145,7 +145,7 @@ static int ima_measurements_show(struct
43865 return 0;
43866 }
43867
43868-static struct seq_operations ima_measurments_seqops = {
43869+static const struct seq_operations ima_measurments_seqops = {
43870 .start = ima_measurements_start,
43871 .next = ima_measurements_next,
43872 .stop = ima_measurements_stop,
43873@@ -157,7 +157,7 @@ static int ima_measurements_open(struct
43874 return seq_open(file, &ima_measurments_seqops);
43875 }
43876
43877-static struct file_operations ima_measurements_ops = {
43878+static const struct file_operations ima_measurements_ops = {
43879 .open = ima_measurements_open,
43880 .read = seq_read,
43881 .llseek = seq_lseek,
43882@@ -220,7 +220,7 @@ static int ima_ascii_measurements_show(s
43883 return 0;
43884 }
43885
43886-static struct seq_operations ima_ascii_measurements_seqops = {
43887+static const struct seq_operations ima_ascii_measurements_seqops = {
43888 .start = ima_measurements_start,
43889 .next = ima_measurements_next,
43890 .stop = ima_measurements_stop,
43891@@ -232,7 +232,7 @@ static int ima_ascii_measurements_open(s
43892 return seq_open(file, &ima_ascii_measurements_seqops);
43893 }
43894
43895-static struct file_operations ima_ascii_measurements_ops = {
43896+static const struct file_operations ima_ascii_measurements_ops = {
43897 .open = ima_ascii_measurements_open,
43898 .read = seq_read,
43899 .llseek = seq_lseek,
43900@@ -309,7 +309,7 @@ static int ima_release_policy(struct ino
43901 return 0;
43902 }
43903
43904-static struct file_operations ima_measure_policy_ops = {
43905+static const struct file_operations ima_measure_policy_ops = {
43906 .open = ima_open_policy,
43907 .write = ima_write_policy,
43908 .release = ima_release_policy
43909diff -urNp linux-2.6.30.4/security/Kconfig linux-2.6.30.4/security/Kconfig
43910--- linux-2.6.30.4/security/Kconfig 2009-07-24 17:47:51.000000000 -0400
43911+++ linux-2.6.30.4/security/Kconfig 2009-07-30 11:10:50.021298651 -0400
43912@@ -4,6 +4,467 @@
44831 43913
44832 menu "Security options" 43914 menu "Security options"
44833 43915
@@ -44953,7 +44035,7 @@ diff -urNp linux-2.6.29.6/security/Kconfig linux-2.6.29.6/security/Kconfig
44953+ 44035+
44954+config PAX_PAGEEXEC 44036+config PAX_PAGEEXEC
44955+ bool "Paging based non-executable pages" 44037+ bool "Paging based non-executable pages"
44956+ depends on !COMPAT_VDSO && PAX_NOEXEC && (!X86_32 || M586 || M586TSC || M586MMX || M686 || MPENTIUMII || MPENTIUMIII || MPENTIUMM || MCORE2 || MPENTIUM4 || MPSC || MK7 || MK8 || MWINCHIPC6 || MWINCHIP2 || MWINCHIP3D || MVIAC3_2 || MVIAC7) 44038+ depends on PAX_NOEXEC && (!X86_32 || M586 || M586TSC || M586MMX || M686 || MPENTIUMII || MPENTIUMIII || MPENTIUMM || MCORE2 || MPENTIUM4 || MPSC || MK7 || MK8 || MWINCHIPC6 || MWINCHIP2 || MWINCHIP3D || MVIAC3_2 || MVIAC7)
44957+ help 44039+ help
44958+ This implementation is based on the paging feature of the CPU. 44040+ This implementation is based on the paging feature of the CPU.
44959+ On i386 without hardware non-executable bit support there is a 44041+ On i386 without hardware non-executable bit support there is a
@@ -44972,7 +44054,7 @@ diff -urNp linux-2.6.29.6/security/Kconfig linux-2.6.29.6/security/Kconfig
44972+ 44054+
44973+config PAX_SEGMEXEC 44055+config PAX_SEGMEXEC
44974+ bool "Segmentation based non-executable pages" 44056+ bool "Segmentation based non-executable pages"
44975+ depends on !COMPAT_VDSO && PAX_NOEXEC && X86_32 44057+ depends on PAX_NOEXEC && X86_32
44976+ help 44058+ help
44977+ This implementation is based on the segmentation feature of the 44059+ This implementation is based on the segmentation feature of the
44978+ CPU and has a very small performance impact, however applications 44060+ CPU and has a very small performance impact, however applications
@@ -45118,7 +44200,7 @@ diff -urNp linux-2.6.29.6/security/Kconfig linux-2.6.29.6/security/Kconfig
45118+ 44200+
45119+config PAX_KERNEXEC 44201+config PAX_KERNEXEC
45120+ bool "Enforce non-executable kernel pages" 44202+ bool "Enforce non-executable kernel pages"
45121+ depends on PAX_NOEXEC && X86 && !EFI && !COMPAT_VDSO && (!X86_32 || X86_WP_WORKS_OK) && !PARAVIRT 44203+ depends on PAX_NOEXEC && X86 && (!X86_32 || X86_WP_WORKS_OK)
45122+ help 44204+ help
45123+ This is the kernel land equivalent of PAGEEXEC and MPROTECT, 44205+ This is the kernel land equivalent of PAGEEXEC and MPROTECT,
45124+ that is, enabling this option will make it harder to inject 44206+ that is, enabling this option will make it harder to inject
@@ -45234,7 +44316,7 @@ diff -urNp linux-2.6.29.6/security/Kconfig linux-2.6.29.6/security/Kconfig
45234+ 44316+
45235+config PAX_MEMORY_UDEREF 44317+config PAX_MEMORY_UDEREF
45236+ bool "Prevent invalid userland pointer dereference" 44318+ bool "Prevent invalid userland pointer dereference"
45237+ depends on X86_32 && !COMPAT_VDSO && !UML_X86 44319+ depends on X86_32 && !UML_X86
45238+ help 44320+ help
45239+ By saying Y here the kernel will be prevented from dereferencing 44321+ By saying Y here the kernel will be prevented from dereferencing
45240+ userland pointers in contexts where the kernel expects only kernel 44322+ userland pointers in contexts where the kernel expects only kernel
@@ -45286,6 +44368,8 @@ diff -urNp linux-2.6.29.6/security/Kconfig linux-2.6.29.6/security/Kconfig
45286+ Note that the current implementation provides the strictest checks 44368+ Note that the current implementation provides the strictest checks
45287+ for the SLUB allocator. 44369+ for the SLUB allocator.
45288+ 44370+
44371+ Since this has a negligible performance impact, you should enable
44372+ this feature.
45289+endmenu 44373+endmenu
45290+ 44374+
45291+endmenu 44375+endmenu
@@ -45293,10 +44377,10 @@ diff -urNp linux-2.6.29.6/security/Kconfig linux-2.6.29.6/security/Kconfig
45293 config KEYS 44377 config KEYS
45294 bool "Enable access key retention support" 44378 bool "Enable access key retention support"
45295 help 44379 help
45296diff -urNp linux-2.6.29.6/security/smack/smackfs.c linux-2.6.29.6/security/smack/smackfs.c 44380diff -urNp linux-2.6.30.4/security/smack/smackfs.c linux-2.6.30.4/security/smack/smackfs.c
45297--- linux-2.6.29.6/security/smack/smackfs.c 2009-07-02 19:41:20.000000000 -0400 44381--- linux-2.6.30.4/security/smack/smackfs.c 2009-07-24 17:47:51.000000000 -0400
45298+++ linux-2.6.29.6/security/smack/smackfs.c 2009-07-23 18:40:28.832499629 -0400 44382+++ linux-2.6.30.4/security/smack/smackfs.c 2009-07-30 09:48:10.163665437 -0400
45299@@ -179,7 +179,7 @@ static void load_seq_stop(struct seq_fil 44383@@ -186,7 +186,7 @@ static void load_seq_stop(struct seq_fil
45300 /* No-op */ 44384 /* No-op */
45301 } 44385 }
45302 44386
@@ -45305,7 +44389,7 @@ diff -urNp linux-2.6.29.6/security/smack/smackfs.c linux-2.6.29.6/security/smack
45305 .start = load_seq_start, 44389 .start = load_seq_start,
45306 .next = load_seq_next, 44390 .next = load_seq_next,
45307 .show = load_seq_show, 44391 .show = load_seq_show,
45308@@ -491,7 +491,7 @@ static void cipso_seq_stop(struct seq_fi 44392@@ -502,7 +502,7 @@ static void cipso_seq_stop(struct seq_fi
45309 /* No-op */ 44393 /* No-op */
45310 } 44394 }
45311 44395
@@ -45314,7 +44398,7 @@ diff -urNp linux-2.6.29.6/security/smack/smackfs.c linux-2.6.29.6/security/smack
45314 .start = cipso_seq_start, 44398 .start = cipso_seq_start,
45315 .stop = cipso_seq_stop, 44399 .stop = cipso_seq_stop,
45316 .next = cipso_seq_next, 44400 .next = cipso_seq_next,
45317@@ -675,7 +675,7 @@ static void netlbladdr_seq_stop(struct s 44401@@ -696,7 +696,7 @@ static void netlbladdr_seq_stop(struct s
45318 /* No-op */ 44402 /* No-op */
45319 } 44403 }
45320 44404
@@ -45323,10 +44407,10 @@ diff -urNp linux-2.6.29.6/security/smack/smackfs.c linux-2.6.29.6/security/smack
45323 .start = netlbladdr_seq_start, 44407 .start = netlbladdr_seq_start,
45324 .stop = netlbladdr_seq_stop, 44408 .stop = netlbladdr_seq_stop,
45325 .next = netlbladdr_seq_next, 44409 .next = netlbladdr_seq_next,
45326diff -urNp linux-2.6.29.6/sound/core/oss/pcm_oss.c linux-2.6.29.6/sound/core/oss/pcm_oss.c 44410diff -urNp linux-2.6.30.4/sound/core/oss/pcm_oss.c linux-2.6.30.4/sound/core/oss/pcm_oss.c
45327--- linux-2.6.29.6/sound/core/oss/pcm_oss.c 2009-07-02 19:41:20.000000000 -0400 44411--- linux-2.6.30.4/sound/core/oss/pcm_oss.c 2009-07-24 17:47:51.000000000 -0400
45328+++ linux-2.6.29.6/sound/core/oss/pcm_oss.c 2009-07-23 17:34:32.245757940 -0400 44412+++ linux-2.6.30.4/sound/core/oss/pcm_oss.c 2009-07-30 09:48:10.164791187 -0400
45329@@ -2929,8 +2929,8 @@ static void snd_pcm_oss_proc_done(struct 44413@@ -2944,8 +2944,8 @@ static void snd_pcm_oss_proc_done(struct
45330 } 44414 }
45331 } 44415 }
45332 #else /* !CONFIG_SND_VERBOSE_PROCFS */ 44416 #else /* !CONFIG_SND_VERBOSE_PROCFS */
@@ -45337,9 +44421,9 @@ diff -urNp linux-2.6.29.6/sound/core/oss/pcm_oss.c linux-2.6.29.6/sound/core/oss
45337 #endif /* CONFIG_SND_VERBOSE_PROCFS */ 44421 #endif /* CONFIG_SND_VERBOSE_PROCFS */
45338 44422
45339 /* 44423 /*
45340diff -urNp linux-2.6.29.6/sound/core/seq/seq_lock.h linux-2.6.29.6/sound/core/seq/seq_lock.h 44424diff -urNp linux-2.6.30.4/sound/core/seq/seq_lock.h linux-2.6.30.4/sound/core/seq/seq_lock.h
45341--- linux-2.6.29.6/sound/core/seq/seq_lock.h 2009-07-02 19:41:20.000000000 -0400 44425--- linux-2.6.30.4/sound/core/seq/seq_lock.h 2009-07-24 17:47:51.000000000 -0400
45342+++ linux-2.6.29.6/sound/core/seq/seq_lock.h 2009-07-23 17:34:32.245757940 -0400 44426+++ linux-2.6.30.4/sound/core/seq/seq_lock.h 2009-07-30 09:48:10.164791187 -0400
45343@@ -23,10 +23,10 @@ void snd_use_lock_sync_helper(snd_use_lo 44427@@ -23,10 +23,10 @@ void snd_use_lock_sync_helper(snd_use_lo
45344 #else /* SMP || CONFIG_SND_DEBUG */ 44428 #else /* SMP || CONFIG_SND_DEBUG */
45345 44429
@@ -45355,10 +44439,10 @@ diff -urNp linux-2.6.29.6/sound/core/seq/seq_lock.h linux-2.6.29.6/sound/core/se
45355 44439
45356 #endif /* SMP || CONFIG_SND_DEBUG */ 44440 #endif /* SMP || CONFIG_SND_DEBUG */
45357 44441
45358diff -urNp linux-2.6.29.6/sound/pci/ac97/ac97_patch.c linux-2.6.29.6/sound/pci/ac97/ac97_patch.c 44442diff -urNp linux-2.6.30.4/sound/pci/ac97/ac97_patch.c linux-2.6.30.4/sound/pci/ac97/ac97_patch.c
45359--- linux-2.6.29.6/sound/pci/ac97/ac97_patch.c 2009-07-02 19:41:20.000000000 -0400 44443--- linux-2.6.30.4/sound/pci/ac97/ac97_patch.c 2009-07-24 17:47:51.000000000 -0400
45360+++ linux-2.6.29.6/sound/pci/ac97/ac97_patch.c 2009-07-23 17:34:32.246936980 -0400 44444+++ linux-2.6.30.4/sound/pci/ac97/ac97_patch.c 2009-07-30 09:48:10.165681860 -0400
45361@@ -1498,7 +1498,7 @@ static const struct snd_ac97_res_table a 44445@@ -1501,7 +1501,7 @@ static const struct snd_ac97_res_table a
45362 { AC97_VIDEO, 0x9f1f }, 44446 { AC97_VIDEO, 0x9f1f },
45363 { AC97_AUX, 0x9f1f }, 44447 { AC97_AUX, 0x9f1f },
45364 { AC97_PCM, 0x9f1f }, 44448 { AC97_PCM, 0x9f1f },
@@ -45367,7 +44451,7 @@ diff -urNp linux-2.6.29.6/sound/pci/ac97/ac97_patch.c linux-2.6.29.6/sound/pci/a
45367 }; 44451 };
45368 44452
45369 static int patch_ad1819(struct snd_ac97 * ac97) 44453 static int patch_ad1819(struct snd_ac97 * ac97)
45370@@ -3873,7 +3873,7 @@ static struct snd_ac97_res_table lm4550_ 44454@@ -3876,7 +3876,7 @@ static struct snd_ac97_res_table lm4550_
45371 { AC97_AUX, 0x1f1f }, 44455 { AC97_AUX, 0x1f1f },
45372 { AC97_PCM, 0x1f1f }, 44456 { AC97_PCM, 0x1f1f },
45373 { AC97_REC_GAIN, 0x0f0f }, 44457 { AC97_REC_GAIN, 0x0f0f },
@@ -45376,9 +44460,9 @@ diff -urNp linux-2.6.29.6/sound/pci/ac97/ac97_patch.c linux-2.6.29.6/sound/pci/a
45376 }; 44460 };
45377 44461
45378 static int patch_lm4550(struct snd_ac97 *ac97) 44462 static int patch_lm4550(struct snd_ac97 *ac97)
45379diff -urNp linux-2.6.29.6/sound/pci/ens1370.c linux-2.6.29.6/sound/pci/ens1370.c 44463diff -urNp linux-2.6.30.4/sound/pci/ens1370.c linux-2.6.30.4/sound/pci/ens1370.c
45380--- linux-2.6.29.6/sound/pci/ens1370.c 2009-07-02 19:41:20.000000000 -0400 44464--- linux-2.6.30.4/sound/pci/ens1370.c 2009-07-24 17:47:51.000000000 -0400
45381+++ linux-2.6.29.6/sound/pci/ens1370.c 2009-07-23 17:34:32.247850956 -0400 44465+++ linux-2.6.30.4/sound/pci/ens1370.c 2009-07-30 09:48:10.165681860 -0400
45382@@ -452,7 +452,7 @@ static struct pci_device_id snd_audiopci 44466@@ -452,7 +452,7 @@ static struct pci_device_id snd_audiopci
45383 { 0x1274, 0x5880, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0, }, /* ES1373 - CT5880 */ 44467 { 0x1274, 0x5880, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0, }, /* ES1373 - CT5880 */
45384 { 0x1102, 0x8938, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0, }, /* Ectiva EV1938 */ 44468 { 0x1102, 0x8938, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0, }, /* Ectiva EV1938 */
@@ -45388,10 +44472,10 @@ diff -urNp linux-2.6.29.6/sound/pci/ens1370.c linux-2.6.29.6/sound/pci/ens1370.c
45388 }; 44472 };
45389 44473
45390 MODULE_DEVICE_TABLE(pci, snd_audiopci_ids); 44474 MODULE_DEVICE_TABLE(pci, snd_audiopci_ids);
45391diff -urNp linux-2.6.29.6/sound/pci/intel8x0.c linux-2.6.29.6/sound/pci/intel8x0.c 44475diff -urNp linux-2.6.30.4/sound/pci/intel8x0.c linux-2.6.30.4/sound/pci/intel8x0.c
45392--- linux-2.6.29.6/sound/pci/intel8x0.c 2009-07-02 19:41:20.000000000 -0400 44476--- linux-2.6.30.4/sound/pci/intel8x0.c 2009-07-24 17:47:51.000000000 -0400
45393+++ linux-2.6.29.6/sound/pci/intel8x0.c 2009-07-23 17:34:32.247850956 -0400 44477+++ linux-2.6.30.4/sound/pci/intel8x0.c 2009-07-30 09:48:10.166748224 -0400
45394@@ -443,7 +443,7 @@ static struct pci_device_id snd_intel8x0 44478@@ -444,7 +444,7 @@ static struct pci_device_id snd_intel8x0
45395 { 0x1022, 0x746d, PCI_ANY_ID, PCI_ANY_ID, 0, 0, DEVICE_INTEL }, /* AMD8111 */ 44479 { 0x1022, 0x746d, PCI_ANY_ID, PCI_ANY_ID, 0, 0, DEVICE_INTEL }, /* AMD8111 */
45396 { 0x1022, 0x7445, PCI_ANY_ID, PCI_ANY_ID, 0, 0, DEVICE_INTEL }, /* AMD768 */ 44480 { 0x1022, 0x7445, PCI_ANY_ID, PCI_ANY_ID, 0, 0, DEVICE_INTEL }, /* AMD768 */
45397 { 0x10b9, 0x5455, PCI_ANY_ID, PCI_ANY_ID, 0, 0, DEVICE_ALI }, /* Ali5455 */ 44481 { 0x10b9, 0x5455, PCI_ANY_ID, PCI_ANY_ID, 0, 0, DEVICE_ALI }, /* Ali5455 */
@@ -45400,7 +44484,7 @@ diff -urNp linux-2.6.29.6/sound/pci/intel8x0.c linux-2.6.29.6/sound/pci/intel8x0
45400 }; 44484 };
45401 44485
45402 MODULE_DEVICE_TABLE(pci, snd_intel8x0_ids); 44486 MODULE_DEVICE_TABLE(pci, snd_intel8x0_ids);
45403@@ -2088,7 +2088,7 @@ static struct ac97_quirk ac97_quirks[] _ 44487@@ -2105,7 +2105,7 @@ static struct ac97_quirk ac97_quirks[] _
45404 .type = AC97_TUNE_HP_ONLY 44488 .type = AC97_TUNE_HP_ONLY
45405 }, 44489 },
45406 #endif 44490 #endif
@@ -45409,9 +44493,9 @@ diff -urNp linux-2.6.29.6/sound/pci/intel8x0.c linux-2.6.29.6/sound/pci/intel8x0
45409 }; 44493 };
45410 44494
45411 static int __devinit snd_intel8x0_mixer(struct intel8x0 *chip, int ac97_clock, 44495 static int __devinit snd_intel8x0_mixer(struct intel8x0 *chip, int ac97_clock,
45412diff -urNp linux-2.6.29.6/sound/pci/intel8x0m.c linux-2.6.29.6/sound/pci/intel8x0m.c 44496diff -urNp linux-2.6.30.4/sound/pci/intel8x0m.c linux-2.6.30.4/sound/pci/intel8x0m.c
45413--- linux-2.6.29.6/sound/pci/intel8x0m.c 2009-07-02 19:41:20.000000000 -0400 44497--- linux-2.6.30.4/sound/pci/intel8x0m.c 2009-07-24 17:47:51.000000000 -0400
45414+++ linux-2.6.29.6/sound/pci/intel8x0m.c 2009-07-23 17:34:32.249009543 -0400 44498+++ linux-2.6.30.4/sound/pci/intel8x0m.c 2009-07-30 09:48:10.167822693 -0400
45415@@ -239,7 +239,7 @@ static struct pci_device_id snd_intel8x0 44499@@ -239,7 +239,7 @@ static struct pci_device_id snd_intel8x0
45416 { 0x1022, 0x746d, PCI_ANY_ID, PCI_ANY_ID, 0, 0, DEVICE_INTEL }, /* AMD8111 */ 44500 { 0x1022, 0x746d, PCI_ANY_ID, PCI_ANY_ID, 0, 0, DEVICE_INTEL }, /* AMD8111 */
45417 { 0x10b9, 0x5455, PCI_ANY_ID, PCI_ANY_ID, 0, 0, DEVICE_ALI }, /* Ali5455 */ 44501 { 0x10b9, 0x5455, PCI_ANY_ID, PCI_ANY_ID, 0, 0, DEVICE_ALI }, /* Ali5455 */
@@ -45421,7 +44505,7 @@ diff -urNp linux-2.6.29.6/sound/pci/intel8x0m.c linux-2.6.29.6/sound/pci/intel8x
45421 }; 44505 };
45422 44506
45423 MODULE_DEVICE_TABLE(pci, snd_intel8x0m_ids); 44507 MODULE_DEVICE_TABLE(pci, snd_intel8x0m_ids);
45424@@ -1258,7 +1258,7 @@ static struct shortname_table { 44508@@ -1264,7 +1264,7 @@ static struct shortname_table {
45425 { 0x5455, "ALi M5455" }, 44509 { 0x5455, "ALi M5455" },
45426 { 0x746d, "AMD AMD8111" }, 44510 { 0x746d, "AMD AMD8111" },
45427 #endif 44511 #endif
@@ -45430,9 +44514,9 @@ diff -urNp linux-2.6.29.6/sound/pci/intel8x0m.c linux-2.6.29.6/sound/pci/intel8x
45430 }; 44514 };
45431 44515
45432 static int __devinit snd_intel8x0m_probe(struct pci_dev *pci, 44516 static int __devinit snd_intel8x0m_probe(struct pci_dev *pci,
45433diff -urNp linux-2.6.29.6/sound/usb/usx2y/us122l.c linux-2.6.29.6/sound/usb/usx2y/us122l.c 44517diff -urNp linux-2.6.30.4/sound/usb/usx2y/us122l.c linux-2.6.30.4/sound/usb/usx2y/us122l.c
45434--- linux-2.6.29.6/sound/usb/usx2y/us122l.c 2009-07-02 19:41:20.000000000 -0400 44518--- linux-2.6.30.4/sound/usb/usx2y/us122l.c 2009-07-24 17:47:51.000000000 -0400
45435+++ linux-2.6.29.6/sound/usb/usx2y/us122l.c 2009-07-23 18:40:28.832499629 -0400 44519+++ linux-2.6.30.4/sound/usb/usx2y/us122l.c 2009-07-30 09:48:10.167822693 -0400
45436@@ -154,7 +154,7 @@ static void usb_stream_hwdep_vm_close(st 44520@@ -154,7 +154,7 @@ static void usb_stream_hwdep_vm_close(st
45437 snd_printdd(KERN_DEBUG "%i\n", atomic_read(&us122l->mmap_count)); 44521 snd_printdd(KERN_DEBUG "%i\n", atomic_read(&us122l->mmap_count));
45438 } 44522 }
@@ -45442,10 +44526,10 @@ diff -urNp linux-2.6.29.6/sound/usb/usx2y/us122l.c linux-2.6.29.6/sound/usb/usx2
45442 .open = usb_stream_hwdep_vm_open, 44526 .open = usb_stream_hwdep_vm_open,
45443 .fault = usb_stream_hwdep_vm_fault, 44527 .fault = usb_stream_hwdep_vm_fault,
45444 .close = usb_stream_hwdep_vm_close, 44528 .close = usb_stream_hwdep_vm_close,
45445diff -urNp linux-2.6.29.6/sound/usb/usx2y/usX2Yhwdep.c linux-2.6.29.6/sound/usb/usx2y/usX2Yhwdep.c 44529diff -urNp linux-2.6.30.4/sound/usb/usx2y/usX2Yhwdep.c linux-2.6.30.4/sound/usb/usx2y/usX2Yhwdep.c
45446--- linux-2.6.29.6/sound/usb/usx2y/usX2Yhwdep.c 2009-07-02 19:41:20.000000000 -0400 44530--- linux-2.6.30.4/sound/usb/usx2y/usX2Yhwdep.c 2009-07-24 17:47:51.000000000 -0400
45447+++ linux-2.6.29.6/sound/usb/usx2y/usX2Yhwdep.c 2009-07-23 18:40:28.833508615 -0400 44531+++ linux-2.6.30.4/sound/usb/usx2y/usX2Yhwdep.c 2009-07-30 09:48:10.167822693 -0400
45448@@ -56,7 +56,7 @@ static int snd_us428ctls_vm_fault(struct 44532@@ -53,7 +53,7 @@ static int snd_us428ctls_vm_fault(struct
45449 return 0; 44533 return 0;
45450 } 44534 }
45451 44535
@@ -45454,9 +44538,9 @@ diff -urNp linux-2.6.29.6/sound/usb/usx2y/usX2Yhwdep.c linux-2.6.29.6/sound/usb/
45454 .fault = snd_us428ctls_vm_fault, 44538 .fault = snd_us428ctls_vm_fault,
45455 }; 44539 };
45456 44540
45457diff -urNp linux-2.6.29.6/sound/usb/usx2y/usx2yhwdeppcm.c linux-2.6.29.6/sound/usb/usx2y/usx2yhwdeppcm.c 44541diff -urNp linux-2.6.30.4/sound/usb/usx2y/usx2yhwdeppcm.c linux-2.6.30.4/sound/usb/usx2y/usx2yhwdeppcm.c
45458--- linux-2.6.29.6/sound/usb/usx2y/usx2yhwdeppcm.c 2009-07-02 19:41:20.000000000 -0400 44542--- linux-2.6.30.4/sound/usb/usx2y/usx2yhwdeppcm.c 2009-07-24 17:47:51.000000000 -0400
45459+++ linux-2.6.29.6/sound/usb/usx2y/usx2yhwdeppcm.c 2009-07-23 18:40:28.833508615 -0400 44543+++ linux-2.6.30.4/sound/usb/usx2y/usx2yhwdeppcm.c 2009-07-30 09:48:10.168781015 -0400
45460@@ -697,7 +697,7 @@ static int snd_usX2Y_hwdep_pcm_vm_fault( 44544@@ -697,7 +697,7 @@ static int snd_usX2Y_hwdep_pcm_vm_fault(
45461 } 44545 }
45462 44546
@@ -45466,10 +44550,10 @@ diff -urNp linux-2.6.29.6/sound/usb/usx2y/usx2yhwdeppcm.c linux-2.6.29.6/sound/u
45466 .open = snd_usX2Y_hwdep_pcm_vm_open, 44550 .open = snd_usX2Y_hwdep_pcm_vm_open,
45467 .close = snd_usX2Y_hwdep_pcm_vm_close, 44551 .close = snd_usX2Y_hwdep_pcm_vm_close,
45468 .fault = snd_usX2Y_hwdep_pcm_vm_fault, 44552 .fault = snd_usX2Y_hwdep_pcm_vm_fault,
45469diff -urNp linux-2.6.29.6/virt/kvm/kvm_main.c linux-2.6.29.6/virt/kvm/kvm_main.c 44553diff -urNp linux-2.6.30.4/virt/kvm/kvm_main.c linux-2.6.30.4/virt/kvm/kvm_main.c
45470--- linux-2.6.29.6/virt/kvm/kvm_main.c 2009-07-02 19:41:20.000000000 -0400 44554--- linux-2.6.30.4/virt/kvm/kvm_main.c 2009-07-24 17:47:51.000000000 -0400
45471+++ linux-2.6.29.6/virt/kvm/kvm_main.c 2009-07-23 17:34:32.249724330 -0400 44555+++ linux-2.6.30.4/virt/kvm/kvm_main.c 2009-07-30 12:42:02.581987537 -0400
45472@@ -2059,6 +2059,9 @@ static struct miscdevice kvm_dev = { 44556@@ -2061,6 +2061,9 @@ static struct miscdevice kvm_dev = {
45473 KVM_MINOR, 44557 KVM_MINOR,
45474 "kvm", 44558 "kvm",
45475 &kvm_chardev_ops, 44559 &kvm_chardev_ops,
@@ -45479,7 +44563,16 @@ diff -urNp linux-2.6.29.6/virt/kvm/kvm_main.c linux-2.6.29.6/virt/kvm/kvm_main.c
45479 }; 44563 };
45480 44564
45481 static void hardware_enable(void *junk) 44565 static void hardware_enable(void *junk)
45482@@ -2290,7 +2293,7 @@ static void kvm_sched_out(struct preempt 44566@@ -2220,7 +2223,7 @@ static int vcpu_stat_get(void *_offset,
44567
44568 DEFINE_SIMPLE_ATTRIBUTE(vcpu_stat_fops, vcpu_stat_get, NULL, "%llu\n");
44569
44570-static struct file_operations *stat_fops[] = {
44571+static const struct file_operations *stat_fops[] = {
44572 [KVM_STAT_VCPU] = &vcpu_stat_fops,
44573 [KVM_STAT_VM] = &vm_stat_fops,
44574 };
44575@@ -2292,7 +2295,7 @@ static void kvm_sched_out(struct preempt
45483 kvm_arch_vcpu_put(vcpu); 44576 kvm_arch_vcpu_put(vcpu);
45484 } 44577 }
45485 44578
diff --git a/main/linux-grsec/kernelconfig b/main/linux-grsec/kernelconfig
index 425e5cedae..71ee53486b 100644
--- a/main/linux-grsec/kernelconfig
+++ b/main/linux-grsec/kernelconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.29.5 3# Linux kernel version: 2.6.30.4
4# Mon Jun 29 16:25:46 2009 4# Mon Aug 3 08:50:09 2009
5# 5#
6# CONFIG_64BIT is not set 6# CONFIG_64BIT is not set
7CONFIG_X86_32=y 7CONFIG_X86_32=y
@@ -34,6 +34,7 @@ CONFIG_ARCH_HAS_CPU_RELAX=y
34CONFIG_ARCH_HAS_DEFAULT_IDLE=y 34CONFIG_ARCH_HAS_DEFAULT_IDLE=y
35CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y 35CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y
36CONFIG_HAVE_SETUP_PER_CPU_AREA=y 36CONFIG_HAVE_SETUP_PER_CPU_AREA=y
37CONFIG_HAVE_DYNAMIC_PER_CPU_AREA=y
37# CONFIG_HAVE_CPUMASK_OF_CPU_MAP is not set 38# CONFIG_HAVE_CPUMASK_OF_CPU_MAP is not set
38CONFIG_ARCH_HIBERNATION_POSSIBLE=y 39CONFIG_ARCH_HIBERNATION_POSSIBLE=y
39CONFIG_ARCH_SUSPEND_POSSIBLE=y 40CONFIG_ARCH_SUSPEND_POSSIBLE=y
@@ -41,15 +42,16 @@ CONFIG_ARCH_SUSPEND_POSSIBLE=y
41CONFIG_ARCH_POPULATES_NODE_MAP=y 42CONFIG_ARCH_POPULATES_NODE_MAP=y
42# CONFIG_AUDIT_ARCH is not set 43# CONFIG_AUDIT_ARCH is not set
43CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING=y 44CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING=y
45CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
44CONFIG_GENERIC_HARDIRQS=y 46CONFIG_GENERIC_HARDIRQS=y
47CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
45CONFIG_GENERIC_IRQ_PROBE=y 48CONFIG_GENERIC_IRQ_PROBE=y
46CONFIG_GENERIC_PENDING_IRQ=y 49CONFIG_GENERIC_PENDING_IRQ=y
47CONFIG_X86_SMP=y
48CONFIG_USE_GENERIC_SMP_HELPERS=y 50CONFIG_USE_GENERIC_SMP_HELPERS=y
49CONFIG_X86_32_SMP=y 51CONFIG_X86_32_SMP=y
50CONFIG_X86_HT=y 52CONFIG_X86_HT=y
51CONFIG_X86_BIOS_REBOOT=y
52CONFIG_X86_TRAMPOLINE=y 53CONFIG_X86_TRAMPOLINE=y
54CONFIG_X86_32_LAZY_GS=y
53CONFIG_KTIME_SCALAR=y 55CONFIG_KTIME_SCALAR=y
54CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 56CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
55 57
@@ -61,6 +63,12 @@ CONFIG_LOCK_KERNEL=y
61CONFIG_INIT_ENV_ARG_LIMIT=32 63CONFIG_INIT_ENV_ARG_LIMIT=32
62CONFIG_LOCALVERSION="" 64CONFIG_LOCALVERSION=""
63# CONFIG_LOCALVERSION_AUTO is not set 65# CONFIG_LOCALVERSION_AUTO is not set
66CONFIG_HAVE_KERNEL_GZIP=y
67CONFIG_HAVE_KERNEL_BZIP2=y
68CONFIG_HAVE_KERNEL_LZMA=y
69CONFIG_KERNEL_GZIP=y
70# CONFIG_KERNEL_BZIP2 is not set
71# CONFIG_KERNEL_LZMA is not set
64CONFIG_SWAP=y 72CONFIG_SWAP=y
65CONFIG_SYSVIPC=y 73CONFIG_SYSVIPC=y
66CONFIG_SYSVIPC_SYSCTL=y 74CONFIG_SYSVIPC_SYSCTL=y
@@ -93,6 +101,9 @@ CONFIG_USER_SCHED=y
93# CONFIG_NAMESPACES is not set 101# CONFIG_NAMESPACES is not set
94CONFIG_BLK_DEV_INITRD=y 102CONFIG_BLK_DEV_INITRD=y
95CONFIG_INITRAMFS_SOURCE="" 103CONFIG_INITRAMFS_SOURCE=""
104CONFIG_RD_GZIP=y
105CONFIG_RD_BZIP2=y
106CONFIG_RD_LZMA=y
96CONFIG_CC_OPTIMIZE_FOR_SIZE=y 107CONFIG_CC_OPTIMIZE_FOR_SIZE=y
97CONFIG_SYSCTL=y 108CONFIG_SYSCTL=y
98CONFIG_ANON_INODES=y 109CONFIG_ANON_INODES=y
@@ -100,6 +111,7 @@ CONFIG_EMBEDDED=y
100CONFIG_UID16=y 111CONFIG_UID16=y
101CONFIG_SYSCTL_SYSCALL=y 112CONFIG_SYSCTL_SYSCALL=y
102# CONFIG_KALLSYMS is not set 113# CONFIG_KALLSYMS is not set
114# CONFIG_STRIP_ASM_SYMS is not set
103CONFIG_HOTPLUG=y 115CONFIG_HOTPLUG=y
104CONFIG_PRINTK=y 116CONFIG_PRINTK=y
105CONFIG_BUG=y 117CONFIG_BUG=y
@@ -121,12 +133,15 @@ CONFIG_PCI_QUIRKS=y
121CONFIG_SLUB=y 133CONFIG_SLUB=y
122# CONFIG_SLOB is not set 134# CONFIG_SLOB is not set
123# CONFIG_PROFILING is not set 135# CONFIG_PROFILING is not set
136# CONFIG_MARKERS is not set
124CONFIG_HAVE_OPROFILE=y 137CONFIG_HAVE_OPROFILE=y
125CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y 138CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
126CONFIG_HAVE_IOREMAP_PROT=y 139CONFIG_HAVE_IOREMAP_PROT=y
127CONFIG_HAVE_KPROBES=y 140CONFIG_HAVE_KPROBES=y
128CONFIG_HAVE_KRETPROBES=y 141CONFIG_HAVE_KRETPROBES=y
129CONFIG_HAVE_ARCH_TRACEHOOK=y 142CONFIG_HAVE_ARCH_TRACEHOOK=y
143CONFIG_HAVE_DMA_API_DEBUG=y
144CONFIG_SLOW_WORK=y
130CONFIG_HAVE_GENERIC_DMA_COHERENT=y 145CONFIG_HAVE_GENERIC_DMA_COHERENT=y
131CONFIG_RT_MUTEXES=y 146CONFIG_RT_MUTEXES=y
132CONFIG_BASE_SMALL=0 147CONFIG_BASE_SMALL=0
@@ -139,7 +154,6 @@ CONFIG_MODVERSIONS=y
139CONFIG_STOP_MACHINE=y 154CONFIG_STOP_MACHINE=y
140CONFIG_BLOCK=y 155CONFIG_BLOCK=y
141CONFIG_LBD=y 156CONFIG_LBD=y
142# CONFIG_BLK_DEV_IO_TRACE is not set
143CONFIG_BLK_DEV_BSG=y 157CONFIG_BLK_DEV_BSG=y
144# CONFIG_BLK_DEV_INTEGRITY is not set 158# CONFIG_BLK_DEV_INTEGRITY is not set
145 159
@@ -167,22 +181,15 @@ CONFIG_HIGH_RES_TIMERS=y
167CONFIG_GENERIC_CLOCKEVENTS_BUILD=y 181CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
168CONFIG_SMP=y 182CONFIG_SMP=y
169# CONFIG_SPARSE_IRQ is not set 183# CONFIG_SPARSE_IRQ is not set
170CONFIG_X86_FIND_SMP_CONFIG=y
171CONFIG_X86_MPPARSE=y 184CONFIG_X86_MPPARSE=y
172CONFIG_X86_PC=y 185# CONFIG_X86_BIGSMP is not set
186CONFIG_X86_EXTENDED_PLATFORM=y
173# CONFIG_X86_ELAN is not set 187# CONFIG_X86_ELAN is not set
174# CONFIG_X86_VOYAGER is not set
175# CONFIG_X86_GENERICARCH is not set
176# CONFIG_X86_VSMP is not set
177# CONFIG_X86_RDC321X is not set 188# CONFIG_X86_RDC321X is not set
189# CONFIG_X86_32_NON_STANDARD is not set
178CONFIG_SCHED_OMIT_FRAME_POINTER=y 190CONFIG_SCHED_OMIT_FRAME_POINTER=y
179CONFIG_PARAVIRT_GUEST=y 191CONFIG_PARAVIRT_GUEST=y
180CONFIG_VMI=y 192# CONFIG_PARAVIRT_CLOCK is not set
181CONFIG_KVM_CLOCK=y
182CONFIG_KVM_GUEST=y
183CONFIG_LGUEST_GUEST=y
184CONFIG_PARAVIRT=y
185CONFIG_PARAVIRT_CLOCK=y
186# CONFIG_MEMTEST is not set 193# CONFIG_MEMTEST is not set
187# CONFIG_M386 is not set 194# CONFIG_M386 is not set
188# CONFIG_M486 is not set 195# CONFIG_M486 is not set
@@ -211,11 +218,12 @@ CONFIG_M586=y
211# CONFIG_GENERIC_CPU is not set 218# CONFIG_GENERIC_CPU is not set
212CONFIG_X86_GENERIC=y 219CONFIG_X86_GENERIC=y
213CONFIG_X86_CPU=y 220CONFIG_X86_CPU=y
221CONFIG_X86_L1_CACHE_BYTES=64
222CONFIG_X86_INTERNODE_CACHE_BYTES=64
214CONFIG_X86_CMPXCHG=y 223CONFIG_X86_CMPXCHG=y
215CONFIG_X86_L1_CACHE_SHIFT=7 224CONFIG_X86_L1_CACHE_SHIFT=5
216CONFIG_X86_XADD=y 225CONFIG_X86_XADD=y
217# CONFIG_X86_PPRO_FENCE is not set 226# CONFIG_X86_PPRO_FENCE is not set
218CONFIG_X86_F00F_BUG=y
219CONFIG_X86_WP_WORKS_OK=y 227CONFIG_X86_WP_WORKS_OK=y
220CONFIG_X86_INVLPG=y 228CONFIG_X86_INVLPG=y
221CONFIG_X86_BSWAP=y 229CONFIG_X86_BSWAP=y
@@ -227,7 +235,7 @@ CONFIG_X86_MINIMUM_CPU_FAMILY=4
227CONFIG_CPU_SUP_INTEL=y 235CONFIG_CPU_SUP_INTEL=y
228CONFIG_CPU_SUP_CYRIX_32=y 236CONFIG_CPU_SUP_CYRIX_32=y
229CONFIG_CPU_SUP_AMD=y 237CONFIG_CPU_SUP_AMD=y
230CONFIG_CPU_SUP_CENTAUR_32=y 238CONFIG_CPU_SUP_CENTAUR=y
231CONFIG_CPU_SUP_TRANSMETA_32=y 239CONFIG_CPU_SUP_TRANSMETA_32=y
232CONFIG_CPU_SUP_UMC_32=y 240CONFIG_CPU_SUP_UMC_32=y
233CONFIG_HPET_TIMER=y 241CONFIG_HPET_TIMER=y
@@ -255,6 +263,7 @@ CONFIG_MICROCODE_AMD=y
255CONFIG_MICROCODE_OLD_INTERFACE=y 263CONFIG_MICROCODE_OLD_INTERFACE=y
256CONFIG_X86_MSR=m 264CONFIG_X86_MSR=m
257CONFIG_X86_CPUID=m 265CONFIG_X86_CPUID=m
266CONFIG_X86_CPU_DEBUG=m
258# CONFIG_NOHIGHMEM is not set 267# CONFIG_NOHIGHMEM is not set
259CONFIG_HIGHMEM4G=y 268CONFIG_HIGHMEM4G=y
260# CONFIG_HIGHMEM64G is not set 269# CONFIG_HIGHMEM64G is not set
@@ -283,7 +292,10 @@ CONFIG_ZONE_DMA_FLAG=1
283CONFIG_BOUNCE=y 292CONFIG_BOUNCE=y
284CONFIG_VIRT_TO_BUS=y 293CONFIG_VIRT_TO_BUS=y
285CONFIG_UNEVICTABLE_LRU=y 294CONFIG_UNEVICTABLE_LRU=y
295CONFIG_HAVE_MLOCK=y
296CONFIG_HAVE_MLOCKED_PAGE_BIT=y
286CONFIG_MMU_NOTIFIER=y 297CONFIG_MMU_NOTIFIER=y
298CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
287# CONFIG_HIGHPTE is not set 299# CONFIG_HIGHPTE is not set
288# CONFIG_X86_CHECK_BIOS_CORRUPTION is not set 300# CONFIG_X86_CHECK_BIOS_CORRUPTION is not set
289CONFIG_X86_RESERVE_LOW_64K=y 301CONFIG_X86_RESERVE_LOW_64K=y
@@ -293,8 +305,8 @@ CONFIG_MTRR_SANITIZER=y
293CONFIG_MTRR_SANITIZER_ENABLE_DEFAULT=0 305CONFIG_MTRR_SANITIZER_ENABLE_DEFAULT=0
294CONFIG_MTRR_SANITIZER_SPARE_REG_NR_DEFAULT=1 306CONFIG_MTRR_SANITIZER_SPARE_REG_NR_DEFAULT=1
295# CONFIG_X86_PAT is not set 307# CONFIG_X86_PAT is not set
296# CONFIG_EFI is not set
297# CONFIG_SECCOMP is not set 308# CONFIG_SECCOMP is not set
309# CONFIG_CC_STACKPROTECTOR is not set
298# CONFIG_HZ_100 is not set 310# CONFIG_HZ_100 is not set
299# CONFIG_HZ_250 is not set 311# CONFIG_HZ_250 is not set
300CONFIG_HZ_300=y 312CONFIG_HZ_300=y
@@ -371,7 +383,6 @@ CONFIG_X86_POWERNOW_K6=m
371CONFIG_X86_POWERNOW_K7=m 383CONFIG_X86_POWERNOW_K7=m
372CONFIG_X86_POWERNOW_K7_ACPI=y 384CONFIG_X86_POWERNOW_K7_ACPI=y
373CONFIG_X86_POWERNOW_K8=m 385CONFIG_X86_POWERNOW_K8=m
374CONFIG_X86_POWERNOW_K8_ACPI=y
375CONFIG_X86_GX_SUSPMOD=m 386CONFIG_X86_GX_SUSPMOD=m
376CONFIG_X86_SPEEDSTEP_CENTRINO=m 387CONFIG_X86_SPEEDSTEP_CENTRINO=m
377CONFIG_X86_SPEEDSTEP_CENTRINO_TABLE=y 388CONFIG_X86_SPEEDSTEP_CENTRINO_TABLE=y
@@ -415,6 +426,7 @@ CONFIG_ARCH_SUPPORTS_MSI=y
415CONFIG_PCI_LEGACY=y 426CONFIG_PCI_LEGACY=y
416CONFIG_PCI_STUB=m 427CONFIG_PCI_STUB=m
417CONFIG_HT_IRQ=y 428CONFIG_HT_IRQ=y
429# CONFIG_PCI_IOV is not set
418CONFIG_ISA_DMA_API=y 430CONFIG_ISA_DMA_API=y
419CONFIG_ISA=y 431CONFIG_ISA=y
420# CONFIG_EISA is not set 432# CONFIG_EISA is not set
@@ -471,7 +483,6 @@ CONFIG_NET=y
471# 483#
472# Networking options 484# Networking options
473# 485#
474CONFIG_COMPAT_NET_DEV_OPS=y
475CONFIG_PACKET=m 486CONFIG_PACKET=m
476CONFIG_PACKET_MMAP=y 487CONFIG_PACKET_MMAP=y
477CONFIG_UNIX=y 488CONFIG_UNIX=y
@@ -512,7 +523,7 @@ CONFIG_INET_TUNNEL=m
512CONFIG_INET_XFRM_MODE_TRANSPORT=m 523CONFIG_INET_XFRM_MODE_TRANSPORT=m
513CONFIG_INET_XFRM_MODE_TUNNEL=m 524CONFIG_INET_XFRM_MODE_TUNNEL=m
514CONFIG_INET_XFRM_MODE_BEET=m 525CONFIG_INET_XFRM_MODE_BEET=m
515CONFIG_INET_LRO=m 526CONFIG_INET_LRO=y
516CONFIG_INET_DIAG=m 527CONFIG_INET_DIAG=m
517CONFIG_INET_TCP_DIAG=m 528CONFIG_INET_TCP_DIAG=m
518CONFIG_TCP_CONG_ADVANCED=y 529CONFIG_TCP_CONG_ADVANCED=y
@@ -596,6 +607,8 @@ CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
596CONFIG_NETFILTER_XT_TARGET_CONNMARK=m 607CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
597CONFIG_NETFILTER_XT_TARGET_CONNSECMARK=m 608CONFIG_NETFILTER_XT_TARGET_CONNSECMARK=m
598CONFIG_NETFILTER_XT_TARGET_DSCP=m 609CONFIG_NETFILTER_XT_TARGET_DSCP=m
610CONFIG_NETFILTER_XT_TARGET_HL=m
611CONFIG_NETFILTER_XT_TARGET_LED=m
599CONFIG_NETFILTER_XT_TARGET_MARK=m 612CONFIG_NETFILTER_XT_TARGET_MARK=m
600CONFIG_NETFILTER_XT_TARGET_NFLOG=m 613CONFIG_NETFILTER_XT_TARGET_NFLOG=m
601CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m 614CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
@@ -606,6 +619,7 @@ CONFIG_NETFILTER_XT_TARGET_TRACE=m
606CONFIG_NETFILTER_XT_TARGET_SECMARK=m 619CONFIG_NETFILTER_XT_TARGET_SECMARK=m
607CONFIG_NETFILTER_XT_TARGET_TCPMSS=m 620CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
608CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m 621CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m
622CONFIG_NETFILTER_XT_MATCH_CLUSTER=m
609CONFIG_NETFILTER_XT_MATCH_COMMENT=m 623CONFIG_NETFILTER_XT_MATCH_COMMENT=m
610CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m 624CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
611CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m 625CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m
@@ -616,6 +630,7 @@ CONFIG_NETFILTER_XT_MATCH_DSCP=m
616CONFIG_NETFILTER_XT_MATCH_ESP=m 630CONFIG_NETFILTER_XT_MATCH_ESP=m
617CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m 631CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
618CONFIG_NETFILTER_XT_MATCH_HELPER=m 632CONFIG_NETFILTER_XT_MATCH_HELPER=m
633CONFIG_NETFILTER_XT_MATCH_HL=m
619CONFIG_NETFILTER_XT_MATCH_IPRANGE=m 634CONFIG_NETFILTER_XT_MATCH_IPRANGE=m
620CONFIG_NETFILTER_XT_MATCH_LENGTH=m 635CONFIG_NETFILTER_XT_MATCH_LENGTH=m
621CONFIG_NETFILTER_XT_MATCH_LIMIT=m 636CONFIG_NETFILTER_XT_MATCH_LIMIT=m
@@ -729,11 +744,11 @@ CONFIG_IP6_NF_MATCH_HL=m
729CONFIG_IP6_NF_MATCH_IPV6HEADER=m 744CONFIG_IP6_NF_MATCH_IPV6HEADER=m
730CONFIG_IP6_NF_MATCH_MH=m 745CONFIG_IP6_NF_MATCH_MH=m
731CONFIG_IP6_NF_MATCH_RT=m 746CONFIG_IP6_NF_MATCH_RT=m
747CONFIG_IP6_NF_TARGET_HL=m
732CONFIG_IP6_NF_TARGET_LOG=m 748CONFIG_IP6_NF_TARGET_LOG=m
733CONFIG_IP6_NF_FILTER=m 749CONFIG_IP6_NF_FILTER=m
734CONFIG_IP6_NF_TARGET_REJECT=m 750CONFIG_IP6_NF_TARGET_REJECT=m
735CONFIG_IP6_NF_MANGLE=m 751CONFIG_IP6_NF_MANGLE=m
736CONFIG_IP6_NF_TARGET_HL=m
737CONFIG_IP6_NF_RAW=m 752CONFIG_IP6_NF_RAW=m
738CONFIG_IP6_NF_SECURITY=m 753CONFIG_IP6_NF_SECURITY=m
739 754
@@ -780,6 +795,8 @@ CONFIG_IP_SCTP=m
780# CONFIG_SCTP_HMAC_NONE is not set 795# CONFIG_SCTP_HMAC_NONE is not set
781CONFIG_SCTP_HMAC_SHA1=y 796CONFIG_SCTP_HMAC_SHA1=y
782# CONFIG_SCTP_HMAC_MD5 is not set 797# CONFIG_SCTP_HMAC_MD5 is not set
798CONFIG_RDS=m
799# CONFIG_RDS_DEBUG is not set
783CONFIG_TIPC=m 800CONFIG_TIPC=m
784# CONFIG_TIPC_ADVANCED is not set 801# CONFIG_TIPC_ADVANCED is not set
785# CONFIG_TIPC_DEBUG is not set 802# CONFIG_TIPC_DEBUG is not set
@@ -816,6 +833,7 @@ CONFIG_ECONET=m
816CONFIG_ECONET_AUNUDP=y 833CONFIG_ECONET_AUNUDP=y
817CONFIG_ECONET_NATIVE=y 834CONFIG_ECONET_NATIVE=y
818CONFIG_WAN_ROUTER=m 835CONFIG_WAN_ROUTER=m
836CONFIG_PHONET=m
819CONFIG_NET_SCHED=y 837CONFIG_NET_SCHED=y
820 838
821# 839#
@@ -975,12 +993,10 @@ CONFIG_BT_HCIVHCI=m
975CONFIG_AF_RXRPC=m 993CONFIG_AF_RXRPC=m
976# CONFIG_AF_RXRPC_DEBUG is not set 994# CONFIG_AF_RXRPC_DEBUG is not set
977CONFIG_RXKAD=m 995CONFIG_RXKAD=m
978CONFIG_PHONET=m
979CONFIG_FIB_RULES=y 996CONFIG_FIB_RULES=y
980CONFIG_WIRELESS=y 997CONFIG_WIRELESS=y
981CONFIG_CFG80211=m 998CONFIG_CFG80211=m
982# CONFIG_CFG80211_REG_DEBUG is not set 999# CONFIG_CFG80211_REG_DEBUG is not set
983CONFIG_NL80211=y
984CONFIG_WIRELESS_OLD_REGULATORY=y 1000CONFIG_WIRELESS_OLD_REGULATORY=y
985CONFIG_WIRELESS_EXT=y 1001CONFIG_WIRELESS_EXT=y
986CONFIG_WIRELESS_EXT_SYSFS=y 1002CONFIG_WIRELESS_EXT_SYSFS=y
@@ -1226,6 +1242,7 @@ CONFIG_ICS932S401=m
1226CONFIG_ENCLOSURE_SERVICES=m 1242CONFIG_ENCLOSURE_SERVICES=m
1227CONFIG_HP_ILO=m 1243CONFIG_HP_ILO=m
1228CONFIG_DELL_LAPTOP=m 1244CONFIG_DELL_LAPTOP=m
1245CONFIG_ISL29003=m
1229CONFIG_C2PORT=m 1246CONFIG_C2PORT=m
1230CONFIG_C2PORT_DURAMAR_2150=m 1247CONFIG_C2PORT_DURAMAR_2150=m
1231 1248
@@ -1242,6 +1259,7 @@ CONFIG_IDE=m
1242# 1259#
1243# Please see Documentation/ide/ide.txt for help/info on IDE drives 1260# Please see Documentation/ide/ide.txt for help/info on IDE drives
1244# 1261#
1262CONFIG_IDE_XFER_MODE=y
1245CONFIG_IDE_TIMINGS=y 1263CONFIG_IDE_TIMINGS=y
1246CONFIG_IDE_ATAPI=y 1264CONFIG_IDE_ATAPI=y
1247CONFIG_IDE_LEGACY=y 1265CONFIG_IDE_LEGACY=y
@@ -1401,11 +1419,16 @@ CONFIG_MEGARAID_MM=m
1401CONFIG_MEGARAID_MAILBOX=m 1419CONFIG_MEGARAID_MAILBOX=m
1402CONFIG_MEGARAID_LEGACY=m 1420CONFIG_MEGARAID_LEGACY=m
1403CONFIG_MEGARAID_SAS=m 1421CONFIG_MEGARAID_SAS=m
1422CONFIG_SCSI_MPT2SAS=m
1423CONFIG_SCSI_MPT2SAS_MAX_SGE=128
1424# CONFIG_SCSI_MPT2SAS_LOGGING is not set
1404CONFIG_SCSI_HPTIOP=m 1425CONFIG_SCSI_HPTIOP=m
1405CONFIG_SCSI_BUSLOGIC=m 1426CONFIG_SCSI_BUSLOGIC=m
1406CONFIG_SCSI_FLASHPOINT=y 1427CONFIG_SCSI_FLASHPOINT=y
1407CONFIG_LIBFC=m 1428CONFIG_LIBFC=m
1429CONFIG_LIBFCOE=m
1408CONFIG_FCOE=m 1430CONFIG_FCOE=m
1431CONFIG_FCOE_FNIC=m
1409CONFIG_SCSI_DMX3191D=m 1432CONFIG_SCSI_DMX3191D=m
1410CONFIG_SCSI_DTC3280=m 1433CONFIG_SCSI_DTC3280=m
1411CONFIG_SCSI_EATA=m 1434CONFIG_SCSI_EATA=m
@@ -1464,6 +1487,10 @@ CONFIG_SCSI_DH_RDAC=m
1464CONFIG_SCSI_DH_HP_SW=m 1487CONFIG_SCSI_DH_HP_SW=m
1465CONFIG_SCSI_DH_EMC=m 1488CONFIG_SCSI_DH_EMC=m
1466CONFIG_SCSI_DH_ALUA=m 1489CONFIG_SCSI_DH_ALUA=m
1490CONFIG_SCSI_OSD_INITIATOR=m
1491CONFIG_SCSI_OSD_ULD=m
1492CONFIG_SCSI_OSD_DPRINT_SENSE=1
1493# CONFIG_SCSI_OSD_DEBUG is not set
1467CONFIG_ATA=m 1494CONFIG_ATA=m
1468# CONFIG_ATA_NONSTANDARD is not set 1495# CONFIG_ATA_NONSTANDARD is not set
1469CONFIG_ATA_ACPI=y 1496CONFIG_ATA_ACPI=y
@@ -1542,7 +1569,7 @@ CONFIG_MD_RAID0=m
1542CONFIG_MD_RAID1=m 1569CONFIG_MD_RAID1=m
1543CONFIG_MD_RAID10=m 1570CONFIG_MD_RAID10=m
1544CONFIG_MD_RAID456=m 1571CONFIG_MD_RAID456=m
1545CONFIG_MD_RAID5_RESHAPE=y 1572CONFIG_MD_RAID6_PQ=m
1546CONFIG_MD_MULTIPATH=m 1573CONFIG_MD_MULTIPATH=m
1547CONFIG_MD_FAULTY=m 1574CONFIG_MD_FAULTY=m
1548CONFIG_BLK_DEV_DM=m 1575CONFIG_BLK_DEV_DM=m
@@ -1595,6 +1622,7 @@ CONFIG_I2O_SCSI=m
1595CONFIG_I2O_PROC=m 1622CONFIG_I2O_PROC=m
1596# CONFIG_MACINTOSH_DRIVERS is not set 1623# CONFIG_MACINTOSH_DRIVERS is not set
1597CONFIG_NETDEVICES=y 1624CONFIG_NETDEVICES=y
1625CONFIG_COMPAT_NET_DEV_OPS=y
1598CONFIG_IFB=m 1626CONFIG_IFB=m
1599CONFIG_DUMMY=m 1627CONFIG_DUMMY=m
1600CONFIG_BONDING=m 1628CONFIG_BONDING=m
@@ -1655,6 +1683,7 @@ CONFIG_ULTRA=m
1655CONFIG_SMC9194=m 1683CONFIG_SMC9194=m
1656CONFIG_ENC28J60=m 1684CONFIG_ENC28J60=m
1657# CONFIG_ENC28J60_WRITEVERIFY is not set 1685# CONFIG_ENC28J60_WRITEVERIFY is not set
1686CONFIG_ETHOC=m
1658CONFIG_NET_VENDOR_RACAL=y 1687CONFIG_NET_VENDOR_RACAL=y
1659CONFIG_NI52=m 1688CONFIG_NI52=m
1660CONFIG_NI65=m 1689CONFIG_NI65=m
@@ -1738,7 +1767,7 @@ CONFIG_E1000=m
1738CONFIG_E1000E=m 1767CONFIG_E1000E=m
1739CONFIG_IP1000=m 1768CONFIG_IP1000=m
1740CONFIG_IGB=m 1769CONFIG_IGB=m
1741CONFIG_IGB_LRO=y 1770CONFIG_IGBVF=m
1742CONFIG_NS83820=m 1771CONFIG_NS83820=m
1743CONFIG_HAMACHI=m 1772CONFIG_HAMACHI=m
1744CONFIG_YELLOWFIN=m 1773CONFIG_YELLOWFIN=m
@@ -1764,6 +1793,8 @@ CONFIG_ENIC=m
1764CONFIG_IXGBE=m 1793CONFIG_IXGBE=m
1765CONFIG_IXGB=m 1794CONFIG_IXGB=m
1766CONFIG_S2IO=m 1795CONFIG_S2IO=m
1796CONFIG_VXGE=m
1797# CONFIG_VXGE_DEBUG_TRACE_ALL is not set
1767CONFIG_MYRI10GE=m 1798CONFIG_MYRI10GE=m
1768CONFIG_NETXEN_NIC=m 1799CONFIG_NETXEN_NIC=m
1769CONFIG_NIU=m 1800CONFIG_NIU=m
@@ -1793,21 +1824,15 @@ CONFIG_LIBERTAS=m
1793CONFIG_LIBERTAS_USB=m 1824CONFIG_LIBERTAS_USB=m
1794CONFIG_LIBERTAS_CS=m 1825CONFIG_LIBERTAS_CS=m
1795CONFIG_LIBERTAS_SDIO=m 1826CONFIG_LIBERTAS_SDIO=m
1827CONFIG_LIBERTAS_SPI=m
1796# CONFIG_LIBERTAS_DEBUG is not set 1828# CONFIG_LIBERTAS_DEBUG is not set
1797CONFIG_LIBERTAS_THINFIRM=m 1829CONFIG_LIBERTAS_THINFIRM=m
1798CONFIG_LIBERTAS_THINFIRM_USB=m 1830CONFIG_LIBERTAS_THINFIRM_USB=m
1799CONFIG_AIRO=m 1831CONFIG_AIRO=m
1800CONFIG_HERMES=m
1801CONFIG_HERMES_CACHE_FW_ON_INIT=y
1802CONFIG_PLX_HERMES=m
1803CONFIG_TMD_HERMES=m
1804CONFIG_NORTEL_HERMES=m
1805CONFIG_PCI_HERMES=m
1806CONFIG_PCMCIA_HERMES=m
1807CONFIG_PCMCIA_SPECTRUM=m
1808CONFIG_ATMEL=m 1832CONFIG_ATMEL=m
1809CONFIG_PCI_ATMEL=m 1833CONFIG_PCI_ATMEL=m
1810CONFIG_PCMCIA_ATMEL=m 1834CONFIG_PCMCIA_ATMEL=m
1835CONFIG_AT76C50X_USB=m
1811CONFIG_AIRO_CS=m 1836CONFIG_AIRO_CS=m
1812CONFIG_PCMCIA_WL3501=m 1837CONFIG_PCMCIA_WL3501=m
1813CONFIG_PRISM54=m 1838CONFIG_PRISM54=m
@@ -1817,13 +1842,18 @@ CONFIG_RTL8180=m
1817CONFIG_RTL8187=m 1842CONFIG_RTL8187=m
1818CONFIG_ADM8211=m 1843CONFIG_ADM8211=m
1819CONFIG_MAC80211_HWSIM=m 1844CONFIG_MAC80211_HWSIM=m
1845CONFIG_MWL8K=m
1820CONFIG_P54_COMMON=m 1846CONFIG_P54_COMMON=m
1821CONFIG_P54_USB=m 1847CONFIG_P54_USB=m
1822CONFIG_P54_PCI=m 1848CONFIG_P54_PCI=m
1849CONFIG_P54_SPI=m
1850CONFIG_P54_LEDS=y
1823CONFIG_ATH5K=m 1851CONFIG_ATH5K=m
1824# CONFIG_ATH5K_DEBUG is not set 1852# CONFIG_ATH5K_DEBUG is not set
1825CONFIG_ATH9K=m 1853CONFIG_ATH9K=m
1826# CONFIG_ATH9K_DEBUG is not set 1854# CONFIG_ATH9K_DEBUG is not set
1855CONFIG_AR9170_USB=m
1856CONFIG_AR9170_LEDS=y
1827CONFIG_IPW2100=m 1857CONFIG_IPW2100=m
1828CONFIG_IPW2100_MONITOR=y 1858CONFIG_IPW2100_MONITOR=y
1829# CONFIG_IPW2100_DEBUG is not set 1859# CONFIG_IPW2100_DEBUG is not set
@@ -1836,20 +1866,15 @@ CONFIG_IPW2200_QOS=y
1836CONFIG_LIBIPW=m 1866CONFIG_LIBIPW=m
1837# CONFIG_LIBIPW_DEBUG is not set 1867# CONFIG_LIBIPW_DEBUG is not set
1838CONFIG_IWLWIFI=m 1868CONFIG_IWLWIFI=m
1839CONFIG_IWLCORE=m
1840# CONFIG_IWLWIFI_LEDS is not set 1869# CONFIG_IWLWIFI_LEDS is not set
1841# CONFIG_IWLWIFI_RFKILL is not set 1870# CONFIG_IWLWIFI_RFKILL is not set
1871# CONFIG_IWLWIFI_SPECTRUM_MEASUREMENT is not set
1842# CONFIG_IWLWIFI_DEBUG is not set 1872# CONFIG_IWLWIFI_DEBUG is not set
1843CONFIG_IWLAGN=m 1873CONFIG_IWLAGN=m
1844CONFIG_IWLAGN_SPECTRUM_MEASUREMENT=y
1845# CONFIG_IWLAGN_LEDS is not set
1846CONFIG_IWL4965=y 1874CONFIG_IWL4965=y
1847CONFIG_IWL5000=y 1875CONFIG_IWL5000=y
1848CONFIG_IWL3945=m 1876CONFIG_IWL3945=m
1849CONFIG_IWL3945_RFKILL=y
1850# CONFIG_IWL3945_SPECTRUM_MEASUREMENT is not set 1877# CONFIG_IWL3945_SPECTRUM_MEASUREMENT is not set
1851CONFIG_IWL3945_LEDS=y
1852# CONFIG_IWL3945_DEBUG is not set
1853CONFIG_HOSTAP=m 1878CONFIG_HOSTAP=m
1854CONFIG_HOSTAP_FIRMWARE=y 1879CONFIG_HOSTAP_FIRMWARE=y
1855CONFIG_HOSTAP_FIRMWARE_NVRAM=y 1880CONFIG_HOSTAP_FIRMWARE_NVRAM=y
@@ -1891,6 +1916,14 @@ CONFIG_RT2X00_LIB_CRYPTO=y
1891CONFIG_RT2X00_LIB_RFKILL=y 1916CONFIG_RT2X00_LIB_RFKILL=y
1892CONFIG_RT2X00_LIB_LEDS=y 1917CONFIG_RT2X00_LIB_LEDS=y
1893# CONFIG_RT2X00_DEBUG is not set 1918# CONFIG_RT2X00_DEBUG is not set
1919CONFIG_HERMES=m
1920CONFIG_HERMES_CACHE_FW_ON_INIT=y
1921CONFIG_PLX_HERMES=m
1922CONFIG_TMD_HERMES=m
1923CONFIG_NORTEL_HERMES=m
1924CONFIG_PCI_HERMES=m
1925CONFIG_PCMCIA_HERMES=m
1926CONFIG_PCMCIA_SPECTRUM=m
1894 1927
1895# 1928#
1896# WiMAX Wireless Broadband devices 1929# WiMAX Wireless Broadband devices
@@ -1910,6 +1943,7 @@ CONFIG_USB_RTL8150=m
1910CONFIG_USB_USBNET=m 1943CONFIG_USB_USBNET=m
1911CONFIG_USB_NET_AX8817X=m 1944CONFIG_USB_NET_AX8817X=m
1912CONFIG_USB_NET_CDCETHER=m 1945CONFIG_USB_NET_CDCETHER=m
1946CONFIG_USB_NET_CDC_EEM=m
1913CONFIG_USB_NET_DM9601=m 1947CONFIG_USB_NET_DM9601=m
1914CONFIG_USB_NET_SMSC95XX=m 1948CONFIG_USB_NET_SMSC95XX=m
1915CONFIG_USB_NET_GL620A=m 1949CONFIG_USB_NET_GL620A=m
@@ -2157,6 +2191,9 @@ CONFIG_TABLET_USB_KBTAB=m
2157CONFIG_TABLET_USB_WACOM=m 2191CONFIG_TABLET_USB_WACOM=m
2158CONFIG_INPUT_TOUCHSCREEN=y 2192CONFIG_INPUT_TOUCHSCREEN=y
2159CONFIG_TOUCHSCREEN_ADS7846=m 2193CONFIG_TOUCHSCREEN_ADS7846=m
2194CONFIG_TOUCHSCREEN_AD7877=m
2195CONFIG_TOUCHSCREEN_AD7879_I2C=m
2196CONFIG_TOUCHSCREEN_AD7879=m
2160CONFIG_TOUCHSCREEN_FUJITSU=m 2197CONFIG_TOUCHSCREEN_FUJITSU=m
2161CONFIG_TOUCHSCREEN_GUNZE=m 2198CONFIG_TOUCHSCREEN_GUNZE=m
2162CONFIG_TOUCHSCREEN_ELO=m 2199CONFIG_TOUCHSCREEN_ELO=m
@@ -2200,6 +2237,7 @@ CONFIG_INPUT_YEALINK=m
2200CONFIG_INPUT_CM109=m 2237CONFIG_INPUT_CM109=m
2201CONFIG_INPUT_UINPUT=m 2238CONFIG_INPUT_UINPUT=m
2202CONFIG_INPUT_PCF50633_PMU=m 2239CONFIG_INPUT_PCF50633_PMU=m
2240CONFIG_INPUT_GPIO_ROTARY_ENCODER=m
2203 2241
2204# 2242#
2205# Hardware I/O ports 2243# Hardware I/O ports
@@ -2266,6 +2304,7 @@ CONFIG_SERIAL_8250_RUNTIME_UARTS=4
2266# 2304#
2267# Non-8250 serial port support 2305# Non-8250 serial port support
2268# 2306#
2307CONFIG_SERIAL_MAX3100=m
2269CONFIG_SERIAL_CORE=y 2308CONFIG_SERIAL_CORE=y
2270CONFIG_SERIAL_CORE_CONSOLE=y 2309CONFIG_SERIAL_CORE_CONSOLE=y
2271CONFIG_SERIAL_JSM=m 2310CONFIG_SERIAL_JSM=m
@@ -2276,7 +2315,7 @@ CONFIG_PRINTER=m
2276# CONFIG_LP_CONSOLE is not set 2315# CONFIG_LP_CONSOLE is not set
2277CONFIG_PPDEV=m 2316CONFIG_PPDEV=m
2278CONFIG_HVC_DRIVER=y 2317CONFIG_HVC_DRIVER=y
2279CONFIG_VIRTIO_CONSOLE=y 2318CONFIG_VIRTIO_CONSOLE=m
2280CONFIG_IPMI_HANDLER=m 2319CONFIG_IPMI_HANDLER=m
2281# CONFIG_IPMI_PANIC_EVENT is not set 2320# CONFIG_IPMI_PANIC_EVENT is not set
2282CONFIG_IPMI_DEVICE_INTERFACE=m 2321CONFIG_IPMI_DEVICE_INTERFACE=m
@@ -2284,6 +2323,7 @@ CONFIG_IPMI_SI=m
2284CONFIG_IPMI_WATCHDOG=m 2323CONFIG_IPMI_WATCHDOG=m
2285CONFIG_IPMI_POWEROFF=m 2324CONFIG_IPMI_POWEROFF=m
2286CONFIG_HW_RANDOM=m 2325CONFIG_HW_RANDOM=m
2326CONFIG_HW_RANDOM_TIMERIOMEM=m
2287CONFIG_HW_RANDOM_INTEL=m 2327CONFIG_HW_RANDOM_INTEL=m
2288CONFIG_HW_RANDOM_AMD=m 2328CONFIG_HW_RANDOM_AMD=m
2289CONFIG_HW_RANDOM_GEODE=m 2329CONFIG_HW_RANDOM_GEODE=m
@@ -2385,7 +2425,6 @@ CONFIG_SCx200_ACB=m
2385# Miscellaneous I2C Chip support 2425# Miscellaneous I2C Chip support
2386# 2426#
2387CONFIG_DS1682=m 2427CONFIG_DS1682=m
2388CONFIG_SENSORS_PCF8591=m
2389CONFIG_SENSORS_MAX6875=m 2428CONFIG_SENSORS_MAX6875=m
2390CONFIG_SENSORS_TSL2550=m 2429CONFIG_SENSORS_TSL2550=m
2391# CONFIG_I2C_DEBUG_CORE is not set 2430# CONFIG_I2C_DEBUG_CORE is not set
@@ -2479,6 +2518,7 @@ CONFIG_SENSORS_ADT7473=m
2479CONFIG_SENSORS_ADT7475=m 2518CONFIG_SENSORS_ADT7475=m
2480CONFIG_SENSORS_K8TEMP=m 2519CONFIG_SENSORS_K8TEMP=m
2481CONFIG_SENSORS_ASB100=m 2520CONFIG_SENSORS_ASB100=m
2521CONFIG_SENSORS_ATK0110=m
2482CONFIG_SENSORS_ATXP1=m 2522CONFIG_SENSORS_ATXP1=m
2483CONFIG_SENSORS_DS1621=m 2523CONFIG_SENSORS_DS1621=m
2484CONFIG_SENSORS_I5K_AMB=m 2524CONFIG_SENSORS_I5K_AMB=m
@@ -2488,6 +2528,7 @@ CONFIG_SENSORS_F75375S=m
2488CONFIG_SENSORS_FSCHER=m 2528CONFIG_SENSORS_FSCHER=m
2489CONFIG_SENSORS_FSCPOS=m 2529CONFIG_SENSORS_FSCPOS=m
2490CONFIG_SENSORS_FSCHMD=m 2530CONFIG_SENSORS_FSCHMD=m
2531CONFIG_SENSORS_G760A=m
2491CONFIG_SENSORS_GL518SM=m 2532CONFIG_SENSORS_GL518SM=m
2492CONFIG_SENSORS_GL520SM=m 2533CONFIG_SENSORS_GL520SM=m
2493CONFIG_SENSORS_CORETEMP=m 2534CONFIG_SENSORS_CORETEMP=m
@@ -2506,12 +2547,16 @@ CONFIG_SENSORS_LM87=m
2506CONFIG_SENSORS_LM90=m 2547CONFIG_SENSORS_LM90=m
2507CONFIG_SENSORS_LM92=m 2548CONFIG_SENSORS_LM92=m
2508CONFIG_SENSORS_LM93=m 2549CONFIG_SENSORS_LM93=m
2550CONFIG_SENSORS_LTC4215=m
2509CONFIG_SENSORS_LTC4245=m 2551CONFIG_SENSORS_LTC4245=m
2552CONFIG_SENSORS_LM95241=m
2510CONFIG_SENSORS_MAX1111=m 2553CONFIG_SENSORS_MAX1111=m
2511CONFIG_SENSORS_MAX1619=m 2554CONFIG_SENSORS_MAX1619=m
2512CONFIG_SENSORS_MAX6650=m 2555CONFIG_SENSORS_MAX6650=m
2513CONFIG_SENSORS_PC87360=m 2556CONFIG_SENSORS_PC87360=m
2514CONFIG_SENSORS_PC87427=m 2557CONFIG_SENSORS_PC87427=m
2558CONFIG_SENSORS_PCF8591=m
2559CONFIG_SENSORS_SHT15=m
2515CONFIG_SENSORS_SIS5595=m 2560CONFIG_SENSORS_SIS5595=m
2516CONFIG_SENSORS_DME1737=m 2561CONFIG_SENSORS_DME1737=m
2517CONFIG_SENSORS_SMSC47M1=m 2562CONFIG_SENSORS_SMSC47M1=m
@@ -2581,7 +2626,6 @@ CONFIG_SBC_EPX_C3_WATCHDOG=m
2581CONFIG_PCWATCHDOG=m 2626CONFIG_PCWATCHDOG=m
2582CONFIG_MIXCOMWD=m 2627CONFIG_MIXCOMWD=m
2583CONFIG_WDT=m 2628CONFIG_WDT=m
2584CONFIG_WDT_501=y
2585 2629
2586# 2630#
2587# PCI-based Watchdog Cards 2631# PCI-based Watchdog Cards
@@ -2658,7 +2702,7 @@ CONFIG_VIDEO_SAA7146=m
2658CONFIG_VIDEO_SAA7146_VV=m 2702CONFIG_VIDEO_SAA7146_VV=m
2659# CONFIG_MEDIA_ATTACH is not set 2703# CONFIG_MEDIA_ATTACH is not set
2660CONFIG_MEDIA_TUNER=m 2704CONFIG_MEDIA_TUNER=m
2661# CONFIG_MEDIA_TUNER_CUSTOMIZE is not set 2705# CONFIG_MEDIA_TUNER_CUSTOMISE is not set
2662CONFIG_MEDIA_TUNER_SIMPLE=m 2706CONFIG_MEDIA_TUNER_SIMPLE=m
2663CONFIG_MEDIA_TUNER_TDA8290=m 2707CONFIG_MEDIA_TUNER_TDA8290=m
2664CONFIG_MEDIA_TUNER_TDA827X=m 2708CONFIG_MEDIA_TUNER_TDA827X=m
@@ -2675,6 +2719,7 @@ CONFIG_MEDIA_TUNER_XC2028=m
2675CONFIG_MEDIA_TUNER_XC5000=m 2719CONFIG_MEDIA_TUNER_XC5000=m
2676CONFIG_MEDIA_TUNER_MXL5005S=m 2720CONFIG_MEDIA_TUNER_MXL5005S=m
2677CONFIG_MEDIA_TUNER_MXL5007T=m 2721CONFIG_MEDIA_TUNER_MXL5007T=m
2722CONFIG_MEDIA_TUNER_MC44S803=m
2678CONFIG_VIDEO_V4L2=m 2723CONFIG_VIDEO_V4L2=m
2679CONFIG_VIDEO_V4L1=m 2724CONFIG_VIDEO_V4L1=m
2680CONFIG_VIDEOBUF_GEN=m 2725CONFIG_VIDEOBUF_GEN=m
@@ -2714,6 +2759,11 @@ CONFIG_VIDEO_WM8739=m
2714CONFIG_VIDEO_VP27SMPX=m 2759CONFIG_VIDEO_VP27SMPX=m
2715 2760
2716# 2761#
2762# RDS decoders
2763#
2764CONFIG_VIDEO_SAA6588=m
2765
2766#
2717# Video decoders 2767# Video decoders
2718# 2768#
2719CONFIG_VIDEO_BT819=m 2769CONFIG_VIDEO_BT819=m
@@ -2723,8 +2773,6 @@ CONFIG_VIDEO_KS0127=m
2723CONFIG_VIDEO_OV7670=m 2773CONFIG_VIDEO_OV7670=m
2724CONFIG_VIDEO_TCM825X=m 2774CONFIG_VIDEO_TCM825X=m
2725CONFIG_VIDEO_SAA7110=m 2775CONFIG_VIDEO_SAA7110=m
2726CONFIG_VIDEO_SAA7111=m
2727CONFIG_VIDEO_SAA7114=m
2728CONFIG_VIDEO_SAA711X=m 2776CONFIG_VIDEO_SAA711X=m
2729CONFIG_VIDEO_SAA717X=m 2777CONFIG_VIDEO_SAA717X=m
2730CONFIG_VIDEO_SAA7191=m 2778CONFIG_VIDEO_SAA7191=m
@@ -2758,7 +2806,6 @@ CONFIG_VIDEO_UPD64083=m
2758CONFIG_VIDEO_VIVI=m 2806CONFIG_VIDEO_VIVI=m
2759CONFIG_VIDEO_BT848=m 2807CONFIG_VIDEO_BT848=m
2760CONFIG_VIDEO_BT848_DVB=y 2808CONFIG_VIDEO_BT848_DVB=y
2761CONFIG_VIDEO_SAA6588=m
2762CONFIG_VIDEO_PMS=m 2809CONFIG_VIDEO_PMS=m
2763CONFIG_VIDEO_BWQCAM=m 2810CONFIG_VIDEO_BWQCAM=m
2764CONFIG_VIDEO_CQCAM=m 2811CONFIG_VIDEO_CQCAM=m
@@ -2797,11 +2844,9 @@ CONFIG_VIDEO_CX18=m
2797CONFIG_VIDEO_CAFE_CCIC=m 2844CONFIG_VIDEO_CAFE_CCIC=m
2798CONFIG_SOC_CAMERA=m 2845CONFIG_SOC_CAMERA=m
2799CONFIG_SOC_CAMERA_MT9M001=m 2846CONFIG_SOC_CAMERA_MT9M001=m
2800# CONFIG_MT9M001_PCA9536_SWITCH is not set
2801CONFIG_SOC_CAMERA_MT9M111=m 2847CONFIG_SOC_CAMERA_MT9M111=m
2802CONFIG_SOC_CAMERA_MT9T031=m 2848CONFIG_SOC_CAMERA_MT9T031=m
2803CONFIG_SOC_CAMERA_MT9V022=m 2849CONFIG_SOC_CAMERA_MT9V022=m
2804# CONFIG_MT9V022_PCA9536_SWITCH is not set
2805CONFIG_SOC_CAMERA_TW9910=m 2850CONFIG_SOC_CAMERA_TW9910=m
2806CONFIG_SOC_CAMERA_PLATFORM=m 2851CONFIG_SOC_CAMERA_PLATFORM=m
2807CONFIG_SOC_CAMERA_OV772X=m 2852CONFIG_SOC_CAMERA_OV772X=m
@@ -2815,6 +2860,7 @@ CONFIG_USB_GSPCA_CONEX=m
2815CONFIG_USB_GSPCA_ETOMS=m 2860CONFIG_USB_GSPCA_ETOMS=m
2816CONFIG_USB_GSPCA_FINEPIX=m 2861CONFIG_USB_GSPCA_FINEPIX=m
2817CONFIG_USB_GSPCA_MARS=m 2862CONFIG_USB_GSPCA_MARS=m
2863CONFIG_USB_GSPCA_MR97310A=m
2818CONFIG_USB_GSPCA_OV519=m 2864CONFIG_USB_GSPCA_OV519=m
2819CONFIG_USB_GSPCA_OV534=m 2865CONFIG_USB_GSPCA_OV534=m
2820CONFIG_USB_GSPCA_PAC207=m 2866CONFIG_USB_GSPCA_PAC207=m
@@ -2827,6 +2873,8 @@ CONFIG_USB_GSPCA_SPCA505=m
2827CONFIG_USB_GSPCA_SPCA506=m 2873CONFIG_USB_GSPCA_SPCA506=m
2828CONFIG_USB_GSPCA_SPCA508=m 2874CONFIG_USB_GSPCA_SPCA508=m
2829CONFIG_USB_GSPCA_SPCA561=m 2875CONFIG_USB_GSPCA_SPCA561=m
2876CONFIG_USB_GSPCA_SQ905=m
2877CONFIG_USB_GSPCA_SQ905C=m
2830CONFIG_USB_GSPCA_STK014=m 2878CONFIG_USB_GSPCA_STK014=m
2831CONFIG_USB_GSPCA_SUNPLUS=m 2879CONFIG_USB_GSPCA_SUNPLUS=m
2832CONFIG_USB_GSPCA_T613=m 2880CONFIG_USB_GSPCA_T613=m
@@ -2837,9 +2885,13 @@ CONFIG_VIDEO_PVRUSB2=m
2837CONFIG_VIDEO_PVRUSB2_SYSFS=y 2885CONFIG_VIDEO_PVRUSB2_SYSFS=y
2838CONFIG_VIDEO_PVRUSB2_DVB=y 2886CONFIG_VIDEO_PVRUSB2_DVB=y
2839# CONFIG_VIDEO_PVRUSB2_DEBUGIFC is not set 2887# CONFIG_VIDEO_PVRUSB2_DEBUGIFC is not set
2888CONFIG_VIDEO_HDPVR=m
2840CONFIG_VIDEO_EM28XX=m 2889CONFIG_VIDEO_EM28XX=m
2841CONFIG_VIDEO_EM28XX_ALSA=m 2890CONFIG_VIDEO_EM28XX_ALSA=m
2842CONFIG_VIDEO_EM28XX_DVB=m 2891CONFIG_VIDEO_EM28XX_DVB=m
2892CONFIG_VIDEO_CX231XX=m
2893CONFIG_VIDEO_CX231XX_ALSA=m
2894CONFIG_VIDEO_CX231XX_DVB=m
2843CONFIG_VIDEO_USBVISION=m 2895CONFIG_VIDEO_USBVISION=m
2844CONFIG_VIDEO_USBVIDEO=m 2896CONFIG_VIDEO_USBVIDEO=m
2845CONFIG_USB_VICAM=m 2897CONFIG_USB_VICAM=m
@@ -2856,6 +2908,7 @@ CONFIG_USB_STV680=m
2856CONFIG_USB_ZC0301=m 2908CONFIG_USB_ZC0301=m
2857CONFIG_USB_PWC=m 2909CONFIG_USB_PWC=m
2858# CONFIG_USB_PWC_DEBUG is not set 2910# CONFIG_USB_PWC_DEBUG is not set
2911CONFIG_USB_PWC_INPUT_EVDEV=y
2859CONFIG_USB_ZR364XX=m 2912CONFIG_USB_ZR364XX=m
2860CONFIG_USB_STKWEBCAM=m 2913CONFIG_USB_STKWEBCAM=m
2861CONFIG_USB_S2255=m 2914CONFIG_USB_S2255=m
@@ -2924,6 +2977,7 @@ CONFIG_DVB_USB_CINERGY_T2=m
2924CONFIG_DVB_USB_ANYSEE=m 2977CONFIG_DVB_USB_ANYSEE=m
2925CONFIG_DVB_USB_DTV5100=m 2978CONFIG_DVB_USB_DTV5100=m
2926CONFIG_DVB_USB_AF9015=m 2979CONFIG_DVB_USB_AF9015=m
2980CONFIG_DVB_USB_CE6230=m
2927CONFIG_DVB_TTUSB_BUDGET=m 2981CONFIG_DVB_TTUSB_BUDGET=m
2928CONFIG_DVB_TTUSB_DEC=m 2982CONFIG_DVB_TTUSB_DEC=m
2929CONFIG_DVB_SIANO_SMS1XXX=m 2983CONFIG_DVB_SIANO_SMS1XXX=m
@@ -2962,28 +3016,19 @@ CONFIG_DVB_FIREDTV_INPUT=y
2962# 3016#
2963# Supported DVB Frontends 3017# Supported DVB Frontends
2964# 3018#
2965
2966#
2967# Customise DVB Frontends
2968#
2969# CONFIG_DVB_FE_CUSTOMISE is not set 3019# CONFIG_DVB_FE_CUSTOMISE is not set
2970
2971#
2972# Multistandard (satellite) frontends
2973#
2974CONFIG_DVB_STB0899=m 3020CONFIG_DVB_STB0899=m
2975CONFIG_DVB_STB6100=m 3021CONFIG_DVB_STB6100=m
2976
2977#
2978# DVB-S (satellite) frontends
2979#
2980CONFIG_DVB_CX24110=m 3022CONFIG_DVB_CX24110=m
2981CONFIG_DVB_CX24123=m 3023CONFIG_DVB_CX24123=m
2982CONFIG_DVB_MT312=m 3024CONFIG_DVB_MT312=m
3025CONFIG_DVB_ZL10036=m
2983CONFIG_DVB_S5H1420=m 3026CONFIG_DVB_S5H1420=m
2984CONFIG_DVB_STV0288=m 3027CONFIG_DVB_STV0288=m
2985CONFIG_DVB_STB6000=m 3028CONFIG_DVB_STB6000=m
2986CONFIG_DVB_STV0299=m 3029CONFIG_DVB_STV0299=m
3030CONFIG_DVB_STV6110=m
3031CONFIG_DVB_STV0900=m
2987CONFIG_DVB_TDA8083=m 3032CONFIG_DVB_TDA8083=m
2988CONFIG_DVB_TDA10086=m 3033CONFIG_DVB_TDA10086=m
2989CONFIG_DVB_TDA8261=m 3034CONFIG_DVB_TDA8261=m
@@ -2994,15 +3039,10 @@ CONFIG_DVB_TDA826X=m
2994CONFIG_DVB_TUA6100=m 3039CONFIG_DVB_TUA6100=m
2995CONFIG_DVB_CX24116=m 3040CONFIG_DVB_CX24116=m
2996CONFIG_DVB_SI21XX=m 3041CONFIG_DVB_SI21XX=m
2997
2998#
2999# DVB-T (terrestrial) frontends
3000#
3001CONFIG_DVB_SP8870=m 3042CONFIG_DVB_SP8870=m
3002CONFIG_DVB_SP887X=m 3043CONFIG_DVB_SP887X=m
3003CONFIG_DVB_CX22700=m 3044CONFIG_DVB_CX22700=m
3004CONFIG_DVB_CX22702=m 3045CONFIG_DVB_CX22702=m
3005CONFIG_DVB_DRX397XD=m
3006CONFIG_DVB_L64781=m 3046CONFIG_DVB_L64781=m
3007CONFIG_DVB_TDA1004X=m 3047CONFIG_DVB_TDA1004X=m
3008CONFIG_DVB_NXT6000=m 3048CONFIG_DVB_NXT6000=m
@@ -3013,52 +3053,26 @@ CONFIG_DVB_DIB3000MC=m
3013CONFIG_DVB_DIB7000M=m 3053CONFIG_DVB_DIB7000M=m
3014CONFIG_DVB_DIB7000P=m 3054CONFIG_DVB_DIB7000P=m
3015CONFIG_DVB_TDA10048=m 3055CONFIG_DVB_TDA10048=m
3016 3056CONFIG_DVB_AF9013=m
3017#
3018# DVB-C (cable) frontends
3019#
3020CONFIG_DVB_VES1820=m 3057CONFIG_DVB_VES1820=m
3021CONFIG_DVB_TDA10021=m 3058CONFIG_DVB_TDA10021=m
3022CONFIG_DVB_TDA10023=m 3059CONFIG_DVB_TDA10023=m
3023CONFIG_DVB_STV0297=m 3060CONFIG_DVB_STV0297=m
3024
3025#
3026# ATSC (North American/Korean Terrestrial/Cable DTV) frontends
3027#
3028CONFIG_DVB_NXT200X=m 3061CONFIG_DVB_NXT200X=m
3029CONFIG_DVB_OR51211=m 3062CONFIG_DVB_OR51211=m
3030CONFIG_DVB_OR51132=m 3063CONFIG_DVB_OR51132=m
3031CONFIG_DVB_BCM3510=m 3064CONFIG_DVB_BCM3510=m
3032CONFIG_DVB_LGDT330X=m 3065CONFIG_DVB_LGDT330X=m
3033CONFIG_DVB_LGDT3304=m 3066CONFIG_DVB_LGDT3305=m
3034CONFIG_DVB_S5H1409=m 3067CONFIG_DVB_S5H1409=m
3035CONFIG_DVB_AU8522=m 3068CONFIG_DVB_AU8522=m
3036CONFIG_DVB_S5H1411=m 3069CONFIG_DVB_S5H1411=m
3037
3038#
3039# ISDB-T (terrestrial) frontends
3040#
3041CONFIG_DVB_S921=m
3042
3043#
3044# Digital terrestrial only tuners/PLL
3045#
3046CONFIG_DVB_PLL=m 3070CONFIG_DVB_PLL=m
3047CONFIG_DVB_TUNER_DIB0070=m 3071CONFIG_DVB_TUNER_DIB0070=m
3048
3049#
3050# SEC control devices for DVB-S
3051#
3052CONFIG_DVB_LNBP21=m 3072CONFIG_DVB_LNBP21=m
3053CONFIG_DVB_ISL6405=m 3073CONFIG_DVB_ISL6405=m
3054CONFIG_DVB_ISL6421=m 3074CONFIG_DVB_ISL6421=m
3055CONFIG_DVB_LGS8GL5=m 3075CONFIG_DVB_LGS8GL5=m
3056
3057#
3058# Tools to develop new frontends
3059#
3060CONFIG_DVB_DUMMY_FE=m
3061CONFIG_DVB_AF9013=m
3062CONFIG_DAB=y 3076CONFIG_DAB=y
3063CONFIG_USB_DABUSB=m 3077CONFIG_USB_DABUSB=m
3064 3078
@@ -3171,11 +3185,10 @@ CONFIG_FB_NEOMAGIC=m
3171CONFIG_FB_KYRO=m 3185CONFIG_FB_KYRO=m
3172CONFIG_FB_3DFX=m 3186CONFIG_FB_3DFX=m
3173CONFIG_FB_3DFX_ACCEL=y 3187CONFIG_FB_3DFX_ACCEL=y
3188CONFIG_FB_3DFX_I2C=y
3174CONFIG_FB_VOODOO1=m 3189CONFIG_FB_VOODOO1=m
3175CONFIG_FB_VT8623=m 3190CONFIG_FB_VT8623=m
3176CONFIG_FB_CYBLA=m
3177CONFIG_FB_TRIDENT=m 3191CONFIG_FB_TRIDENT=m
3178CONFIG_FB_TRIDENT_ACCEL=y
3179CONFIG_FB_ARK=m 3192CONFIG_FB_ARK=m
3180CONFIG_FB_PM3=m 3193CONFIG_FB_PM3=m
3181CONFIG_FB_CARMINE=m 3194CONFIG_FB_CARMINE=m
@@ -3192,6 +3205,7 @@ CONFIG_FB_SM501=m
3192CONFIG_FB_METRONOME=m 3205CONFIG_FB_METRONOME=m
3193CONFIG_FB_MB862XX=m 3206CONFIG_FB_MB862XX=m
3194# CONFIG_FB_MB862XX_PCI_GDC is not set 3207# CONFIG_FB_MB862XX_PCI_GDC is not set
3208CONFIG_FB_BROADSHEET=m
3195CONFIG_BACKLIGHT_LCD_SUPPORT=y 3209CONFIG_BACKLIGHT_LCD_SUPPORT=y
3196CONFIG_LCD_CLASS_DEVICE=m 3210CONFIG_LCD_CLASS_DEVICE=m
3197CONFIG_LCD_LTV350QV=m 3211CONFIG_LCD_LTV350QV=m
@@ -3280,7 +3294,6 @@ CONFIG_SND_ALS100=m
3280CONFIG_SND_AZT2320=m 3294CONFIG_SND_AZT2320=m
3281CONFIG_SND_CMI8330=m 3295CONFIG_SND_CMI8330=m
3282CONFIG_SND_CS4231=m 3296CONFIG_SND_CS4231=m
3283CONFIG_SND_CS4232=m
3284CONFIG_SND_CS4236=m 3297CONFIG_SND_CS4236=m
3285CONFIG_SND_DT019X=m 3298CONFIG_SND_DT019X=m
3286CONFIG_SND_ES968=m 3299CONFIG_SND_ES968=m
@@ -3304,7 +3317,8 @@ CONFIG_SND_SB16_CSP=y
3304CONFIG_SND_SGALAXY=m 3317CONFIG_SND_SGALAXY=m
3305CONFIG_SND_SSCAPE=m 3318CONFIG_SND_SSCAPE=m
3306CONFIG_SND_WAVEFRONT=m 3319CONFIG_SND_WAVEFRONT=m
3307CONFIG_SND_WAVEFRONT_FIRMWARE_IN_KERNEL=y 3320CONFIG_SND_MSND_PINNACLE=m
3321CONFIG_SND_MSND_CLASSIC=m
3308CONFIG_SND_PCI=y 3322CONFIG_SND_PCI=y
3309CONFIG_SND_AD1889=m 3323CONFIG_SND_AD1889=m
3310CONFIG_SND_ALS300=m 3324CONFIG_SND_ALS300=m
@@ -3340,6 +3354,8 @@ CONFIG_SND_ECHO3G=m
3340CONFIG_SND_INDIGO=m 3354CONFIG_SND_INDIGO=m
3341CONFIG_SND_INDIGOIO=m 3355CONFIG_SND_INDIGOIO=m
3342CONFIG_SND_INDIGODJ=m 3356CONFIG_SND_INDIGODJ=m
3357CONFIG_SND_INDIGOIOX=m
3358CONFIG_SND_INDIGODJX=m
3343CONFIG_SND_EMU10K1=m 3359CONFIG_SND_EMU10K1=m
3344CONFIG_SND_EMU10K1X=m 3360CONFIG_SND_EMU10K1X=m
3345CONFIG_SND_ENS1370=m 3361CONFIG_SND_ENS1370=m
@@ -3403,6 +3419,7 @@ CONFIG_SND_SOC=m
3403CONFIG_SND_SOC_I2C_AND_SPI=m 3419CONFIG_SND_SOC_I2C_AND_SPI=m
3404CONFIG_SND_SOC_ALL_CODECS=m 3420CONFIG_SND_SOC_ALL_CODECS=m
3405CONFIG_SND_SOC_AD73311=m 3421CONFIG_SND_SOC_AD73311=m
3422CONFIG_SND_SOC_AK4104=m
3406CONFIG_SND_SOC_AK4535=m 3423CONFIG_SND_SOC_AK4535=m
3407CONFIG_SND_SOC_CS4270=m 3424CONFIG_SND_SOC_CS4270=m
3408CONFIG_SND_SOC_L3=m 3425CONFIG_SND_SOC_L3=m
@@ -3414,6 +3431,7 @@ CONFIG_SND_SOC_TLV320AIC3X=m
3414CONFIG_SND_SOC_UDA134X=m 3431CONFIG_SND_SOC_UDA134X=m
3415CONFIG_SND_SOC_UDA1380=m 3432CONFIG_SND_SOC_UDA1380=m
3416CONFIG_SND_SOC_WM8350=m 3433CONFIG_SND_SOC_WM8350=m
3434CONFIG_SND_SOC_WM8400=m
3417CONFIG_SND_SOC_WM8510=m 3435CONFIG_SND_SOC_WM8510=m
3418CONFIG_SND_SOC_WM8580=m 3436CONFIG_SND_SOC_WM8580=m
3419CONFIG_SND_SOC_WM8728=m 3437CONFIG_SND_SOC_WM8728=m
@@ -3447,15 +3465,17 @@ CONFIG_USB_MOUSE=m
3447# 3465#
3448# Special HID drivers 3466# Special HID drivers
3449# 3467#
3450# CONFIG_HID_COMPAT is not set
3451CONFIG_HID_A4TECH=m 3468CONFIG_HID_A4TECH=m
3452CONFIG_HID_APPLE=m 3469CONFIG_HID_APPLE=m
3453CONFIG_HID_BELKIN=m 3470CONFIG_HID_BELKIN=m
3454CONFIG_HID_CHERRY=m 3471CONFIG_HID_CHERRY=m
3455CONFIG_HID_CHICONY=m 3472CONFIG_HID_CHICONY=m
3456CONFIG_HID_CYPRESS=m 3473CONFIG_HID_CYPRESS=m
3474CONFIG_DRAGONRISE_FF=m
3457CONFIG_HID_EZKEY=m 3475CONFIG_HID_EZKEY=m
3476CONFIG_HID_KYE=m
3458CONFIG_HID_GYRATION=m 3477CONFIG_HID_GYRATION=m
3478CONFIG_HID_KENSINGTON=m
3459CONFIG_HID_LOGITECH=m 3479CONFIG_HID_LOGITECH=m
3460# CONFIG_LOGITECH_FF is not set 3480# CONFIG_LOGITECH_FF is not set
3461# CONFIG_LOGIRUMBLEPAD2_FF is not set 3481# CONFIG_LOGIRUMBLEPAD2_FF is not set
@@ -3531,25 +3551,25 @@ CONFIG_USB_WDM=m
3531CONFIG_USB_TMC=m 3551CONFIG_USB_TMC=m
3532 3552
3533# 3553#
3534# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed; 3554# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may
3535# 3555#
3536 3556
3537# 3557#
3538# see USB_STORAGE Help for more information 3558# also be needed; see USB_STORAGE Help for more info
3539# 3559#
3540CONFIG_USB_STORAGE=m 3560CONFIG_USB_STORAGE=m
3541# CONFIG_USB_STORAGE_DEBUG is not set 3561# CONFIG_USB_STORAGE_DEBUG is not set
3542CONFIG_USB_STORAGE_DATAFAB=y 3562CONFIG_USB_STORAGE_DATAFAB=m
3543CONFIG_USB_STORAGE_FREECOM=y 3563CONFIG_USB_STORAGE_FREECOM=m
3544CONFIG_USB_STORAGE_ISD200=y 3564CONFIG_USB_STORAGE_ISD200=m
3545CONFIG_USB_STORAGE_USBAT=y 3565CONFIG_USB_STORAGE_USBAT=m
3546CONFIG_USB_STORAGE_SDDR09=y 3566CONFIG_USB_STORAGE_SDDR09=m
3547CONFIG_USB_STORAGE_SDDR55=y 3567CONFIG_USB_STORAGE_SDDR55=m
3548CONFIG_USB_STORAGE_JUMPSHOT=y 3568CONFIG_USB_STORAGE_JUMPSHOT=m
3549CONFIG_USB_STORAGE_ALAUDA=y 3569CONFIG_USB_STORAGE_ALAUDA=m
3550CONFIG_USB_STORAGE_ONETOUCH=y 3570CONFIG_USB_STORAGE_ONETOUCH=m
3551CONFIG_USB_STORAGE_KARMA=y 3571CONFIG_USB_STORAGE_KARMA=m
3552CONFIG_USB_STORAGE_CYPRESS_ATACB=y 3572CONFIG_USB_STORAGE_CYPRESS_ATACB=m
3553CONFIG_USB_LIBUSUAL=y 3573CONFIG_USB_LIBUSUAL=y
3554 3574
3555# 3575#
@@ -3571,7 +3591,7 @@ CONFIG_USB_SERIAL_BELKIN=m
3571CONFIG_USB_SERIAL_CH341=m 3591CONFIG_USB_SERIAL_CH341=m
3572CONFIG_USB_SERIAL_WHITEHEAT=m 3592CONFIG_USB_SERIAL_WHITEHEAT=m
3573CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m 3593CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
3574CONFIG_USB_SERIAL_CP2101=m 3594CONFIG_USB_SERIAL_CP210X=m
3575CONFIG_USB_SERIAL_CYPRESS_M8=m 3595CONFIG_USB_SERIAL_CYPRESS_M8=m
3576CONFIG_USB_SERIAL_EMPEG=m 3596CONFIG_USB_SERIAL_EMPEG=m
3577CONFIG_USB_SERIAL_FTDI_SIO=m 3597CONFIG_USB_SERIAL_FTDI_SIO=m
@@ -3595,12 +3615,14 @@ CONFIG_USB_SERIAL_MOTOROLA=m
3595CONFIG_USB_SERIAL_NAVMAN=m 3615CONFIG_USB_SERIAL_NAVMAN=m
3596CONFIG_USB_SERIAL_PL2303=m 3616CONFIG_USB_SERIAL_PL2303=m
3597CONFIG_USB_SERIAL_OTI6858=m 3617CONFIG_USB_SERIAL_OTI6858=m
3618CONFIG_USB_SERIAL_QUALCOMM=m
3598CONFIG_USB_SERIAL_SPCP8X5=m 3619CONFIG_USB_SERIAL_SPCP8X5=m
3599CONFIG_USB_SERIAL_HP4X=m 3620CONFIG_USB_SERIAL_HP4X=m
3600CONFIG_USB_SERIAL_SAFE=m 3621CONFIG_USB_SERIAL_SAFE=m
3601CONFIG_USB_SERIAL_SAFE_PADDED=y 3622CONFIG_USB_SERIAL_SAFE_PADDED=y
3602CONFIG_USB_SERIAL_SIEMENS_MPI=m 3623CONFIG_USB_SERIAL_SIEMENS_MPI=m
3603CONFIG_USB_SERIAL_SIERRAWIRELESS=m 3624CONFIG_USB_SERIAL_SIERRAWIRELESS=m
3625CONFIG_USB_SERIAL_SYMBOL=m
3604CONFIG_USB_SERIAL_TI=m 3626CONFIG_USB_SERIAL_TI=m
3605CONFIG_USB_SERIAL_CYBERJACK=m 3627CONFIG_USB_SERIAL_CYBERJACK=m
3606CONFIG_USB_SERIAL_XIRCOM=m 3628CONFIG_USB_SERIAL_XIRCOM=m
@@ -3623,10 +3645,6 @@ CONFIG_USB_BERRY_CHARGE=m
3623CONFIG_USB_LED=m 3645CONFIG_USB_LED=m
3624CONFIG_USB_CYPRESS_CY7C63=m 3646CONFIG_USB_CYPRESS_CY7C63=m
3625CONFIG_USB_CYTHERM=m 3647CONFIG_USB_CYTHERM=m
3626CONFIG_USB_PHIDGET=m
3627CONFIG_USB_PHIDGETKIT=m
3628CONFIG_USB_PHIDGETMOTORCONTROL=m
3629CONFIG_USB_PHIDGETSERVO=m
3630CONFIG_USB_IDMOUSE=m 3648CONFIG_USB_IDMOUSE=m
3631CONFIG_USB_FTDI_ELAN=m 3649CONFIG_USB_FTDI_ELAN=m
3632CONFIG_USB_APPLEDISPLAY=m 3650CONFIG_USB_APPLEDISPLAY=m
@@ -3650,6 +3668,7 @@ CONFIG_USB_XUSBATM=m
3650# 3668#
3651CONFIG_USB_OTG_UTILS=y 3669CONFIG_USB_OTG_UTILS=y
3652CONFIG_USB_GPIO_VBUS=m 3670CONFIG_USB_GPIO_VBUS=m
3671CONFIG_NOP_USB_XCEIV=m
3653CONFIG_UWB=m 3672CONFIG_UWB=m
3654CONFIG_UWB_HWA=m 3673CONFIG_UWB_HWA=m
3655CONFIG_UWB_WHCI=m 3674CONFIG_UWB_WHCI=m
@@ -3702,9 +3721,13 @@ CONFIG_LEDS_WRAP=m
3702CONFIG_LEDS_ALIX2=m 3721CONFIG_LEDS_ALIX2=m
3703CONFIG_LEDS_PCA9532=m 3722CONFIG_LEDS_PCA9532=m
3704CONFIG_LEDS_GPIO=m 3723CONFIG_LEDS_GPIO=m
3724CONFIG_LEDS_GPIO_PLATFORM=y
3725CONFIG_LEDS_LP5521=m
3705CONFIG_LEDS_CLEVO_MAIL=m 3726CONFIG_LEDS_CLEVO_MAIL=m
3706CONFIG_LEDS_PCA955X=m 3727CONFIG_LEDS_PCA955X=m
3707CONFIG_LEDS_WM8350=m 3728CONFIG_LEDS_WM8350=m
3729CONFIG_LEDS_DAC124S085=m
3730CONFIG_LEDS_BD2802=m
3708 3731
3709# 3732#
3710# LED Triggers 3733# LED Triggers
@@ -3714,7 +3737,12 @@ CONFIG_LEDS_TRIGGER_TIMER=m
3714CONFIG_LEDS_TRIGGER_IDE_DISK=y 3737CONFIG_LEDS_TRIGGER_IDE_DISK=y
3715CONFIG_LEDS_TRIGGER_HEARTBEAT=m 3738CONFIG_LEDS_TRIGGER_HEARTBEAT=m
3716CONFIG_LEDS_TRIGGER_BACKLIGHT=m 3739CONFIG_LEDS_TRIGGER_BACKLIGHT=m
3740CONFIG_LEDS_TRIGGER_GPIO=m
3717CONFIG_LEDS_TRIGGER_DEFAULT_ON=m 3741CONFIG_LEDS_TRIGGER_DEFAULT_ON=m
3742
3743#
3744# iptables trigger is under Netfilter config (LED target)
3745#
3718CONFIG_ACCESSIBILITY=y 3746CONFIG_ACCESSIBILITY=y
3719# CONFIG_A11Y_BRAILLE_CONSOLE is not set 3747# CONFIG_A11Y_BRAILLE_CONSOLE is not set
3720CONFIG_INFINIBAND=m 3748CONFIG_INFINIBAND=m
@@ -3809,11 +3837,13 @@ CONFIG_UIO_CIF=m
3809CONFIG_UIO_PDRV=m 3837CONFIG_UIO_PDRV=m
3810CONFIG_UIO_PDRV_GENIRQ=m 3838CONFIG_UIO_PDRV_GENIRQ=m
3811CONFIG_UIO_SMX=m 3839CONFIG_UIO_SMX=m
3840CONFIG_UIO_AEC=m
3812CONFIG_UIO_SERCOS3=m 3841CONFIG_UIO_SERCOS3=m
3813# CONFIG_STAGING is not set 3842# CONFIG_STAGING is not set
3814CONFIG_X86_PLATFORM_DEVICES=y 3843CONFIG_X86_PLATFORM_DEVICES=y
3815CONFIG_ACER_WMI=m 3844CONFIG_ACER_WMI=m
3816CONFIG_ASUS_LAPTOP=m 3845CONFIG_ASUS_LAPTOP=m
3846CONFIG_DELL_WMI=m
3817CONFIG_FUJITSU_LAPTOP=m 3847CONFIG_FUJITSU_LAPTOP=m
3818# CONFIG_FUJITSU_LAPTOP_DEBUG is not set 3848# CONFIG_FUJITSU_LAPTOP_DEBUG is not set
3819CONFIG_TC1100_WMI=m 3849CONFIG_TC1100_WMI=m
@@ -3826,6 +3856,7 @@ CONFIG_SONY_LAPTOP=m
3826CONFIG_THINKPAD_ACPI=m 3856CONFIG_THINKPAD_ACPI=m
3827# CONFIG_THINKPAD_ACPI_DEBUGFACILITIES is not set 3857# CONFIG_THINKPAD_ACPI_DEBUGFACILITIES is not set
3828# CONFIG_THINKPAD_ACPI_DEBUG is not set 3858# CONFIG_THINKPAD_ACPI_DEBUG is not set
3859# CONFIG_THINKPAD_ACPI_UNSAFE_LEDS is not set
3829CONFIG_THINKPAD_ACPI_BAY=y 3860CONFIG_THINKPAD_ACPI_BAY=y
3830CONFIG_THINKPAD_ACPI_VIDEO=y 3861CONFIG_THINKPAD_ACPI_VIDEO=y
3831CONFIG_THINKPAD_ACPI_HOTKEY_POLL=y 3862CONFIG_THINKPAD_ACPI_HOTKEY_POLL=y
@@ -3855,6 +3886,7 @@ CONFIG_EXT2_FS_POSIX_ACL=y
3855CONFIG_EXT2_FS_SECURITY=y 3886CONFIG_EXT2_FS_SECURITY=y
3856CONFIG_EXT2_FS_XIP=y 3887CONFIG_EXT2_FS_XIP=y
3857CONFIG_EXT3_FS=m 3888CONFIG_EXT3_FS=m
3889# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set
3858CONFIG_EXT3_FS_XATTR=y 3890CONFIG_EXT3_FS_XATTR=y
3859CONFIG_EXT3_FS_POSIX_ACL=y 3891CONFIG_EXT3_FS_POSIX_ACL=y
3860CONFIG_EXT3_FS_SECURITY=y 3892CONFIG_EXT3_FS_SECURITY=y
@@ -3879,14 +3911,13 @@ CONFIG_JFS_SECURITY=y
3879# CONFIG_JFS_DEBUG is not set 3911# CONFIG_JFS_DEBUG is not set
3880CONFIG_JFS_STATISTICS=y 3912CONFIG_JFS_STATISTICS=y
3881CONFIG_FS_POSIX_ACL=y 3913CONFIG_FS_POSIX_ACL=y
3882CONFIG_FILE_LOCKING=y
3883CONFIG_XFS_FS=m 3914CONFIG_XFS_FS=m
3884CONFIG_XFS_QUOTA=y 3915CONFIG_XFS_QUOTA=y
3885CONFIG_XFS_POSIX_ACL=y 3916CONFIG_XFS_POSIX_ACL=y
3886CONFIG_XFS_RT=y 3917CONFIG_XFS_RT=y
3887# CONFIG_XFS_DEBUG is not set 3918# CONFIG_XFS_DEBUG is not set
3888CONFIG_GFS2_FS=m 3919CONFIG_GFS2_FS=m
3889CONFIG_GFS2_FS_LOCKING_DLM=m 3920CONFIG_GFS2_FS_LOCKING_DLM=y
3890CONFIG_OCFS2_FS=m 3921CONFIG_OCFS2_FS=m
3891CONFIG_OCFS2_FS_O2CB=m 3922CONFIG_OCFS2_FS_O2CB=m
3892CONFIG_OCFS2_FS_USERSPACE_CLUSTER=m 3923CONFIG_OCFS2_FS_USERSPACE_CLUSTER=m
@@ -3896,6 +3927,7 @@ CONFIG_OCFS2_DEBUG_MASKLOG=y
3896CONFIG_OCFS2_FS_POSIX_ACL=y 3927CONFIG_OCFS2_FS_POSIX_ACL=y
3897CONFIG_BTRFS_FS=m 3928CONFIG_BTRFS_FS=m
3898CONFIG_BTRFS_FS_POSIX_ACL=y 3929CONFIG_BTRFS_FS_POSIX_ACL=y
3930CONFIG_FILE_LOCKING=y
3899# CONFIG_DNOTIFY is not set 3931# CONFIG_DNOTIFY is not set
3900CONFIG_INOTIFY=y 3932CONFIG_INOTIFY=y
3901CONFIG_INOTIFY_USER=y 3933CONFIG_INOTIFY_USER=y
@@ -3911,6 +3943,17 @@ CONFIG_AUTOFS4_FS=m
3911CONFIG_FUSE_FS=m 3943CONFIG_FUSE_FS=m
3912 3944
3913# 3945#
3946# Caches
3947#
3948CONFIG_FSCACHE=m
3949CONFIG_FSCACHE_STATS=y
3950CONFIG_FSCACHE_HISTOGRAM=y
3951# CONFIG_FSCACHE_DEBUG is not set
3952CONFIG_CACHEFILES=m
3953# CONFIG_CACHEFILES_DEBUG is not set
3954# CONFIG_CACHEFILES_HISTOGRAM is not set
3955
3956#
3914# CD-ROM/DVD Filesystems 3957# CD-ROM/DVD Filesystems
3915# 3958#
3916CONFIG_ISO9660_FS=m 3959CONFIG_ISO9660_FS=m
@@ -3986,15 +4029,23 @@ CONFIG_OMFS_FS=m
3986CONFIG_HPFS_FS=m 4029CONFIG_HPFS_FS=m
3987CONFIG_QNX4FS_FS=m 4030CONFIG_QNX4FS_FS=m
3988CONFIG_ROMFS_FS=m 4031CONFIG_ROMFS_FS=m
4032CONFIG_ROMFS_BACKED_BY_BLOCK=y
4033# CONFIG_ROMFS_BACKED_BY_MTD is not set
4034# CONFIG_ROMFS_BACKED_BY_BOTH is not set
4035CONFIG_ROMFS_ON_BLOCK=y
3989CONFIG_SYSV_FS=m 4036CONFIG_SYSV_FS=m
3990CONFIG_UFS_FS=m 4037CONFIG_UFS_FS=m
3991# CONFIG_UFS_FS_WRITE is not set 4038# CONFIG_UFS_FS_WRITE is not set
3992# CONFIG_UFS_DEBUG is not set 4039# CONFIG_UFS_DEBUG is not set
4040CONFIG_EXOFS_FS=m
4041# CONFIG_EXOFS_DEBUG is not set
4042CONFIG_NILFS2_FS=m
3993CONFIG_NETWORK_FILESYSTEMS=y 4043CONFIG_NETWORK_FILESYSTEMS=y
3994CONFIG_NFS_FS=m 4044CONFIG_NFS_FS=m
3995CONFIG_NFS_V3=y 4045CONFIG_NFS_V3=y
3996# CONFIG_NFS_V3_ACL is not set 4046# CONFIG_NFS_V3_ACL is not set
3997CONFIG_NFS_V4=y 4047CONFIG_NFS_V4=y
4048# CONFIG_NFS_FSCACHE is not set
3998CONFIG_NFSD=m 4049CONFIG_NFSD=m
3999CONFIG_NFSD_V3=y 4050CONFIG_NFSD_V3=y
4000# CONFIG_NFSD_V3_ACL is not set 4051# CONFIG_NFSD_V3_ACL is not set
@@ -4006,7 +4057,6 @@ CONFIG_NFS_COMMON=y
4006CONFIG_SUNRPC=m 4057CONFIG_SUNRPC=m
4007CONFIG_SUNRPC_GSS=m 4058CONFIG_SUNRPC_GSS=m
4008CONFIG_SUNRPC_XPRT_RDMA=m 4059CONFIG_SUNRPC_XPRT_RDMA=m
4009# CONFIG_SUNRPC_REGISTER_V4 is not set
4010CONFIG_RPCSEC_GSS_KRB5=m 4060CONFIG_RPCSEC_GSS_KRB5=m
4011CONFIG_RPCSEC_GSS_SPKM3=m 4061CONFIG_RPCSEC_GSS_SPKM3=m
4012CONFIG_SMB_FS=m 4062CONFIG_SMB_FS=m
@@ -4018,8 +4068,8 @@ CONFIG_CIFS=m
4018CONFIG_CIFS_XATTR=y 4068CONFIG_CIFS_XATTR=y
4019CONFIG_CIFS_POSIX=y 4069CONFIG_CIFS_POSIX=y
4020# CONFIG_CIFS_DEBUG2 is not set 4070# CONFIG_CIFS_DEBUG2 is not set
4021CONFIG_CIFS_EXPERIMENTAL=y
4022# CONFIG_CIFS_DFS_UPCALL is not set 4071# CONFIG_CIFS_DFS_UPCALL is not set
4072CONFIG_CIFS_EXPERIMENTAL=y
4023CONFIG_NCP_FS=m 4073CONFIG_NCP_FS=m
4024# CONFIG_NCPFS_PACKET_SIGNING is not set 4074# CONFIG_NCPFS_PACKET_SIGNING is not set
4025# CONFIG_NCPFS_IOCTL_LOCKING is not set 4075# CONFIG_NCPFS_IOCTL_LOCKING is not set
@@ -4032,6 +4082,7 @@ CONFIG_NCP_FS=m
4032CONFIG_CODA_FS=m 4082CONFIG_CODA_FS=m
4033CONFIG_AFS_FS=m 4083CONFIG_AFS_FS=m
4034# CONFIG_AFS_DEBUG is not set 4084# CONFIG_AFS_DEBUG is not set
4085# CONFIG_AFS_FSCACHE is not set
4035CONFIG_9P_FS=m 4086CONFIG_9P_FS=m
4036 4087
4037# 4088#
@@ -4108,14 +4159,28 @@ CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
4108CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=y 4159CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=y
4109CONFIG_HAVE_DYNAMIC_FTRACE=y 4160CONFIG_HAVE_DYNAMIC_FTRACE=y
4110CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y 4161CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
4162CONFIG_HAVE_FTRACE_SYSCALLS=y
4163CONFIG_TRACING_SUPPORT=y
4111 4164
4112# 4165#
4113# Tracers 4166# Tracers
4114# 4167#
4168# CONFIG_IRQSOFF_TRACER is not set
4115# CONFIG_SYSPROF_TRACER is not set 4169# CONFIG_SYSPROF_TRACER is not set
4170# CONFIG_SCHED_TRACER is not set
4171# CONFIG_CONTEXT_SWITCH_TRACER is not set
4172# CONFIG_EVENT_TRACER is not set
4173# CONFIG_FTRACE_SYSCALLS is not set
4174# CONFIG_BOOT_TRACER is not set
4175# CONFIG_TRACE_BRANCH_PROFILING is not set
4176# CONFIG_POWER_TRACER is not set
4177# CONFIG_KMEMTRACE is not set
4178# CONFIG_WORKQUEUE_TRACER is not set
4179# CONFIG_BLK_DEV_IO_TRACE is not set
4180# CONFIG_MMIOTRACE is not set
4116# CONFIG_PROVIDE_OHCI1394_DMA_INIT is not set 4181# CONFIG_PROVIDE_OHCI1394_DMA_INIT is not set
4117# CONFIG_FIREWIRE_OHCI_REMOTE_DMA is not set 4182# CONFIG_FIREWIRE_OHCI_REMOTE_DMA is not set
4118# CONFIG_DYNAMIC_PRINTK_DEBUG is not set 4183# CONFIG_DMA_API_DEBUG is not set
4119# CONFIG_SAMPLES is not set 4184# CONFIG_SAMPLES is not set
4120CONFIG_HAVE_ARCH_KGDB=y 4185CONFIG_HAVE_ARCH_KGDB=y
4121CONFIG_STRICT_DEVMEM=y 4186CONFIG_STRICT_DEVMEM=y
@@ -4255,6 +4320,7 @@ CONFIG_PAX_SEGMEXEC=y
4255# CONFIG_PAX_EMUTRAMP is not set 4320# CONFIG_PAX_EMUTRAMP is not set
4256CONFIG_PAX_MPROTECT=y 4321CONFIG_PAX_MPROTECT=y
4257CONFIG_PAX_NOELFRELOCS=y 4322CONFIG_PAX_NOELFRELOCS=y
4323CONFIG_PAX_KERNEXEC=y
4258 4324
4259# 4325#
4260# Address Space Layout Randomization 4326# Address Space Layout Randomization
@@ -4277,7 +4343,8 @@ CONFIG_SECURITYFS=y
4277# CONFIG_SECURITY_NETWORK is not set 4343# CONFIG_SECURITY_NETWORK is not set
4278# CONFIG_SECURITY_PATH is not set 4344# CONFIG_SECURITY_PATH is not set
4279CONFIG_SECURITY_FILE_CAPABILITIES=y 4345CONFIG_SECURITY_FILE_CAPABILITIES=y
4280CONFIG_SECURITY_DEFAULT_MMAP_MIN_ADDR=0 4346# CONFIG_SECURITY_TOMOYO is not set
4347# CONFIG_IMA is not set
4281CONFIG_XOR_BLOCKS=m 4348CONFIG_XOR_BLOCKS=m
4282CONFIG_ASYNC_CORE=m 4349CONFIG_ASYNC_CORE=m
4283CONFIG_ASYNC_MEMCPY=m 4350CONFIG_ASYNC_MEMCPY=m
@@ -4298,10 +4365,12 @@ CONFIG_CRYPTO_HASH=y
4298CONFIG_CRYPTO_HASH2=y 4365CONFIG_CRYPTO_HASH2=y
4299CONFIG_CRYPTO_RNG=m 4366CONFIG_CRYPTO_RNG=m
4300CONFIG_CRYPTO_RNG2=y 4367CONFIG_CRYPTO_RNG2=y
4368CONFIG_CRYPTO_PCOMP=y
4301CONFIG_CRYPTO_MANAGER=m 4369CONFIG_CRYPTO_MANAGER=m
4302CONFIG_CRYPTO_MANAGER2=y 4370CONFIG_CRYPTO_MANAGER2=y
4303CONFIG_CRYPTO_GF128MUL=m 4371CONFIG_CRYPTO_GF128MUL=m
4304CONFIG_CRYPTO_NULL=m 4372CONFIG_CRYPTO_NULL=m
4373CONFIG_CRYPTO_WORKQUEUE=y
4305CONFIG_CRYPTO_CRYPTD=m 4374CONFIG_CRYPTO_CRYPTD=m
4306CONFIG_CRYPTO_AUTHENC=m 4375CONFIG_CRYPTO_AUTHENC=m
4307CONFIG_CRYPTO_TEST=m 4376CONFIG_CRYPTO_TEST=m
@@ -4375,6 +4444,7 @@ CONFIG_CRYPTO_TWOFISH_586=m
4375# Compression 4444# Compression
4376# 4445#
4377CONFIG_CRYPTO_DEFLATE=m 4446CONFIG_CRYPTO_DEFLATE=m
4447CONFIG_CRYPTO_ZLIB=m
4378CONFIG_CRYPTO_LZO=m 4448CONFIG_CRYPTO_LZO=m
4379 4449
4380# 4450#
@@ -4394,11 +4464,13 @@ CONFIG_VIRTUALIZATION=y
4394CONFIG_KVM=m 4464CONFIG_KVM=m
4395CONFIG_KVM_INTEL=m 4465CONFIG_KVM_INTEL=m
4396CONFIG_KVM_AMD=m 4466CONFIG_KVM_AMD=m
4467# CONFIG_KVM_TRACE is not set
4397CONFIG_LGUEST=m 4468CONFIG_LGUEST=m
4398CONFIG_VIRTIO=y 4469CONFIG_VIRTIO=m
4399CONFIG_VIRTIO_RING=y 4470CONFIG_VIRTIO_RING=m
4400CONFIG_VIRTIO_PCI=m 4471CONFIG_VIRTIO_PCI=m
4401CONFIG_VIRTIO_BALLOON=m 4472CONFIG_VIRTIO_BALLOON=m
4473# CONFIG_BINARY_PRINTF is not set
4402 4474
4403# 4475#
4404# Library routines 4476# Library routines
@@ -4414,10 +4486,13 @@ CONFIG_CRC_ITU_T=m
4414CONFIG_CRC32=m 4486CONFIG_CRC32=m
4415CONFIG_CRC7=m 4487CONFIG_CRC7=m
4416CONFIG_LIBCRC32C=m 4488CONFIG_LIBCRC32C=m
4417CONFIG_ZLIB_INFLATE=m 4489CONFIG_ZLIB_INFLATE=y
4418CONFIG_ZLIB_DEFLATE=m 4490CONFIG_ZLIB_DEFLATE=m
4419CONFIG_LZO_COMPRESS=m 4491CONFIG_LZO_COMPRESS=m
4420CONFIG_LZO_DECOMPRESS=m 4492CONFIG_LZO_DECOMPRESS=m
4493CONFIG_DECOMPRESS_GZIP=y
4494CONFIG_DECOMPRESS_BZIP2=y
4495CONFIG_DECOMPRESS_LZMA=y
4421CONFIG_GENERIC_ALLOCATOR=y 4496CONFIG_GENERIC_ALLOCATOR=y
4422CONFIG_REED_SOLOMON=m 4497CONFIG_REED_SOLOMON=m
4423CONFIG_REED_SOLOMON_DEC16=y 4498CONFIG_REED_SOLOMON_DEC16=y
@@ -4425,8 +4500,8 @@ CONFIG_TEXTSEARCH=y
4425CONFIG_TEXTSEARCH_KMP=m 4500CONFIG_TEXTSEARCH_KMP=m
4426CONFIG_TEXTSEARCH_BM=m 4501CONFIG_TEXTSEARCH_BM=m
4427CONFIG_TEXTSEARCH_FSM=m 4502CONFIG_TEXTSEARCH_FSM=m
4428CONFIG_PLIST=y
4429CONFIG_HAS_IOMEM=y 4503CONFIG_HAS_IOMEM=y
4430CONFIG_HAS_IOPORT=y 4504CONFIG_HAS_IOPORT=y
4431CONFIG_HAS_DMA=y 4505CONFIG_HAS_DMA=y
4432CONFIG_CHECK_SIGNATURE=y 4506CONFIG_CHECK_SIGNATURE=y
4507CONFIG_NLATTR=y
diff --git a/main/linux-grsec/linux-nbma-mroute-v4-2.6.30.diff b/main/linux-grsec/linux-nbma-mroute-v4-2.6.30.diff
new file mode 100644
index 0000000000..636d807a53
--- /dev/null
+++ b/main/linux-grsec/linux-nbma-mroute-v4-2.6.30.diff
@@ -0,0 +1,258 @@
1diff --git a/include/linux/mroute.h b/include/linux/mroute.h
2index 0d45b4e..406ef6f 100644
3--- a/include/linux/mroute.h
4+++ b/include/linux/mroute.h
5@@ -33,7 +33,7 @@
6 #define SIOCGETSGCNT (SIOCPROTOPRIVATE+1)
7 #define SIOCGETRPF (SIOCPROTOPRIVATE+2)
8
9-#define MAXVIFS 32
10+#define MAXVIFS 256
11 typedef unsigned long vifbitmap_t; /* User mode code depends on this lot */
12 typedef unsigned short vifi_t;
13 #define ALL_VIFS ((vifi_t)(-1))
14@@ -66,6 +66,7 @@ struct vifctl {
15 #define VIFF_TUNNEL 0x1 /* IPIP tunnel */
16 #define VIFF_SRCRT 0x2 /* NI */
17 #define VIFF_REGISTER 0x4 /* register vif */
18+#define VIFF_NBMA 0x10
19
20 /*
21 * Cache manipulation structures for mrouted and PIMd
22diff --git a/net/ipv4/ipmr.c b/net/ipv4/ipmr.c
23index 13e9dd3..43c988b 100644
24--- a/net/ipv4/ipmr.c
25+++ b/net/ipv4/ipmr.c
26@@ -105,6 +105,31 @@ static struct net_protocol pim_protocol;
27
28 static struct timer_list ipmr_expire_timer;
29
30+static __be32 ipmr_get_skb_nbma(struct sk_buff *skb)
31+{
32+ union {
33+ char addr[MAX_ADDR_LEN];
34+ __be32 inaddr;
35+ } u;
36+
37+ if (dev_parse_header(skb, u.addr) != 4)
38+ return INADDR_ANY;
39+
40+ return u.inaddr;
41+}
42+
43+static int ip_mr_match_vif_skb(struct vif_device *vif, struct sk_buff *skb)
44+{
45+ if (vif->dev != skb->dev)
46+ return 0;
47+
48+ if (vif->flags & VIFF_NBMA)
49+ return ipmr_get_skb_nbma(skb) == vif->remote;
50+
51+ return 1;
52+}
53+
54+
55 /* Service routines creating virtual interfaces: DVMRP tunnels and PIMREG */
56
57 static void ipmr_del_tunnel(struct net_device *dev, struct vifctl *v)
58@@ -470,6 +495,7 @@ static int vif_add(struct net *net, struct vifctl *vifc, int mrtsock)
59 return err;
60 }
61 break;
62+ case VIFF_NBMA:
63 case 0:
64 dev = ip_dev_find(net, vifc->vifc_lcl_addr.s_addr);
65 if (!dev)
66@@ -504,7 +530,7 @@ static int vif_add(struct net *net, struct vifctl *vifc, int mrtsock)
67 v->pkt_in = 0;
68 v->pkt_out = 0;
69 v->link = dev->ifindex;
70- if (v->flags&(VIFF_TUNNEL|VIFF_REGISTER))
71+ if (v->flags&(VIFF_TUNNEL|VIFF_REGISTER|VIFF_NBMA))
72 v->link = dev->iflink;
73
74 /* And finish update writing critical data */
75@@ -1212,12 +1238,15 @@ static inline int ipmr_forward_finish(struct sk_buff *skb)
76 {
77 struct ip_options * opt = &(IPCB(skb)->opt);
78
79- IP_INC_STATS_BH(dev_net(skb->dst->dev), IPSTATS_MIB_OUTFORWDATAGRAMS);
80+ IP_INC_STATS_BH(dev_net(skb->dev), IPSTATS_MIB_OUTFORWDATAGRAMS);
81
82 if (unlikely(opt->optlen))
83 ip_forward_options(skb);
84
85- return dst_output(skb);
86+ if (skb->dst != NULL)
87+ return dst_output(skb);
88+ else
89+ return dev_queue_xmit(skb);
90 }
91
92 /*
93@@ -1230,7 +1259,8 @@ static void ipmr_queue_xmit(struct sk_buff *skb, struct mfc_cache *c, int vifi)
94 const struct iphdr *iph = ip_hdr(skb);
95 struct vif_device *vif = &net->ipv4.vif_table[vifi];
96 struct net_device *dev;
97- struct rtable *rt;
98+ struct net_device *fromdev = skb->dev;
99+ struct rtable *rt = NULL;
100 int encap = 0;
101
102 if (vif->dev == NULL)
103@@ -1257,6 +1287,19 @@ static void ipmr_queue_xmit(struct sk_buff *skb, struct mfc_cache *c, int vifi)
104 if (ip_route_output_key(net, &rt, &fl))
105 goto out_free;
106 encap = sizeof(struct iphdr);
107+ dev = rt->u.dst.dev;
108+ } else if (vif->flags&VIFF_NBMA) {
109+ /* Fixme, we should take tunnel source address from the
110+ * tunnel device binding if it exists */
111+ struct flowi fl = { .oif = vif->link,
112+ .nl_u = { .ip4_u =
113+ { .daddr = vif->remote,
114+ .tos = RT_TOS(iph->tos) } },
115+ .proto = IPPROTO_GRE };
116+ if (ip_route_output_key(&init_net, &rt, &fl))
117+ goto out_free;
118+ encap = LL_RESERVED_SPACE(rt->u.dst.dev);
119+ dev = vif->dev;
120 } else {
121 struct flowi fl = { .oif = vif->link,
122 .nl_u = { .ip4_u =
123@@ -1265,34 +1308,39 @@ static void ipmr_queue_xmit(struct sk_buff *skb, struct mfc_cache *c, int vifi)
124 .proto = IPPROTO_IPIP };
125 if (ip_route_output_key(net, &rt, &fl))
126 goto out_free;
127+ dev = rt->u.dst.dev;
128 }
129
130- dev = rt->u.dst.dev;
131+ if (!(vif->flags & VIFF_NBMA)) {
132+ if (skb->len+encap > dst_mtu(&rt->u.dst) && (ntohs(iph->frag_off) & IP_DF)) {
133+ /* Do not fragment multicasts. Alas, IPv4 does not
134+ allow to send ICMP, so that packets will disappear
135+ to blackhole.
136+ */
137
138- if (skb->len+encap > dst_mtu(&rt->u.dst) && (ntohs(iph->frag_off) & IP_DF)) {
139- /* Do not fragment multicasts. Alas, IPv4 does not
140- allow to send ICMP, so that packets will disappear
141- to blackhole.
142- */
143-
144- IP_INC_STATS_BH(dev_net(dev), IPSTATS_MIB_FRAGFAILS);
145- ip_rt_put(rt);
146- goto out_free;
147+ IP_INC_STATS_BH(dev_net(dev), IPSTATS_MIB_FRAGFAILS);
148+ goto out_free_rt;
149+ }
150 }
151
152 encap += LL_RESERVED_SPACE(dev) + rt->u.dst.header_len;
153
154- if (skb_cow(skb, encap)) {
155- ip_rt_put(rt);
156- goto out_free;
157- }
158+ if (skb_cow(skb, encap))
159+ goto out_free_rt;
160
161 vif->pkt_out++;
162 vif->bytes_out += skb->len;
163
164 dst_release(skb->dst);
165- skb->dst = &rt->u.dst;
166+ if (vif->flags & VIFF_NBMA) {
167+ ip_rt_put(rt);
168+ skb->dst = NULL;
169+ rt = NULL;
170+ } else {
171+ skb->dst = &rt->u.dst;
172+ }
173 ip_decrease_ttl(ip_hdr(skb));
174+ skb->dev = dev;
175
176 /* FIXME: forward and output firewalls used to be called here.
177 * What do we do with netfilter? -- RR */
178@@ -1301,6 +1349,10 @@ static void ipmr_queue_xmit(struct sk_buff *skb, struct mfc_cache *c, int vifi)
179 /* FIXME: extra output firewall step used to be here. --RR */
180 vif->dev->stats.tx_packets++;
181 vif->dev->stats.tx_bytes += skb->len;
182+ } else if (vif->flags & VIFF_NBMA) {
183+ if (dev_hard_header(skb, dev, ntohs(skb->protocol),
184+ &vif->remote, NULL, 4) < 0)
185+ goto out_free_rt;
186 }
187
188 IPCB(skb)->flags |= IPSKB_FORWARDED;
189@@ -1316,21 +1368,30 @@ static void ipmr_queue_xmit(struct sk_buff *skb, struct mfc_cache *c, int vifi)
190 * not mrouter) cannot join to more than one interface - it will
191 * result in receiving multiple packets.
192 */
193- NF_HOOK(PF_INET, NF_INET_FORWARD, skb, skb->dev, dev,
194+ NF_HOOK(PF_INET, NF_INET_FORWARD, skb, fromdev, dev,
195 ipmr_forward_finish);
196 return;
197
198+out_free_rt:
199+ if (rt != NULL)
200+ ip_rt_put(rt);
201 out_free:
202 kfree_skb(skb);
203 return;
204 }
205
206-static int ipmr_find_vif(struct net_device *dev)
207+static int ipmr_find_vif(struct net_device *dev, __be32 nbma_origin)
208 {
209 struct net *net = dev_net(dev);
210 int ct;
211 for (ct = net->ipv4.maxvif-1; ct >= 0; ct--) {
212- if (net->ipv4.vif_table[ct].dev == dev)
213+ if (net->ipv4.vif_table[ct].dev != dev)
214+ continue;
215+
216+ if (net->ipv4.vif_table[ct].flags & VIFF_NBMA) {
217+ if (net->ipv4.vif_table[ct].remote == nbma_origin)
218+ break;
219+ } else if (nbma_origin == INADDR_ANY)
220 break;
221 }
222 return ct;
223@@ -1351,7 +1412,7 @@ static int ip_mr_forward(struct sk_buff *skb, struct mfc_cache *cache, int local
224 /*
225 * Wrong interface: drop packet and (maybe) send PIM assert.
226 */
227- if (net->ipv4.vif_table[vif].dev != skb->dev) {
228+ if (!ip_mr_match_vif_skb(&net->ipv4.vif_table[vif], skb)) {
229 int true_vifi;
230
231 if (skb->rtable->fl.iif == 0) {
232@@ -1370,7 +1431,7 @@ static int ip_mr_forward(struct sk_buff *skb, struct mfc_cache *cache, int local
233 }
234
235 cache->mfc_un.res.wrong_if++;
236- true_vifi = ipmr_find_vif(skb->dev);
237+ true_vifi = ipmr_find_vif(skb->dev, ipmr_get_skb_nbma(skb));
238
239 if (true_vifi >= 0 && net->ipv4.mroute_do_assert &&
240 /* pimsm uses asserts, when switching from RPT to SPT,
241@@ -1479,7 +1540,7 @@ int ip_mr_input(struct sk_buff *skb)
242 skb = skb2;
243 }
244
245- vif = ipmr_find_vif(skb->dev);
246+ vif = ipmr_find_vif(skb->dev, ipmr_get_skb_nbma(skb));
247 if (vif >= 0) {
248 int err = ipmr_cache_unresolved(net, vif, skb);
249 read_unlock(&mrt_lock);
250@@ -1663,7 +1724,7 @@ int ipmr_get_route(struct net *net,
251 }
252
253 dev = skb->dev;
254- if (dev == NULL || (vif = ipmr_find_vif(dev)) < 0) {
255+ if (dev == NULL || (vif = ipmr_find_vif(dev, INADDR_ANY)) < 0) {
256 read_unlock(&mrt_lock);
257 return -ENODEV;
258 }