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) |
