diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2012-03-15 20:16:22 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-03-15 20:16:22 -0400 |
commit | 0c4d0670f6e54f8507c30c01928cc9ff630ca497 (patch) | |
tree | 66a417d87d670f4068ac17c5ee19d21ddf7e95e1 | |
parent | 7c32442ff846b7ea8804785e90b81c1118115a5c (diff) | |
parent | cf2b94daab9f3d21b0a393bef91292622f6a8ca4 (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-- | MAINTAINERS | 32 | ||||
-rw-r--r-- | drivers/rapidio/devices/tsi721.h | 30 | ||||
-rw-r--r-- | drivers/video/backlight/s6e63m0.c | 2 | ||||
-rw-r--r-- | kernel/sys.c | 2 | ||||
-rw-r--r-- | mm/memcontrol.c | 53 |
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 | ||
1514 | BLUETOOTH DRIVERS | 1514 | BLUETOOTH DRIVERS |
1515 | M: Marcel Holtmann <marcel@holtmann.org> | 1515 | M: Marcel Holtmann <marcel@holtmann.org> |
1516 | M: "Gustavo F. Padovan" <padovan@profusion.mobi> | 1516 | M: Gustavo Padovan <gustavo@padovan.org> |
1517 | M: Johan Hedberg <johan.hedberg@gmail.com> | ||
1517 | L: linux-bluetooth@vger.kernel.org | 1518 | L: linux-bluetooth@vger.kernel.org |
1518 | W: http://www.bluez.org/ | 1519 | W: http://www.bluez.org/ |
1519 | T: git git://git.kernel.org/pub/scm/linux/kernel/git/padovan/bluetooth-2.6.git | 1520 | T: git git://git.kernel.org/pub/scm/linux/kernel/git/padovan/bluetooth.git |
1521 | T: git git://git.kernel.org/pub/scm/linux/kernel/git/jh/bluetooth.git | ||
1520 | S: Maintained | 1522 | S: Maintained |
1521 | F: drivers/bluetooth/ | 1523 | F: drivers/bluetooth/ |
1522 | 1524 | ||
1523 | BLUETOOTH SUBSYSTEM | 1525 | BLUETOOTH SUBSYSTEM |
1524 | M: Marcel Holtmann <marcel@holtmann.org> | 1526 | M: Marcel Holtmann <marcel@holtmann.org> |
1525 | M: "Gustavo F. Padovan" <padovan@profusion.mobi> | 1527 | M: Gustavo Padovan <gustavo@padovan.org> |
1528 | M: Johan Hedberg <johan.hedberg@gmail.com> | ||
1526 | L: linux-bluetooth@vger.kernel.org | 1529 | L: linux-bluetooth@vger.kernel.org |
1527 | W: http://www.bluez.org/ | 1530 | W: http://www.bluez.org/ |
1528 | T: git git://git.kernel.org/pub/scm/linux/kernel/git/padovan/bluetooth-2.6.git | 1531 | T: git git://git.kernel.org/pub/scm/linux/kernel/git/padovan/bluetooth.git |
1532 | T: git git://git.kernel.org/pub/scm/linux/kernel/git/jh/bluetooth.git | ||
1529 | S: Maintained | 1533 | S: Maintained |
1530 | F: net/bluetooth/ | 1534 | F: net/bluetooth/ |
1531 | F: include/net/bluetooth/ | 1535 | F: include/net/bluetooth/ |
@@ -2351,6 +2355,15 @@ S: Supported | |||
2351 | F: drivers/gpu/drm/exynos | 2355 | F: drivers/gpu/drm/exynos |
2352 | F: include/drm/exynos* | 2356 | F: include/drm/exynos* |
2353 | 2357 | ||
2358 | EXYNOS MIPI DISPLAY DRIVERS | ||
2359 | M: Inki Dae <inki.dae@samsung.com> | ||
2360 | M: Donghwa Lee <dh09.lee@samsung.com> | ||
2361 | M: Kyungmin Park <kyungmin.park@samsung.com> | ||
2362 | L: linux-fbdev@vger.kernel.org | ||
2363 | S: Maintained | ||
2364 | F: drivers/video/exynos/exynos_mipi* | ||
2365 | F: include/video/exynos_mipi* | ||
2366 | |||
2354 | DSCC4 DRIVER | 2367 | DSCC4 DRIVER |
2355 | M: Francois Romieu <romieu@fr.zoreil.com> | 2368 | M: Francois Romieu <romieu@fr.zoreil.com> |
2356 | L: netdev@vger.kernel.org | 2369 | L: netdev@vger.kernel.org |
@@ -5859,6 +5872,7 @@ F: drivers/mmc/host/sdhci-s3c.c | |||
5859 | 5872 | ||
5860 | SECURE DIGITAL HOST CONTROLLER INTERFACE (SDHCI) ST SPEAR DRIVER | 5873 | SECURE DIGITAL HOST CONTROLLER INTERFACE (SDHCI) ST SPEAR DRIVER |
5861 | M: Viresh Kumar <viresh.kumar@st.com> | 5874 | M: Viresh Kumar <viresh.kumar@st.com> |
5875 | L: spear-devel@list.st.com | ||
5862 | L: linux-mmc@vger.kernel.org | 5876 | L: linux-mmc@vger.kernel.org |
5863 | S: Maintained | 5877 | S: Maintained |
5864 | F: drivers/mmc/host/sdhci-spear.c | 5878 | F: drivers/mmc/host/sdhci-spear.c |
@@ -6201,24 +6215,32 @@ F: drivers/tty/serial/sunzilog.h | |||
6201 | 6215 | ||
6202 | SPEAR PLATFORM SUPPORT | 6216 | SPEAR PLATFORM SUPPORT |
6203 | M: Viresh Kumar <viresh.kumar@st.com> | 6217 | M: Viresh Kumar <viresh.kumar@st.com> |
6218 | L: spear-devel@list.st.com | ||
6219 | L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) | ||
6204 | W: http://www.st.com/spear | 6220 | W: http://www.st.com/spear |
6205 | S: Maintained | 6221 | S: Maintained |
6206 | F: arch/arm/plat-spear/ | 6222 | F: arch/arm/plat-spear/ |
6207 | 6223 | ||
6208 | SPEAR3XX MACHINE SUPPORT | 6224 | SPEAR3XX MACHINE SUPPORT |
6209 | M: Viresh Kumar <viresh.kumar@st.com> | 6225 | M: Viresh Kumar <viresh.kumar@st.com> |
6226 | L: spear-devel@list.st.com | ||
6227 | L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) | ||
6210 | W: http://www.st.com/spear | 6228 | W: http://www.st.com/spear |
6211 | S: Maintained | 6229 | S: Maintained |
6212 | F: arch/arm/mach-spear3xx/ | 6230 | F: arch/arm/mach-spear3xx/ |
6213 | 6231 | ||
6214 | SPEAR6XX MACHINE SUPPORT | 6232 | SPEAR6XX MACHINE SUPPORT |
6215 | M: Rajeev Kumar <rajeev-dlh.kumar@st.com> | 6233 | M: Rajeev Kumar <rajeev-dlh.kumar@st.com> |
6234 | L: spear-devel@list.st.com | ||
6235 | L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) | ||
6216 | W: http://www.st.com/spear | 6236 | W: http://www.st.com/spear |
6217 | S: Maintained | 6237 | S: Maintained |
6218 | F: arch/arm/mach-spear6xx/ | 6238 | F: arch/arm/mach-spear6xx/ |
6219 | 6239 | ||
6220 | SPEAR CLOCK FRAMEWORK SUPPORT | 6240 | SPEAR CLOCK FRAMEWORK SUPPORT |
6221 | M: Viresh Kumar <viresh.kumar@st.com> | 6241 | M: Viresh Kumar <viresh.kumar@st.com> |
6242 | L: spear-devel@list.st.com | ||
6243 | L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) | ||
6222 | W: http://www.st.com/spear | 6244 | W: http://www.st.com/spear |
6223 | S: Maintained | 6245 | S: Maintained |
6224 | F: arch/arm/mach-spear*/clock.c | 6246 | F: arch/arm/mach-spear*/clock.c |
@@ -6227,6 +6249,8 @@ F: arch/arm/plat-spear/include/plat/clock.h | |||
6227 | 6249 | ||
6228 | SPEAR PAD MULTIPLEXING SUPPORT | 6250 | SPEAR PAD MULTIPLEXING SUPPORT |
6229 | M: Viresh Kumar <viresh.kumar@st.com> | 6251 | M: Viresh Kumar <viresh.kumar@st.com> |
6252 | L: spear-devel@list.st.com | ||
6253 | L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) | ||
6230 | W: http://www.st.com/spear | 6254 | W: http://www.st.com/spear |
6231 | S: Maintained | 6255 | S: Maintained |
6232 | F: arch/arm/plat-spear/include/plat/padmux.h | 6256 | F: 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 | */ | ||
4807 | static 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 | } | ||
4814 | static 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 | ||
4810 | static void mem_cgroup_get(struct mem_cgroup *memcg) | 4851 | static void mem_cgroup_get(struct mem_cgroup *memcg) |