Commit f87bcc88 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge branch 'akpm' (patches from Andrew)

Merge misc mm fixes from Andrew Morton:
 "2 patches.

  Subsystems affected by this patch series: mm (userfaultfd and damon)"

* akpm:
  mm/damon/dbgfs: fix 'struct pid' leaks in 'dbgfs_target_ids_write()'
  userfaultfd/selftests: fix hugetlb area allocations
parents e46227bf ebb3f994
Loading
Loading
Loading
Loading
+7 −2
Original line number Diff line number Diff line
@@ -353,6 +353,7 @@ static ssize_t dbgfs_target_ids_write(struct file *file,
		const char __user *buf, size_t count, loff_t *ppos)
{
	struct damon_ctx *ctx = file->private_data;
	struct damon_target *t, *next_t;
	bool id_is_pid = true;
	char *kbuf, *nrs;
	unsigned long *targets;
@@ -397,8 +398,12 @@ static ssize_t dbgfs_target_ids_write(struct file *file,
		goto unlock_out;
	}

	/* remove targets with previously-set primitive */
	damon_set_targets(ctx, NULL, 0);
	/* remove previously set targets */
	damon_for_each_target_safe(t, next_t, ctx) {
		if (targetid_is_pid(ctx))
			put_pid((struct pid *)t->id);
		damon_destroy_target(t);
	}

	/* Configure the context for the address space type */
	if (id_is_pid)
+10 −6
Original line number Diff line number Diff line
@@ -87,7 +87,7 @@ static bool test_uffdio_minor = false;

static bool map_shared;
static int shm_fd;
static int huge_fd;
static int huge_fd = -1;	/* only used for hugetlb_shared test */
static char *huge_fd_off0;
static unsigned long long *count_verify;
static int uffd = -1;
@@ -223,6 +223,9 @@ static void noop_alias_mapping(__u64 *start, size_t len, unsigned long offset)

static void hugetlb_release_pages(char *rel_area)
{
	if (huge_fd == -1)
		return;

	if (fallocate(huge_fd, FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE,
		      rel_area == huge_fd_off0 ? 0 : nr_pages * page_size,
		      nr_pages * page_size))
@@ -235,16 +238,17 @@ static void hugetlb_allocate_area(void **alloc_area)
	char **alloc_area_alias;

	*alloc_area = mmap(NULL, nr_pages * page_size, PROT_READ | PROT_WRITE,
			   (map_shared ? MAP_SHARED : MAP_PRIVATE) |
			   MAP_HUGETLB,
			   huge_fd, *alloc_area == area_src ? 0 :
			   nr_pages * page_size);
			   map_shared ? MAP_SHARED :
			   MAP_PRIVATE | MAP_HUGETLB |
			   (*alloc_area == area_src ? 0 : MAP_NORESERVE),
			   huge_fd,
			   *alloc_area == area_src ? 0 : nr_pages * page_size);
	if (*alloc_area == MAP_FAILED)
		err("mmap of hugetlbfs file failed");

	if (map_shared) {
		area_alias = mmap(NULL, nr_pages * page_size, PROT_READ | PROT_WRITE,
				  MAP_SHARED | MAP_HUGETLB,
				  MAP_SHARED,
				  huge_fd, *alloc_area == area_src ? 0 :
				  nr_pages * page_size);
		if (area_alias == MAP_FAILED)