UPSTREAM: mm/damon/sysfs: use damon_addr_range for region's start and end values
DAMON has a struct for each address range but DAMON sysfs interface is using the low type (unsigned long) for storing the start and end addresses of regions. Use the dedicated struct for better type safety. Link: https://lkml.kernel.org/r/20221026225943.100429-6-sj@kernel.org Signed-off-by: SeongJae Park <sj@kernel.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> (cherry picked from commit 789a230613c8dd14bdd41653de0c22783726276f) Bug: 300502883 Change-Id: I3bcd00e51144728c7daace32bd1f5283a1ff9e3f Signed-off-by: cui yangpei <cuiyangpei@xiaomi.com>
This commit is contained in:
parent
b6e6b1dbf8
commit
19364f11a4
@ -1062,13 +1062,11 @@ static struct kobj_type damon_sysfs_schemes_ktype = {
|
||||
|
||||
struct damon_sysfs_region {
|
||||
struct kobject kobj;
|
||||
unsigned long start;
|
||||
unsigned long end;
|
||||
struct damon_addr_range ar;
|
||||
};
|
||||
|
||||
static struct damon_sysfs_region *damon_sysfs_region_alloc(
|
||||
unsigned long start,
|
||||
unsigned long end)
|
||||
struct damon_addr_range ar)
|
||||
{
|
||||
struct damon_sysfs_region *region = kmalloc(sizeof(*region),
|
||||
GFP_KERNEL);
|
||||
@ -1076,8 +1074,7 @@ static struct damon_sysfs_region *damon_sysfs_region_alloc(
|
||||
if (!region)
|
||||
return NULL;
|
||||
region->kobj = (struct kobject){};
|
||||
region->start = start;
|
||||
region->end = end;
|
||||
region->ar = ar;
|
||||
return region;
|
||||
}
|
||||
|
||||
@ -1087,7 +1084,7 @@ static ssize_t start_show(struct kobject *kobj, struct kobj_attribute *attr,
|
||||
struct damon_sysfs_region *region = container_of(kobj,
|
||||
struct damon_sysfs_region, kobj);
|
||||
|
||||
return sysfs_emit(buf, "%lu\n", region->start);
|
||||
return sysfs_emit(buf, "%lu\n", region->ar.start);
|
||||
}
|
||||
|
||||
static ssize_t start_store(struct kobject *kobj, struct kobj_attribute *attr,
|
||||
@ -1095,7 +1092,7 @@ static ssize_t start_store(struct kobject *kobj, struct kobj_attribute *attr,
|
||||
{
|
||||
struct damon_sysfs_region *region = container_of(kobj,
|
||||
struct damon_sysfs_region, kobj);
|
||||
int err = kstrtoul(buf, 0, ®ion->start);
|
||||
int err = kstrtoul(buf, 0, ®ion->ar.start);
|
||||
|
||||
return err ? err : count;
|
||||
}
|
||||
@ -1106,7 +1103,7 @@ static ssize_t end_show(struct kobject *kobj, struct kobj_attribute *attr,
|
||||
struct damon_sysfs_region *region = container_of(kobj,
|
||||
struct damon_sysfs_region, kobj);
|
||||
|
||||
return sysfs_emit(buf, "%lu\n", region->end);
|
||||
return sysfs_emit(buf, "%lu\n", region->ar.end);
|
||||
}
|
||||
|
||||
static ssize_t end_store(struct kobject *kobj, struct kobj_attribute *attr,
|
||||
@ -1114,7 +1111,7 @@ static ssize_t end_store(struct kobject *kobj, struct kobj_attribute *attr,
|
||||
{
|
||||
struct damon_sysfs_region *region = container_of(kobj,
|
||||
struct damon_sysfs_region, kobj);
|
||||
int err = kstrtoul(buf, 0, ®ion->end);
|
||||
int err = kstrtoul(buf, 0, ®ion->ar.end);
|
||||
|
||||
return err ? err : count;
|
||||
}
|
||||
@ -1187,7 +1184,7 @@ static int damon_sysfs_regions_add_dirs(struct damon_sysfs_regions *regions,
|
||||
regions->regions_arr = regions_arr;
|
||||
|
||||
for (i = 0; i < nr_regions; i++) {
|
||||
region = damon_sysfs_region_alloc(0, 0);
|
||||
region = damon_sysfs_region_alloc((struct damon_addr_range){});
|
||||
if (!region) {
|
||||
damon_sysfs_regions_rm_dirs(regions);
|
||||
return -ENOMEM;
|
||||
@ -2147,11 +2144,11 @@ static int damon_sysfs_set_regions(struct damon_target *t,
|
||||
struct damon_sysfs_region *sys_region =
|
||||
sysfs_regions->regions_arr[i];
|
||||
|
||||
if (sys_region->start > sys_region->end)
|
||||
if (sys_region->ar.start > sys_region->ar.end)
|
||||
goto out;
|
||||
|
||||
ranges[i].start = sys_region->start;
|
||||
ranges[i].end = sys_region->end;
|
||||
ranges[i].start = sys_region->ar.start;
|
||||
ranges[i].end = sys_region->ar.end;
|
||||
if (i == 0)
|
||||
continue;
|
||||
if (ranges[i - 1].end > ranges[i].start)
|
||||
|
Loading…
Reference in New Issue
Block a user