aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2012-03-15 20:16:22 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2012-03-15 20:16:22 -0400
commit0c4d0670f6e54f8507c30c01928cc9ff630ca497 (patch)
tree66a417d87d670f4068ac17c5ee19d21ddf7e95e1
parent7c32442ff846b7ea8804785e90b81c1118115a5c (diff)
parentcf2b94daab9f3d21b0a393bef91292622f6a8ca4 (diff)
Merge branch 'akpm' (Andrew's patch-bomb)
Merge patches from Andrew Morton: "Nine patches - some bug fixes and some MAINTAINERS fiddling." * emailed from Andrew Morton <akpm@linux-foundation.org>: drivers/video/backlight/s6e63m0.c: fix corruption storing gamma mode MAINTAINERS: add entry for exynos mipi display drivers MAINTAINERS: fix link to Gustavo Padovans tree MAINTAINERS: add Johan to Bluetooth maintainers MAINTAINERS: Gustavo has moved prctl: use CAP_SYS_RESOURCE for PR_SET_MM option rapidio/tsi721: fix bug in register offset definitions MAINTAINERS: update ST's Mailing list for SPEAr memcg: free mem_cgroup by RCU to fix oops
-rw-r--r--MAINTAINERS32
-rw-r--r--drivers/rapidio/devices/tsi721.h30
-rw-r--r--drivers/video/backlight/s6e63m0.c2
-rw-r--r--kernel/sys.c2
-rw-r--r--mm/memcontrol.c53
5 files changed, 92 insertions, 27 deletions
diff --git a/MAINTAINERS b/MAINTAINERS
index 95e4e43a12b4..03e0b4896bc6 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -1513,19 +1513,23 @@ F: drivers/mtd/devices/block2mtd.c
1513 1513
1514BLUETOOTH DRIVERS 1514BLUETOOTH DRIVERS
1515M: Marcel Holtmann <marcel@holtmann.org> 1515M: Marcel Holtmann <marcel@holtmann.org>
1516M: "Gustavo F. Padovan" <padovan@profusion.mobi> 1516M: Gustavo Padovan <gustavo@padovan.org>
1517M: Johan Hedberg <johan.hedberg@gmail.com>
1517L: linux-bluetooth@vger.kernel.org 1518L: linux-bluetooth@vger.kernel.org
1518W: http://www.bluez.org/ 1519W: http://www.bluez.org/
1519T: git git://git.kernel.org/pub/scm/linux/kernel/git/padovan/bluetooth-2.6.git 1520T: git git://git.kernel.org/pub/scm/linux/kernel/git/padovan/bluetooth.git
1521T: git git://git.kernel.org/pub/scm/linux/kernel/git/jh/bluetooth.git
1520S: Maintained 1522S: Maintained
1521F: drivers/bluetooth/ 1523F: drivers/bluetooth/
1522 1524
1523BLUETOOTH SUBSYSTEM 1525BLUETOOTH SUBSYSTEM
1524M: Marcel Holtmann <marcel@holtmann.org> 1526M: Marcel Holtmann <marcel@holtmann.org>
1525M: "Gustavo F. Padovan" <padovan@profusion.mobi> 1527M: Gustavo Padovan <gustavo@padovan.org>
1528M: Johan Hedberg <johan.hedberg@gmail.com>
1526L: linux-bluetooth@vger.kernel.org 1529L: linux-bluetooth@vger.kernel.org
1527W: http://www.bluez.org/ 1530W: http://www.bluez.org/
1528T: git git://git.kernel.org/pub/scm/linux/kernel/git/padovan/bluetooth-2.6.git 1531T: git git://git.kernel.org/pub/scm/linux/kernel/git/padovan/bluetooth.git
1532T: git git://git.kernel.org/pub/scm/linux/kernel/git/jh/bluetooth.git
1529S: Maintained 1533S: Maintained
1530F: net/bluetooth/ 1534F: net/bluetooth/
1531F: include/net/bluetooth/ 1535F: include/net/bluetooth/
@@ -2351,6 +2355,15 @@ S: Supported
2351F: drivers/gpu/drm/exynos 2355F: drivers/gpu/drm/exynos
2352F: include/drm/exynos* 2356F: include/drm/exynos*
2353 2357
2358EXYNOS MIPI DISPLAY DRIVERS
2359M: Inki Dae <inki.dae@samsung.com>
2360M: Donghwa Lee <dh09.lee@samsung.com>
2361M: Kyungmin Park <kyungmin.park@samsung.com>
2362L: linux-fbdev@vger.kernel.org
2363S: Maintained
2364F: drivers/video/exynos/exynos_mipi*
2365F: include/video/exynos_mipi*
2366
2354DSCC4 DRIVER 2367DSCC4 DRIVER
2355M: Francois Romieu <romieu@fr.zoreil.com> 2368M: Francois Romieu <romieu@fr.zoreil.com>
2356L: netdev@vger.kernel.org 2369L: netdev@vger.kernel.org
@@ -5859,6 +5872,7 @@ F: drivers/mmc/host/sdhci-s3c.c
5859 5872
5860SECURE DIGITAL HOST CONTROLLER INTERFACE (SDHCI) ST SPEAR DRIVER 5873SECURE DIGITAL HOST CONTROLLER INTERFACE (SDHCI) ST SPEAR DRIVER
5861M: Viresh Kumar <viresh.kumar@st.com> 5874M: Viresh Kumar <viresh.kumar@st.com>
5875L: spear-devel@list.st.com
5862L: linux-mmc@vger.kernel.org 5876L: linux-mmc@vger.kernel.org
5863S: Maintained 5877S: Maintained
5864F: drivers/mmc/host/sdhci-spear.c 5878F: drivers/mmc/host/sdhci-spear.c
@@ -6201,24 +6215,32 @@ F: drivers/tty/serial/sunzilog.h
6201 6215
6202SPEAR PLATFORM SUPPORT 6216SPEAR PLATFORM SUPPORT
6203M: Viresh Kumar <viresh.kumar@st.com> 6217M: Viresh Kumar <viresh.kumar@st.com>
6218L: spear-devel@list.st.com
6219L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
6204W: http://www.st.com/spear 6220W: http://www.st.com/spear
6205S: Maintained 6221S: Maintained
6206F: arch/arm/plat-spear/ 6222F: arch/arm/plat-spear/
6207 6223
6208SPEAR3XX MACHINE SUPPORT 6224SPEAR3XX MACHINE SUPPORT
6209M: Viresh Kumar <viresh.kumar@st.com> 6225M: Viresh Kumar <viresh.kumar@st.com>
6226L: spear-devel@list.st.com
6227L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
6210W: http://www.st.com/spear 6228W: http://www.st.com/spear
6211S: Maintained 6229S: Maintained
6212F: arch/arm/mach-spear3xx/ 6230F: arch/arm/mach-spear3xx/
6213 6231
6214SPEAR6XX MACHINE SUPPORT 6232SPEAR6XX MACHINE SUPPORT
6215M: Rajeev Kumar <rajeev-dlh.kumar@st.com> 6233M: Rajeev Kumar <rajeev-dlh.kumar@st.com>
6234L: spear-devel@list.st.com
6235L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
6216W: http://www.st.com/spear 6236W: http://www.st.com/spear
6217S: Maintained 6237S: Maintained
6218F: arch/arm/mach-spear6xx/ 6238F: arch/arm/mach-spear6xx/
6219 6239
6220SPEAR CLOCK FRAMEWORK SUPPORT 6240SPEAR CLOCK FRAMEWORK SUPPORT
6221M: Viresh Kumar <viresh.kumar@st.com> 6241M: Viresh Kumar <viresh.kumar@st.com>
6242L: spear-devel@list.st.com
6243L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
6222W: http://www.st.com/spear 6244W: http://www.st.com/spear
6223S: Maintained 6245S: Maintained
6224F: arch/arm/mach-spear*/clock.c 6246F: arch/arm/mach-spear*/clock.c
@@ -6227,6 +6249,8 @@ F: arch/arm/plat-spear/include/plat/clock.h
6227 6249
6228SPEAR PAD MULTIPLEXING SUPPORT 6250SPEAR PAD MULTIPLEXING SUPPORT
6229M: Viresh Kumar <viresh.kumar@st.com> 6251M: Viresh Kumar <viresh.kumar@st.com>
6252L: spear-devel@list.st.com
6253L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
6230W: http://www.st.com/spear 6254W: http://www.st.com/spear
6231S: Maintained 6255S: Maintained
6232F: arch/arm/plat-spear/include/plat/padmux.h 6256F: arch/arm/plat-spear/include/plat/padmux.h
diff --git a/drivers/rapidio/devices/tsi721.h b/drivers/rapidio/devices/tsi721.h
index 822e54c394d5..1c226b31af13 100644
--- a/drivers/rapidio/devices/tsi721.h
+++ b/drivers/rapidio/devices/tsi721.h
@@ -118,34 +118,34 @@
118 118
119#define TSI721_IDB_ENTRY_SIZE 64 119#define TSI721_IDB_ENTRY_SIZE 64
120 120
121#define TSI721_IDQ_CTL(x) (0x20000 + (x) * 1000) 121#define TSI721_IDQ_CTL(x) (0x20000 + (x) * 0x1000)
122#define TSI721_IDQ_SUSPEND 0x00000002 122#define TSI721_IDQ_SUSPEND 0x00000002
123#define TSI721_IDQ_INIT 0x00000001 123#define TSI721_IDQ_INIT 0x00000001
124 124
125#define TSI721_IDQ_STS(x) (0x20004 + (x) * 1000) 125#define TSI721_IDQ_STS(x) (0x20004 + (x) * 0x1000)
126#define TSI721_IDQ_RUN 0x00200000 126#define TSI721_IDQ_RUN 0x00200000
127 127
128#define TSI721_IDQ_MASK(x) (0x20008 + (x) * 1000) 128#define TSI721_IDQ_MASK(x) (0x20008 + (x) * 0x1000)
129#define TSI721_IDQ_MASK_MASK 0xffff0000 129#define TSI721_IDQ_MASK_MASK 0xffff0000
130#define TSI721_IDQ_MASK_PATT 0x0000ffff 130#define TSI721_IDQ_MASK_PATT 0x0000ffff
131 131
132#define TSI721_IDQ_RP(x) (0x2000c + (x) * 1000) 132#define TSI721_IDQ_RP(x) (0x2000c + (x) * 0x1000)
133#define TSI721_IDQ_RP_PTR 0x0007ffff 133#define TSI721_IDQ_RP_PTR 0x0007ffff
134 134
135#define TSI721_IDQ_WP(x) (0x20010 + (x) * 1000) 135#define TSI721_IDQ_WP(x) (0x20010 + (x) * 0x1000)
136#define TSI721_IDQ_WP_PTR 0x0007ffff 136#define TSI721_IDQ_WP_PTR 0x0007ffff
137 137
138#define TSI721_IDQ_BASEL(x) (0x20014 + (x) * 1000) 138#define TSI721_IDQ_BASEL(x) (0x20014 + (x) * 0x1000)
139#define TSI721_IDQ_BASEL_ADDR 0xffffffc0 139#define TSI721_IDQ_BASEL_ADDR 0xffffffc0
140#define TSI721_IDQ_BASEU(x) (0x20018 + (x) * 1000) 140#define TSI721_IDQ_BASEU(x) (0x20018 + (x) * 0x1000)
141#define TSI721_IDQ_SIZE(x) (0x2001c + (x) * 1000) 141#define TSI721_IDQ_SIZE(x) (0x2001c + (x) * 0x1000)
142#define TSI721_IDQ_SIZE_VAL(size) (__fls(size) - 4) 142#define TSI721_IDQ_SIZE_VAL(size) (__fls(size) - 4)
143#define TSI721_IDQ_SIZE_MIN 512 143#define TSI721_IDQ_SIZE_MIN 512
144#define TSI721_IDQ_SIZE_MAX (512 * 1024) 144#define TSI721_IDQ_SIZE_MAX (512 * 1024)
145 145
146#define TSI721_SR_CHINT(x) (0x20040 + (x) * 1000) 146#define TSI721_SR_CHINT(x) (0x20040 + (x) * 0x1000)
147#define TSI721_SR_CHINTE(x) (0x20044 + (x) * 1000) 147#define TSI721_SR_CHINTE(x) (0x20044 + (x) * 0x1000)
148#define TSI721_SR_CHINTSET(x) (0x20048 + (x) * 1000) 148#define TSI721_SR_CHINTSET(x) (0x20048 + (x) * 0x1000)
149#define TSI721_SR_CHINT_ODBOK 0x00000020 149#define TSI721_SR_CHINT_ODBOK 0x00000020
150#define TSI721_SR_CHINT_IDBQRCV 0x00000010 150#define TSI721_SR_CHINT_IDBQRCV 0x00000010
151#define TSI721_SR_CHINT_SUSP 0x00000008 151#define TSI721_SR_CHINT_SUSP 0x00000008
@@ -156,7 +156,7 @@
156 156
157#define TSI721_IBWIN_NUM 8 157#define TSI721_IBWIN_NUM 8
158 158
159#define TSI721_IBWINLB(x) (0x29000 + (x) * 20) 159#define TSI721_IBWINLB(x) (0x29000 + (x) * 0x20)
160#define TSI721_IBWINLB_BA 0xfffff000 160#define TSI721_IBWINLB_BA 0xfffff000
161#define TSI721_IBWINLB_WEN 0x00000001 161#define TSI721_IBWINLB_WEN 0x00000001
162 162
@@ -187,13 +187,13 @@
187 */ 187 */
188#define TSI721_OBWIN_NUM TSI721_PC2SR_WINS 188#define TSI721_OBWIN_NUM TSI721_PC2SR_WINS
189 189
190#define TSI721_OBWINLB(x) (0x40000 + (x) * 20) 190#define TSI721_OBWINLB(x) (0x40000 + (x) * 0x20)
191#define TSI721_OBWINLB_BA 0xffff8000 191#define TSI721_OBWINLB_BA 0xffff8000
192#define TSI721_OBWINLB_WEN 0x00000001 192#define TSI721_OBWINLB_WEN 0x00000001
193 193
194#define TSI721_OBWINUB(x) (0x40004 + (x) * 20) 194#define TSI721_OBWINUB(x) (0x40004 + (x) * 0x20)
195 195
196#define TSI721_OBWINSZ(x) (0x40008 + (x) * 20) 196#define TSI721_OBWINSZ(x) (0x40008 + (x) * 0x20)
197#define TSI721_OBWINSZ_SIZE 0x00001f00 197#define TSI721_OBWINSZ_SIZE 0x00001f00
198#define TSI721_OBWIN_SIZE(size) (__fls(size) - 15) 198#define TSI721_OBWIN_SIZE(size) (__fls(size) - 15)
199 199
diff --git a/drivers/video/backlight/s6e63m0.c b/drivers/video/backlight/s6e63m0.c
index e132157d8545..516db703dd24 100644
--- a/drivers/video/backlight/s6e63m0.c
+++ b/drivers/video/backlight/s6e63m0.c
@@ -690,7 +690,7 @@ static ssize_t s6e63m0_sysfs_store_gamma_mode(struct device *dev,
690 struct backlight_device *bd = NULL; 690 struct backlight_device *bd = NULL;
691 int brightness, rc; 691 int brightness, rc;
692 692
693 rc = strict_strtoul(buf, 0, (unsigned long *)&lcd->gamma_mode); 693 rc = kstrtouint(buf, 0, &lcd->gamma_mode);
694 if (rc < 0) 694 if (rc < 0)
695 return rc; 695 return rc;
696 696
diff --git a/kernel/sys.c b/kernel/sys.c
index 40701538fbd1..888d227fd195 100644
--- a/kernel/sys.c
+++ b/kernel/sys.c
@@ -1706,7 +1706,7 @@ static int prctl_set_mm(int opt, unsigned long addr,
1706 if (arg4 | arg5) 1706 if (arg4 | arg5)
1707 return -EINVAL; 1707 return -EINVAL;
1708 1708
1709 if (!capable(CAP_SYS_ADMIN)) 1709 if (!capable(CAP_SYS_RESOURCE))
1710 return -EPERM; 1710 return -EPERM;
1711 1711
1712 if (addr >= TASK_SIZE) 1712 if (addr >= TASK_SIZE)
diff --git a/mm/memcontrol.c b/mm/memcontrol.c
index d0e57a3cda18..58a08fc7414a 100644
--- a/mm/memcontrol.c
+++ b/mm/memcontrol.c
@@ -230,10 +230,30 @@ struct mem_cgroup {
230 * the counter to account for memory usage 230 * the counter to account for memory usage
231 */ 231 */
232 struct res_counter res; 232 struct res_counter res;
233 /* 233
234 * the counter to account for mem+swap usage. 234 union {
235 */ 235 /*
236 struct res_counter memsw; 236 * the counter to account for mem+swap usage.
237 */
238 struct res_counter memsw;
239
240 /*
241 * rcu_freeing is used only when freeing struct mem_cgroup,
242 * so put it into a union to avoid wasting more memory.
243 * It must be disjoint from the css field. It could be
244 * in a union with the res field, but res plays a much
245 * larger part in mem_cgroup life than memsw, and might
246 * be of interest, even at time of free, when debugging.
247 * So share rcu_head with the less interesting memsw.
248 */
249 struct rcu_head rcu_freeing;
250 /*
251 * But when using vfree(), that cannot be done at
252 * interrupt time, so we must then queue the work.
253 */
254 struct work_struct work_freeing;
255 };
256
237 /* 257 /*
238 * Per cgroup active and inactive list, similar to the 258 * Per cgroup active and inactive list, similar to the
239 * per zone LRU lists. 259 * per zone LRU lists.
@@ -4780,6 +4800,27 @@ out_free:
4780} 4800}
4781 4801
4782/* 4802/*
4803 * Helpers for freeing a vzalloc()ed mem_cgroup by RCU,
4804 * but in process context. The work_freeing structure is overlaid
4805 * on the rcu_freeing structure, which itself is overlaid on memsw.
4806 */
4807static void vfree_work(struct work_struct *work)
4808{
4809 struct mem_cgroup *memcg;
4810
4811 memcg = container_of(work, struct mem_cgroup, work_freeing);
4812 vfree(memcg);
4813}
4814static void vfree_rcu(struct rcu_head *rcu_head)
4815{
4816 struct mem_cgroup *memcg;
4817
4818 memcg = container_of(rcu_head, struct mem_cgroup, rcu_freeing);
4819 INIT_WORK(&memcg->work_freeing, vfree_work);
4820 schedule_work(&memcg->work_freeing);
4821}
4822
4823/*
4783 * At destroying mem_cgroup, references from swap_cgroup can remain. 4824 * At destroying mem_cgroup, references from swap_cgroup can remain.
4784 * (scanning all at force_empty is too costly...) 4825 * (scanning all at force_empty is too costly...)
4785 * 4826 *
@@ -4802,9 +4843,9 @@ static void __mem_cgroup_free(struct mem_cgroup *memcg)
4802 4843
4803 free_percpu(memcg->stat); 4844 free_percpu(memcg->stat);
4804 if (sizeof(struct mem_cgroup) < PAGE_SIZE) 4845 if (sizeof(struct mem_cgroup) < PAGE_SIZE)
4805 kfree(memcg); 4846 kfree_rcu(memcg, rcu_freeing);
4806 else 4847 else
4807 vfree(memcg); 4848 call_rcu(&memcg->rcu_freeing, vfree_rcu);
4808} 4849}
4809 4850
4810static void mem_cgroup_get(struct mem_cgroup *memcg) 4851static void mem_cgroup_get(struct mem_cgroup *memcg)