Commit 0336104d authored by Linus Torvalds's avatar Linus Torvalds

Merge branch 'akpm' (patches from Andrew)

Merge misc fixes from Andrew Morton:
 "8 fixes"

* emailed patches from Andrew Morton <akpm@linux-foundation.org>:
  mm, numa: really disable NUMA balancing by default on single node machines
  MAINTAINERS: update Jingoo Han's email address
  CMA: page_isolation: check buddy before accessing it
  uidgid: make uid_valid and gid_valid work with !CONFIG_MULTIUSER
  kernfs: do not account ino_ida allocations to memcg
  gfp: add __GFP_NOACCOUNT
  tools/vm: fix page-flags build
  drivers/rtc/rtc-armada38x.c: remove unused local `flags'
parents f0897f4c b0dc2b9b
...@@ -1935,7 +1935,7 @@ S: Maintained ...@@ -1935,7 +1935,7 @@ S: Maintained
F: drivers/net/wireless/b43legacy/ F: drivers/net/wireless/b43legacy/
BACKLIGHT CLASS/SUBSYSTEM BACKLIGHT CLASS/SUBSYSTEM
M: Jingoo Han <jg1.han@samsung.com> M: Jingoo Han <jingoohan1@gmail.com>
M: Lee Jones <lee.jones@linaro.org> M: Lee Jones <lee.jones@linaro.org>
S: Maintained S: Maintained
F: drivers/video/backlight/ F: drivers/video/backlight/
...@@ -3918,7 +3918,7 @@ F: drivers/extcon/ ...@@ -3918,7 +3918,7 @@ F: drivers/extcon/
F: Documentation/extcon/ F: Documentation/extcon/
EXYNOS DP DRIVER EXYNOS DP DRIVER
M: Jingoo Han <jg1.han@samsung.com> M: Jingoo Han <jingoohan1@gmail.com>
L: dri-devel@lists.freedesktop.org L: dri-devel@lists.freedesktop.org
S: Maintained S: Maintained
F: drivers/gpu/drm/exynos/exynos_dp* F: drivers/gpu/drm/exynos/exynos_dp*
...@@ -7557,7 +7557,7 @@ S: Maintained ...@@ -7557,7 +7557,7 @@ S: Maintained
F: drivers/pci/host/*rcar* F: drivers/pci/host/*rcar*
PCI DRIVER FOR SAMSUNG EXYNOS PCI DRIVER FOR SAMSUNG EXYNOS
M: Jingoo Han <jg1.han@samsung.com> M: Jingoo Han <jingoohan1@gmail.com>
L: linux-pci@vger.kernel.org L: linux-pci@vger.kernel.org
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
L: linux-samsung-soc@vger.kernel.org (moderated for non-subscribers) L: linux-samsung-soc@vger.kernel.org (moderated for non-subscribers)
...@@ -7565,7 +7565,7 @@ S: Maintained ...@@ -7565,7 +7565,7 @@ S: Maintained
F: drivers/pci/host/pci-exynos.c F: drivers/pci/host/pci-exynos.c
PCI DRIVER FOR SYNOPSIS DESIGNWARE PCI DRIVER FOR SYNOPSIS DESIGNWARE
M: Jingoo Han <jg1.han@samsung.com> M: Jingoo Han <jingoohan1@gmail.com>
L: linux-pci@vger.kernel.org L: linux-pci@vger.kernel.org
S: Maintained S: Maintained
F: drivers/pci/host/*designware* F: drivers/pci/host/*designware*
...@@ -8521,7 +8521,7 @@ S: Supported ...@@ -8521,7 +8521,7 @@ S: Supported
F: sound/soc/samsung/ F: sound/soc/samsung/
SAMSUNG FRAMEBUFFER DRIVER SAMSUNG FRAMEBUFFER DRIVER
M: Jingoo Han <jg1.han@samsung.com> M: Jingoo Han <jingoohan1@gmail.com>
L: linux-fbdev@vger.kernel.org L: linux-fbdev@vger.kernel.org
S: Maintained S: Maintained
F: drivers/video/fbdev/s3c-fb.c F: drivers/video/fbdev/s3c-fb.c
......
...@@ -64,7 +64,7 @@ static void rtc_delayed_write(u32 val, struct armada38x_rtc *rtc, int offset) ...@@ -64,7 +64,7 @@ static void rtc_delayed_write(u32 val, struct armada38x_rtc *rtc, int offset)
static int armada38x_rtc_read_time(struct device *dev, struct rtc_time *tm) static int armada38x_rtc_read_time(struct device *dev, struct rtc_time *tm)
{ {
struct armada38x_rtc *rtc = dev_get_drvdata(dev); struct armada38x_rtc *rtc = dev_get_drvdata(dev);
unsigned long time, time_check, flags; unsigned long time, time_check;
mutex_lock(&rtc->mutex_time); mutex_lock(&rtc->mutex_time);
time = readl(rtc->regs + RTC_TIME); time = readl(rtc->regs + RTC_TIME);
......
...@@ -518,7 +518,14 @@ static struct kernfs_node *__kernfs_new_node(struct kernfs_root *root, ...@@ -518,7 +518,14 @@ static struct kernfs_node *__kernfs_new_node(struct kernfs_root *root,
if (!kn) if (!kn)
goto err_out1; goto err_out1;
ret = ida_simple_get(&root->ino_ida, 1, 0, GFP_KERNEL); /*
* If the ino of the sysfs entry created for a kmem cache gets
* allocated from an ida layer, which is accounted to the memcg that
* owns the cache, the memcg will get pinned forever. So do not account
* ino ida allocations.
*/
ret = ida_simple_get(&root->ino_ida, 1, 0,
GFP_KERNEL | __GFP_NOACCOUNT);
if (ret < 0) if (ret < 0)
goto err_out2; goto err_out2;
kn->ino = ret; kn->ino = ret;
......
...@@ -30,6 +30,7 @@ struct vm_area_struct; ...@@ -30,6 +30,7 @@ struct vm_area_struct;
#define ___GFP_HARDWALL 0x20000u #define ___GFP_HARDWALL 0x20000u
#define ___GFP_THISNODE 0x40000u #define ___GFP_THISNODE 0x40000u
#define ___GFP_RECLAIMABLE 0x80000u #define ___GFP_RECLAIMABLE 0x80000u
#define ___GFP_NOACCOUNT 0x100000u
#define ___GFP_NOTRACK 0x200000u #define ___GFP_NOTRACK 0x200000u
#define ___GFP_NO_KSWAPD 0x400000u #define ___GFP_NO_KSWAPD 0x400000u
#define ___GFP_OTHER_NODE 0x800000u #define ___GFP_OTHER_NODE 0x800000u
...@@ -87,6 +88,7 @@ struct vm_area_struct; ...@@ -87,6 +88,7 @@ struct vm_area_struct;
#define __GFP_HARDWALL ((__force gfp_t)___GFP_HARDWALL) /* Enforce hardwall cpuset memory allocs */ #define __GFP_HARDWALL ((__force gfp_t)___GFP_HARDWALL) /* Enforce hardwall cpuset memory allocs */
#define __GFP_THISNODE ((__force gfp_t)___GFP_THISNODE)/* No fallback, no policies */ #define __GFP_THISNODE ((__force gfp_t)___GFP_THISNODE)/* No fallback, no policies */
#define __GFP_RECLAIMABLE ((__force gfp_t)___GFP_RECLAIMABLE) /* Page is reclaimable */ #define __GFP_RECLAIMABLE ((__force gfp_t)___GFP_RECLAIMABLE) /* Page is reclaimable */
#define __GFP_NOACCOUNT ((__force gfp_t)___GFP_NOACCOUNT) /* Don't account to kmemcg */
#define __GFP_NOTRACK ((__force gfp_t)___GFP_NOTRACK) /* Don't track with kmemcheck */ #define __GFP_NOTRACK ((__force gfp_t)___GFP_NOTRACK) /* Don't track with kmemcheck */
#define __GFP_NO_KSWAPD ((__force gfp_t)___GFP_NO_KSWAPD) #define __GFP_NO_KSWAPD ((__force gfp_t)___GFP_NO_KSWAPD)
......
...@@ -463,6 +463,8 @@ memcg_kmem_newpage_charge(gfp_t gfp, struct mem_cgroup **memcg, int order) ...@@ -463,6 +463,8 @@ memcg_kmem_newpage_charge(gfp_t gfp, struct mem_cgroup **memcg, int order)
if (!memcg_kmem_enabled()) if (!memcg_kmem_enabled())
return true; return true;
if (gfp & __GFP_NOACCOUNT)
return true;
/* /*
* __GFP_NOFAIL allocations will move on even if charging is not * __GFP_NOFAIL allocations will move on even if charging is not
* possible. Therefore we don't even try, and have this allocation * possible. Therefore we don't even try, and have this allocation
...@@ -522,6 +524,8 @@ memcg_kmem_get_cache(struct kmem_cache *cachep, gfp_t gfp) ...@@ -522,6 +524,8 @@ memcg_kmem_get_cache(struct kmem_cache *cachep, gfp_t gfp)
{ {
if (!memcg_kmem_enabled()) if (!memcg_kmem_enabled())
return cachep; return cachep;
if (gfp & __GFP_NOACCOUNT)
return cachep;
if (gfp & __GFP_NOFAIL) if (gfp & __GFP_NOFAIL)
return cachep; return cachep;
if (in_interrupt() || (!current->mm) || (current->flags & PF_KTHREAD)) if (in_interrupt() || (!current->mm) || (current->flags & PF_KTHREAD))
......
...@@ -109,12 +109,12 @@ static inline bool gid_lte(kgid_t left, kgid_t right) ...@@ -109,12 +109,12 @@ static inline bool gid_lte(kgid_t left, kgid_t right)
static inline bool uid_valid(kuid_t uid) static inline bool uid_valid(kuid_t uid)
{ {
return !uid_eq(uid, INVALID_UID); return __kuid_val(uid) != (uid_t) -1;
} }
static inline bool gid_valid(kgid_t gid) static inline bool gid_valid(kgid_t gid)
{ {
return !gid_eq(gid, INVALID_GID); return __kgid_val(gid) != (gid_t) -1;
} }
#ifdef CONFIG_USER_NS #ifdef CONFIG_USER_NS
......
...@@ -115,7 +115,8 @@ ...@@ -115,7 +115,8 @@
#define BYTES_PER_POINTER sizeof(void *) #define BYTES_PER_POINTER sizeof(void *)
/* GFP bitmask for kmemleak internal allocations */ /* GFP bitmask for kmemleak internal allocations */
#define gfp_kmemleak_mask(gfp) (((gfp) & (GFP_KERNEL | GFP_ATOMIC)) | \ #define gfp_kmemleak_mask(gfp) (((gfp) & (GFP_KERNEL | GFP_ATOMIC | \
__GFP_NOACCOUNT)) | \
__GFP_NORETRY | __GFP_NOMEMALLOC | \ __GFP_NORETRY | __GFP_NOMEMALLOC | \
__GFP_NOWARN) __GFP_NOWARN)
......
...@@ -2518,7 +2518,7 @@ static void __init check_numabalancing_enable(void) ...@@ -2518,7 +2518,7 @@ static void __init check_numabalancing_enable(void)
if (numabalancing_override) if (numabalancing_override)
set_numabalancing_state(numabalancing_override == 1); set_numabalancing_state(numabalancing_override == 1);
if (nr_node_ids > 1 && !numabalancing_override) { if (num_online_nodes() > 1 && !numabalancing_override) {
pr_info("%s automatic NUMA balancing. " pr_info("%s automatic NUMA balancing. "
"Configure with numa_balancing= or the " "Configure with numa_balancing= or the "
"kernel.numa_balancing sysctl", "kernel.numa_balancing sysctl",
......
...@@ -101,7 +101,8 @@ void unset_migratetype_isolate(struct page *page, unsigned migratetype) ...@@ -101,7 +101,8 @@ void unset_migratetype_isolate(struct page *page, unsigned migratetype)
buddy_idx = __find_buddy_index(page_idx, order); buddy_idx = __find_buddy_index(page_idx, order);
buddy = page + (buddy_idx - page_idx); buddy = page + (buddy_idx - page_idx);
if (!is_migrate_isolate_page(buddy)) { if (pfn_valid_within(page_to_pfn(buddy)) &&
!is_migrate_isolate_page(buddy)) {
__isolate_free_page(page, order); __isolate_free_page(page, order);
kernel_map_pages(page, (1 << order), 1); kernel_map_pages(page, (1 << order), 1);
set_page_refcounted(page); set_page_refcounted(page);
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
TARGETS=page-types slabinfo page_owner_sort TARGETS=page-types slabinfo page_owner_sort
LIB_DIR = ../lib/api LIB_DIR = ../lib/api
LIBS = $(LIB_DIR)/libapikfs.a LIBS = $(LIB_DIR)/libapi.a
CC = $(CROSS_COMPILE)gcc CC = $(CROSS_COMPILE)gcc
CFLAGS = -Wall -Wextra -I../lib/ CFLAGS = -Wall -Wextra -I../lib/
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment