mirror of
				https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux
				synced 2025-11-05 01:03:37 +10:00 
			
		
		
		
	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
 | 
			
		||||
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
 | 
			
		||||
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
 | 
			
		||||
F:	drivers/bluetooth/
 | 
			
		||||
 | 
			
		||||
BLUETOOTH SUBSYSTEM
 | 
			
		||||
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
 | 
			
		||||
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
 | 
			
		||||
F:	net/bluetooth/
 | 
			
		||||
F:	include/net/bluetooth/
 | 
			
		||||
@ -2351,6 +2355,15 @@ S:	Supported
 | 
			
		||||
F:	drivers/gpu/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
 | 
			
		||||
M:	Francois Romieu <romieu@fr.zoreil.com>
 | 
			
		||||
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
 | 
			
		||||
M:	Viresh Kumar <viresh.kumar@st.com>
 | 
			
		||||
L:	spear-devel@list.st.com
 | 
			
		||||
L:	linux-mmc@vger.kernel.org
 | 
			
		||||
S:	Maintained
 | 
			
		||||
F:	drivers/mmc/host/sdhci-spear.c
 | 
			
		||||
@ -6201,24 +6215,32 @@ F:	drivers/tty/serial/sunzilog.h
 | 
			
		||||
 | 
			
		||||
SPEAR PLATFORM SUPPORT
 | 
			
		||||
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
 | 
			
		||||
S:	Maintained
 | 
			
		||||
F:	arch/arm/plat-spear/
 | 
			
		||||
 | 
			
		||||
SPEAR3XX MACHINE SUPPORT
 | 
			
		||||
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
 | 
			
		||||
S:	Maintained
 | 
			
		||||
F:	arch/arm/mach-spear3xx/
 | 
			
		||||
 | 
			
		||||
SPEAR6XX MACHINE SUPPORT
 | 
			
		||||
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
 | 
			
		||||
S:	Maintained
 | 
			
		||||
F:	arch/arm/mach-spear6xx/
 | 
			
		||||
 | 
			
		||||
SPEAR CLOCK FRAMEWORK SUPPORT
 | 
			
		||||
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
 | 
			
		||||
S:	Maintained
 | 
			
		||||
F:	arch/arm/mach-spear*/clock.c
 | 
			
		||||
@ -6227,6 +6249,8 @@ F:	arch/arm/plat-spear/include/plat/clock.h
 | 
			
		||||
 | 
			
		||||
SPEAR PAD MULTIPLEXING SUPPORT
 | 
			
		||||
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
 | 
			
		||||
S:	Maintained
 | 
			
		||||
F:	arch/arm/plat-spear/include/plat/padmux.h
 | 
			
		||||
 | 
			
		||||
@ -118,34 +118,34 @@
 | 
			
		||||
 | 
			
		||||
#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_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_MASK(x)	(0x20008 + (x) * 1000)
 | 
			
		||||
#define TSI721_IDQ_MASK(x)	(0x20008 + (x) * 0x1000)
 | 
			
		||||
#define TSI721_IDQ_MASK_MASK	0xffff0000
 | 
			
		||||
#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_WP(x)	(0x20010 + (x) * 1000)
 | 
			
		||||
#define TSI721_IDQ_WP(x)	(0x20010 + (x) * 0x1000)
 | 
			
		||||
#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_BASEU(x)	(0x20018 + (x) * 1000)
 | 
			
		||||
#define TSI721_IDQ_SIZE(x)	(0x2001c + (x) * 1000)
 | 
			
		||||
#define TSI721_IDQ_BASEU(x)	(0x20018 + (x) * 0x1000)
 | 
			
		||||
#define TSI721_IDQ_SIZE(x)	(0x2001c + (x) * 0x1000)
 | 
			
		||||
#define TSI721_IDQ_SIZE_VAL(size)	(__fls(size) - 4)
 | 
			
		||||
#define TSI721_IDQ_SIZE_MIN	512
 | 
			
		||||
#define TSI721_IDQ_SIZE_MAX	(512 * 1024)
 | 
			
		||||
 | 
			
		||||
#define TSI721_SR_CHINT(x)	(0x20040 + (x) * 1000)
 | 
			
		||||
#define TSI721_SR_CHINTE(x)	(0x20044 + (x) * 1000)
 | 
			
		||||
#define TSI721_SR_CHINTSET(x)	(0x20048 + (x) * 1000)
 | 
			
		||||
#define TSI721_SR_CHINT(x)	(0x20040 + (x) * 0x1000)
 | 
			
		||||
#define TSI721_SR_CHINTE(x)	(0x20044 + (x) * 0x1000)
 | 
			
		||||
#define TSI721_SR_CHINTSET(x)	(0x20048 + (x) * 0x1000)
 | 
			
		||||
#define TSI721_SR_CHINT_ODBOK	0x00000020
 | 
			
		||||
#define TSI721_SR_CHINT_IDBQRCV	0x00000010
 | 
			
		||||
#define TSI721_SR_CHINT_SUSP	0x00000008
 | 
			
		||||
@ -156,7 +156,7 @@
 | 
			
		||||
 | 
			
		||||
#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_WEN	0x00000001
 | 
			
		||||
 | 
			
		||||
@ -187,13 +187,13 @@
 | 
			
		||||
 */
 | 
			
		||||
#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_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_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;
 | 
			
		||||
	int brightness, rc;
 | 
			
		||||
 | 
			
		||||
	rc = strict_strtoul(buf, 0, (unsigned long *)&lcd->gamma_mode);
 | 
			
		||||
	rc = kstrtouint(buf, 0, &lcd->gamma_mode);
 | 
			
		||||
	if (rc < 0)
 | 
			
		||||
		return rc;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -1706,7 +1706,7 @@ static int prctl_set_mm(int opt, unsigned long addr,
 | 
			
		||||
	if (arg4 | arg5)
 | 
			
		||||
		return -EINVAL;
 | 
			
		||||
 | 
			
		||||
	if (!capable(CAP_SYS_ADMIN))
 | 
			
		||||
	if (!capable(CAP_SYS_RESOURCE))
 | 
			
		||||
		return -EPERM;
 | 
			
		||||
 | 
			
		||||
	if (addr >= TASK_SIZE)
 | 
			
		||||
 | 
			
		||||
@ -230,10 +230,30 @@ struct mem_cgroup {
 | 
			
		||||
	 * the counter to account for memory usage
 | 
			
		||||
	 */
 | 
			
		||||
	struct res_counter res;
 | 
			
		||||
	/*
 | 
			
		||||
	 * the counter to account for mem+swap usage.
 | 
			
		||||
	 */
 | 
			
		||||
	struct res_counter memsw;
 | 
			
		||||
 | 
			
		||||
	union {
 | 
			
		||||
		/*
 | 
			
		||||
		 * 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 zone LRU lists.
 | 
			
		||||
@ -4779,6 +4799,27 @@ out_free:
 | 
			
		||||
	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.
 | 
			
		||||
 * (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);
 | 
			
		||||
	if (sizeof(struct mem_cgroup) < PAGE_SIZE)
 | 
			
		||||
		kfree(memcg);
 | 
			
		||||
		kfree_rcu(memcg, rcu_freeing);
 | 
			
		||||
	else
 | 
			
		||||
		vfree(memcg);
 | 
			
		||||
		call_rcu(&memcg->rcu_freeing, vfree_rcu);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void mem_cgroup_get(struct mem_cgroup *memcg)
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user