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
This commit is contained in:
commit
0c4d0670f6
32
MAINTAINERS
32
MAINTAINERS
|
@ -1513,19 +1513,23 @@ F: drivers/mtd/devices/block2mtd.c
|
||||||
|
|
||||||
BLUETOOTH DRIVERS
|
BLUETOOTH DRIVERS
|
||||||
M: Marcel Holtmann <marcel@holtmann.org>
|
M: Marcel Holtmann <marcel@holtmann.org>
|
||||||
M: "Gustavo F. Padovan" <padovan@profusion.mobi>
|
M: Gustavo Padovan <gustavo@padovan.org>
|
||||||
|
M: Johan Hedberg <johan.hedberg@gmail.com>
|
||||||
L: linux-bluetooth@vger.kernel.org
|
L: linux-bluetooth@vger.kernel.org
|
||||||
W: http://www.bluez.org/
|
W: http://www.bluez.org/
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/padovan/bluetooth-2.6.git
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/padovan/bluetooth.git
|
||||||
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/jh/bluetooth.git
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/bluetooth/
|
F: drivers/bluetooth/
|
||||||
|
|
||||||
BLUETOOTH SUBSYSTEM
|
BLUETOOTH SUBSYSTEM
|
||||||
M: Marcel Holtmann <marcel@holtmann.org>
|
M: Marcel Holtmann <marcel@holtmann.org>
|
||||||
M: "Gustavo F. Padovan" <padovan@profusion.mobi>
|
M: Gustavo Padovan <gustavo@padovan.org>
|
||||||
|
M: Johan Hedberg <johan.hedberg@gmail.com>
|
||||||
L: linux-bluetooth@vger.kernel.org
|
L: linux-bluetooth@vger.kernel.org
|
||||||
W: http://www.bluez.org/
|
W: http://www.bluez.org/
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/padovan/bluetooth-2.6.git
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/padovan/bluetooth.git
|
||||||
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/jh/bluetooth.git
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: net/bluetooth/
|
F: net/bluetooth/
|
||||||
F: include/net/bluetooth/
|
F: include/net/bluetooth/
|
||||||
|
@ -2351,6 +2355,15 @@ S: Supported
|
||||||
F: drivers/gpu/drm/exynos
|
F: drivers/gpu/drm/exynos
|
||||||
F: include/drm/exynos*
|
F: include/drm/exynos*
|
||||||
|
|
||||||
|
EXYNOS MIPI DISPLAY DRIVERS
|
||||||
|
M: Inki Dae <inki.dae@samsung.com>
|
||||||
|
M: Donghwa Lee <dh09.lee@samsung.com>
|
||||||
|
M: Kyungmin Park <kyungmin.park@samsung.com>
|
||||||
|
L: linux-fbdev@vger.kernel.org
|
||||||
|
S: Maintained
|
||||||
|
F: drivers/video/exynos/exynos_mipi*
|
||||||
|
F: include/video/exynos_mipi*
|
||||||
|
|
||||||
DSCC4 DRIVER
|
DSCC4 DRIVER
|
||||||
M: Francois Romieu <romieu@fr.zoreil.com>
|
M: Francois Romieu <romieu@fr.zoreil.com>
|
||||||
L: netdev@vger.kernel.org
|
L: netdev@vger.kernel.org
|
||||||
|
@ -5859,6 +5872,7 @@ F: drivers/mmc/host/sdhci-s3c.c
|
||||||
|
|
||||||
SECURE DIGITAL HOST CONTROLLER INTERFACE (SDHCI) ST SPEAR DRIVER
|
SECURE DIGITAL HOST CONTROLLER INTERFACE (SDHCI) ST SPEAR DRIVER
|
||||||
M: Viresh Kumar <viresh.kumar@st.com>
|
M: Viresh Kumar <viresh.kumar@st.com>
|
||||||
|
L: spear-devel@list.st.com
|
||||||
L: linux-mmc@vger.kernel.org
|
L: linux-mmc@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/mmc/host/sdhci-spear.c
|
F: drivers/mmc/host/sdhci-spear.c
|
||||||
|
@ -6201,24 +6215,32 @@ F: drivers/tty/serial/sunzilog.h
|
||||||
|
|
||||||
SPEAR PLATFORM SUPPORT
|
SPEAR PLATFORM SUPPORT
|
||||||
M: Viresh Kumar <viresh.kumar@st.com>
|
M: Viresh Kumar <viresh.kumar@st.com>
|
||||||
|
L: spear-devel@list.st.com
|
||||||
|
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
||||||
W: http://www.st.com/spear
|
W: http://www.st.com/spear
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: arch/arm/plat-spear/
|
F: arch/arm/plat-spear/
|
||||||
|
|
||||||
SPEAR3XX MACHINE SUPPORT
|
SPEAR3XX MACHINE SUPPORT
|
||||||
M: Viresh Kumar <viresh.kumar@st.com>
|
M: Viresh Kumar <viresh.kumar@st.com>
|
||||||
|
L: spear-devel@list.st.com
|
||||||
|
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
||||||
W: http://www.st.com/spear
|
W: http://www.st.com/spear
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: arch/arm/mach-spear3xx/
|
F: arch/arm/mach-spear3xx/
|
||||||
|
|
||||||
SPEAR6XX MACHINE SUPPORT
|
SPEAR6XX MACHINE SUPPORT
|
||||||
M: Rajeev Kumar <rajeev-dlh.kumar@st.com>
|
M: Rajeev Kumar <rajeev-dlh.kumar@st.com>
|
||||||
|
L: spear-devel@list.st.com
|
||||||
|
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
||||||
W: http://www.st.com/spear
|
W: http://www.st.com/spear
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: arch/arm/mach-spear6xx/
|
F: arch/arm/mach-spear6xx/
|
||||||
|
|
||||||
SPEAR CLOCK FRAMEWORK SUPPORT
|
SPEAR CLOCK FRAMEWORK SUPPORT
|
||||||
M: Viresh Kumar <viresh.kumar@st.com>
|
M: Viresh Kumar <viresh.kumar@st.com>
|
||||||
|
L: spear-devel@list.st.com
|
||||||
|
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
||||||
W: http://www.st.com/spear
|
W: http://www.st.com/spear
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: arch/arm/mach-spear*/clock.c
|
F: arch/arm/mach-spear*/clock.c
|
||||||
|
@ -6227,6 +6249,8 @@ F: arch/arm/plat-spear/include/plat/clock.h
|
||||||
|
|
||||||
SPEAR PAD MULTIPLEXING SUPPORT
|
SPEAR PAD MULTIPLEXING SUPPORT
|
||||||
M: Viresh Kumar <viresh.kumar@st.com>
|
M: Viresh Kumar <viresh.kumar@st.com>
|
||||||
|
L: spear-devel@list.st.com
|
||||||
|
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
||||||
W: http://www.st.com/spear
|
W: http://www.st.com/spear
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: arch/arm/plat-spear/include/plat/padmux.h
|
F: arch/arm/plat-spear/include/plat/padmux.h
|
||||||
|
|
|
@ -118,34 +118,34 @@
|
||||||
|
|
||||||
#define TSI721_IDB_ENTRY_SIZE 64
|
#define TSI721_IDB_ENTRY_SIZE 64
|
||||||
|
|
||||||
#define TSI721_IDQ_CTL(x) (0x20000 + (x) * 1000)
|
#define TSI721_IDQ_CTL(x) (0x20000 + (x) * 0x1000)
|
||||||
#define TSI721_IDQ_SUSPEND 0x00000002
|
#define TSI721_IDQ_SUSPEND 0x00000002
|
||||||
#define TSI721_IDQ_INIT 0x00000001
|
#define TSI721_IDQ_INIT 0x00000001
|
||||||
|
|
||||||
#define TSI721_IDQ_STS(x) (0x20004 + (x) * 1000)
|
#define TSI721_IDQ_STS(x) (0x20004 + (x) * 0x1000)
|
||||||
#define TSI721_IDQ_RUN 0x00200000
|
#define TSI721_IDQ_RUN 0x00200000
|
||||||
|
|
||||||
#define TSI721_IDQ_MASK(x) (0x20008 + (x) * 1000)
|
#define TSI721_IDQ_MASK(x) (0x20008 + (x) * 0x1000)
|
||||||
#define TSI721_IDQ_MASK_MASK 0xffff0000
|
#define TSI721_IDQ_MASK_MASK 0xffff0000
|
||||||
#define TSI721_IDQ_MASK_PATT 0x0000ffff
|
#define TSI721_IDQ_MASK_PATT 0x0000ffff
|
||||||
|
|
||||||
#define TSI721_IDQ_RP(x) (0x2000c + (x) * 1000)
|
#define TSI721_IDQ_RP(x) (0x2000c + (x) * 0x1000)
|
||||||
#define TSI721_IDQ_RP_PTR 0x0007ffff
|
#define TSI721_IDQ_RP_PTR 0x0007ffff
|
||||||
|
|
||||||
#define TSI721_IDQ_WP(x) (0x20010 + (x) * 1000)
|
#define TSI721_IDQ_WP(x) (0x20010 + (x) * 0x1000)
|
||||||
#define TSI721_IDQ_WP_PTR 0x0007ffff
|
#define TSI721_IDQ_WP_PTR 0x0007ffff
|
||||||
|
|
||||||
#define TSI721_IDQ_BASEL(x) (0x20014 + (x) * 1000)
|
#define TSI721_IDQ_BASEL(x) (0x20014 + (x) * 0x1000)
|
||||||
#define TSI721_IDQ_BASEL_ADDR 0xffffffc0
|
#define TSI721_IDQ_BASEL_ADDR 0xffffffc0
|
||||||
#define TSI721_IDQ_BASEU(x) (0x20018 + (x) * 1000)
|
#define TSI721_IDQ_BASEU(x) (0x20018 + (x) * 0x1000)
|
||||||
#define TSI721_IDQ_SIZE(x) (0x2001c + (x) * 1000)
|
#define TSI721_IDQ_SIZE(x) (0x2001c + (x) * 0x1000)
|
||||||
#define TSI721_IDQ_SIZE_VAL(size) (__fls(size) - 4)
|
#define TSI721_IDQ_SIZE_VAL(size) (__fls(size) - 4)
|
||||||
#define TSI721_IDQ_SIZE_MIN 512
|
#define TSI721_IDQ_SIZE_MIN 512
|
||||||
#define TSI721_IDQ_SIZE_MAX (512 * 1024)
|
#define TSI721_IDQ_SIZE_MAX (512 * 1024)
|
||||||
|
|
||||||
#define TSI721_SR_CHINT(x) (0x20040 + (x) * 1000)
|
#define TSI721_SR_CHINT(x) (0x20040 + (x) * 0x1000)
|
||||||
#define TSI721_SR_CHINTE(x) (0x20044 + (x) * 1000)
|
#define TSI721_SR_CHINTE(x) (0x20044 + (x) * 0x1000)
|
||||||
#define TSI721_SR_CHINTSET(x) (0x20048 + (x) * 1000)
|
#define TSI721_SR_CHINTSET(x) (0x20048 + (x) * 0x1000)
|
||||||
#define TSI721_SR_CHINT_ODBOK 0x00000020
|
#define TSI721_SR_CHINT_ODBOK 0x00000020
|
||||||
#define TSI721_SR_CHINT_IDBQRCV 0x00000010
|
#define TSI721_SR_CHINT_IDBQRCV 0x00000010
|
||||||
#define TSI721_SR_CHINT_SUSP 0x00000008
|
#define TSI721_SR_CHINT_SUSP 0x00000008
|
||||||
|
@ -156,7 +156,7 @@
|
||||||
|
|
||||||
#define TSI721_IBWIN_NUM 8
|
#define TSI721_IBWIN_NUM 8
|
||||||
|
|
||||||
#define TSI721_IBWINLB(x) (0x29000 + (x) * 20)
|
#define TSI721_IBWINLB(x) (0x29000 + (x) * 0x20)
|
||||||
#define TSI721_IBWINLB_BA 0xfffff000
|
#define TSI721_IBWINLB_BA 0xfffff000
|
||||||
#define TSI721_IBWINLB_WEN 0x00000001
|
#define TSI721_IBWINLB_WEN 0x00000001
|
||||||
|
|
||||||
|
@ -187,13 +187,13 @@
|
||||||
*/
|
*/
|
||||||
#define TSI721_OBWIN_NUM TSI721_PC2SR_WINS
|
#define TSI721_OBWIN_NUM TSI721_PC2SR_WINS
|
||||||
|
|
||||||
#define TSI721_OBWINLB(x) (0x40000 + (x) * 20)
|
#define TSI721_OBWINLB(x) (0x40000 + (x) * 0x20)
|
||||||
#define TSI721_OBWINLB_BA 0xffff8000
|
#define TSI721_OBWINLB_BA 0xffff8000
|
||||||
#define TSI721_OBWINLB_WEN 0x00000001
|
#define TSI721_OBWINLB_WEN 0x00000001
|
||||||
|
|
||||||
#define TSI721_OBWINUB(x) (0x40004 + (x) * 20)
|
#define TSI721_OBWINUB(x) (0x40004 + (x) * 0x20)
|
||||||
|
|
||||||
#define TSI721_OBWINSZ(x) (0x40008 + (x) * 20)
|
#define TSI721_OBWINSZ(x) (0x40008 + (x) * 0x20)
|
||||||
#define TSI721_OBWINSZ_SIZE 0x00001f00
|
#define TSI721_OBWINSZ_SIZE 0x00001f00
|
||||||
#define TSI721_OBWIN_SIZE(size) (__fls(size) - 15)
|
#define TSI721_OBWIN_SIZE(size) (__fls(size) - 15)
|
||||||
|
|
||||||
|
|
|
@ -690,7 +690,7 @@ static ssize_t s6e63m0_sysfs_store_gamma_mode(struct device *dev,
|
||||||
struct backlight_device *bd = NULL;
|
struct backlight_device *bd = NULL;
|
||||||
int brightness, rc;
|
int brightness, rc;
|
||||||
|
|
||||||
rc = strict_strtoul(buf, 0, (unsigned long *)&lcd->gamma_mode);
|
rc = kstrtouint(buf, 0, &lcd->gamma_mode);
|
||||||
if (rc < 0)
|
if (rc < 0)
|
||||||
return rc;
|
return rc;
|
||||||
|
|
||||||
|
|
|
@ -1706,7 +1706,7 @@ static int prctl_set_mm(int opt, unsigned long addr,
|
||||||
if (arg4 | arg5)
|
if (arg4 | arg5)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
if (!capable(CAP_SYS_ADMIN))
|
if (!capable(CAP_SYS_RESOURCE))
|
||||||
return -EPERM;
|
return -EPERM;
|
||||||
|
|
||||||
if (addr >= TASK_SIZE)
|
if (addr >= TASK_SIZE)
|
||||||
|
|
|
@ -230,10 +230,30 @@ struct mem_cgroup {
|
||||||
* the counter to account for memory usage
|
* the counter to account for memory usage
|
||||||
*/
|
*/
|
||||||
struct res_counter res;
|
struct res_counter res;
|
||||||
/*
|
|
||||||
* the counter to account for mem+swap usage.
|
union {
|
||||||
*/
|
/*
|
||||||
struct res_counter memsw;
|
* the counter to account for mem+swap usage.
|
||||||
|
*/
|
||||||
|
struct res_counter memsw;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* rcu_freeing is used only when freeing struct mem_cgroup,
|
||||||
|
* so put it into a union to avoid wasting more memory.
|
||||||
|
* It must be disjoint from the css field. It could be
|
||||||
|
* in a union with the res field, but res plays a much
|
||||||
|
* larger part in mem_cgroup life than memsw, and might
|
||||||
|
* be of interest, even at time of free, when debugging.
|
||||||
|
* So share rcu_head with the less interesting memsw.
|
||||||
|
*/
|
||||||
|
struct rcu_head rcu_freeing;
|
||||||
|
/*
|
||||||
|
* But when using vfree(), that cannot be done at
|
||||||
|
* interrupt time, so we must then queue the work.
|
||||||
|
*/
|
||||||
|
struct work_struct work_freeing;
|
||||||
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Per cgroup active and inactive list, similar to the
|
* Per cgroup active and inactive list, similar to the
|
||||||
* per zone LRU lists.
|
* per zone LRU lists.
|
||||||
|
@ -4779,6 +4799,27 @@ out_free:
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Helpers for freeing a vzalloc()ed mem_cgroup by RCU,
|
||||||
|
* but in process context. The work_freeing structure is overlaid
|
||||||
|
* on the rcu_freeing structure, which itself is overlaid on memsw.
|
||||||
|
*/
|
||||||
|
static void vfree_work(struct work_struct *work)
|
||||||
|
{
|
||||||
|
struct mem_cgroup *memcg;
|
||||||
|
|
||||||
|
memcg = container_of(work, struct mem_cgroup, work_freeing);
|
||||||
|
vfree(memcg);
|
||||||
|
}
|
||||||
|
static void vfree_rcu(struct rcu_head *rcu_head)
|
||||||
|
{
|
||||||
|
struct mem_cgroup *memcg;
|
||||||
|
|
||||||
|
memcg = container_of(rcu_head, struct mem_cgroup, rcu_freeing);
|
||||||
|
INIT_WORK(&memcg->work_freeing, vfree_work);
|
||||||
|
schedule_work(&memcg->work_freeing);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* At destroying mem_cgroup, references from swap_cgroup can remain.
|
* At destroying mem_cgroup, references from swap_cgroup can remain.
|
||||||
* (scanning all at force_empty is too costly...)
|
* (scanning all at force_empty is too costly...)
|
||||||
|
@ -4802,9 +4843,9 @@ static void __mem_cgroup_free(struct mem_cgroup *memcg)
|
||||||
|
|
||||||
free_percpu(memcg->stat);
|
free_percpu(memcg->stat);
|
||||||
if (sizeof(struct mem_cgroup) < PAGE_SIZE)
|
if (sizeof(struct mem_cgroup) < PAGE_SIZE)
|
||||||
kfree(memcg);
|
kfree_rcu(memcg, rcu_freeing);
|
||||||
else
|
else
|
||||||
vfree(memcg);
|
call_rcu(&memcg->rcu_freeing, vfree_rcu);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void mem_cgroup_get(struct mem_cgroup *memcg)
|
static void mem_cgroup_get(struct mem_cgroup *memcg)
|
||||||
|
|
Loading…
Reference in New Issue