mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-11-24 06:50:58 +07:00
Driver Core: switch all dynamic ksets to kobj_sysfs_ops
Switch all dynamically created ksets, that export simple attributes, to kobj_attribute from subsys_attribute. Struct subsys_attribute will be removed. Signed-off-by: Kay Sievers <kay.sievers@vrfy.org> Cc: Mike Halcrow <mhalcrow@us.ibm.com> Cc: Phillip Hellewell <phillip@hellewell.homeip.net> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
parent
23b5212cc7
commit
386f275f5d
@ -736,12 +736,13 @@ static int ecryptfs_init_kmem_caches(void)
|
|||||||
|
|
||||||
static struct kset *ecryptfs_kset;
|
static struct kset *ecryptfs_kset;
|
||||||
|
|
||||||
static ssize_t version_show(struct kset *kset, char *buff)
|
static ssize_t version_show(struct kobject *kobj,
|
||||||
|
struct kobj_attribute *attr, char *buff)
|
||||||
{
|
{
|
||||||
return snprintf(buff, PAGE_SIZE, "%d\n", ECRYPTFS_VERSIONING_MASK);
|
return snprintf(buff, PAGE_SIZE, "%d\n", ECRYPTFS_VERSIONING_MASK);
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct subsys_attribute version_attr = __ATTR_RO(version);
|
static struct kobj_attribute version_attr = __ATTR_RO(version);
|
||||||
|
|
||||||
static struct ecryptfs_version_str_map_elem {
|
static struct ecryptfs_version_str_map_elem {
|
||||||
u32 flag;
|
u32 flag;
|
||||||
@ -755,7 +756,8 @@ static struct ecryptfs_version_str_map_elem {
|
|||||||
{ECRYPTFS_VERSIONING_MULTKEY, "multiple keys per file"}
|
{ECRYPTFS_VERSIONING_MULTKEY, "multiple keys per file"}
|
||||||
};
|
};
|
||||||
|
|
||||||
static ssize_t version_str_show(struct kset *kset, char *buff)
|
static ssize_t version_str_show(struct kobject *kobj,
|
||||||
|
struct kobj_attribute *attr, char *buff)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
int remaining = PAGE_SIZE;
|
int remaining = PAGE_SIZE;
|
||||||
@ -782,7 +784,7 @@ static ssize_t version_str_show(struct kset *kset, char *buff)
|
|||||||
return total_written;
|
return total_written;
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct subsys_attribute version_attr_str = __ATTR_RO(version_str);
|
static struct kobj_attribute version_attr_str = __ATTR_RO(version_str);
|
||||||
|
|
||||||
static struct attribute *attributes[] = {
|
static struct attribute *attributes[] = {
|
||||||
&version_attr.attr,
|
&version_attr.attr,
|
||||||
|
@ -17,30 +17,34 @@
|
|||||||
#include <linux/sched.h>
|
#include <linux/sched.h>
|
||||||
|
|
||||||
#define KERNEL_ATTR_RO(_name) \
|
#define KERNEL_ATTR_RO(_name) \
|
||||||
static struct subsys_attribute _name##_attr = __ATTR_RO(_name)
|
static struct kobj_attribute _name##_attr = __ATTR_RO(_name)
|
||||||
|
|
||||||
#define KERNEL_ATTR_RW(_name) \
|
#define KERNEL_ATTR_RW(_name) \
|
||||||
static struct subsys_attribute _name##_attr = \
|
static struct kobj_attribute _name##_attr = \
|
||||||
__ATTR(_name, 0644, _name##_show, _name##_store)
|
__ATTR(_name, 0644, _name##_show, _name##_store)
|
||||||
|
|
||||||
#if defined(CONFIG_HOTPLUG) && defined(CONFIG_NET)
|
#if defined(CONFIG_HOTPLUG) && defined(CONFIG_NET)
|
||||||
/* current uevent sequence number */
|
/* current uevent sequence number */
|
||||||
static ssize_t uevent_seqnum_show(struct kset *kset, char *page)
|
static ssize_t uevent_seqnum_show(struct kobject *kobj,
|
||||||
|
struct kobj_attribute *attr, char *buf)
|
||||||
{
|
{
|
||||||
return sprintf(page, "%llu\n", (unsigned long long)uevent_seqnum);
|
return sprintf(buf, "%llu\n", (unsigned long long)uevent_seqnum);
|
||||||
}
|
}
|
||||||
KERNEL_ATTR_RO(uevent_seqnum);
|
KERNEL_ATTR_RO(uevent_seqnum);
|
||||||
|
|
||||||
/* uevent helper program, used during early boo */
|
/* uevent helper program, used during early boo */
|
||||||
static ssize_t uevent_helper_show(struct kset *kset, char *page)
|
static ssize_t uevent_helper_show(struct kobject *kobj,
|
||||||
|
struct kobj_attribute *attr, char *buf)
|
||||||
{
|
{
|
||||||
return sprintf(page, "%s\n", uevent_helper);
|
return sprintf(buf, "%s\n", uevent_helper);
|
||||||
}
|
}
|
||||||
static ssize_t uevent_helper_store(struct kset *kset, const char *page, size_t count)
|
static ssize_t uevent_helper_store(struct kobject *kobj,
|
||||||
|
struct kobj_attribute *attr,
|
||||||
|
const char *buf, size_t count)
|
||||||
{
|
{
|
||||||
if (count+1 > UEVENT_HELPER_PATH_LEN)
|
if (count+1 > UEVENT_HELPER_PATH_LEN)
|
||||||
return -ENOENT;
|
return -ENOENT;
|
||||||
memcpy(uevent_helper, page, count);
|
memcpy(uevent_helper, buf, count);
|
||||||
uevent_helper[count] = '\0';
|
uevent_helper[count] = '\0';
|
||||||
if (count && uevent_helper[count-1] == '\n')
|
if (count && uevent_helper[count-1] == '\n')
|
||||||
uevent_helper[count-1] = '\0';
|
uevent_helper[count-1] = '\0';
|
||||||
@ -50,21 +54,24 @@ KERNEL_ATTR_RW(uevent_helper);
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_KEXEC
|
#ifdef CONFIG_KEXEC
|
||||||
static ssize_t kexec_loaded_show(struct kset *kset, char *page)
|
static ssize_t kexec_loaded_show(struct kobject *kobj,
|
||||||
|
struct kobj_attribute *attr, char *buf)
|
||||||
{
|
{
|
||||||
return sprintf(page, "%d\n", !!kexec_image);
|
return sprintf(buf, "%d\n", !!kexec_image);
|
||||||
}
|
}
|
||||||
KERNEL_ATTR_RO(kexec_loaded);
|
KERNEL_ATTR_RO(kexec_loaded);
|
||||||
|
|
||||||
static ssize_t kexec_crash_loaded_show(struct kset *kset, char *page)
|
static ssize_t kexec_crash_loaded_show(struct kobject *kobj,
|
||||||
|
struct kobj_attribute *attr, char *buf)
|
||||||
{
|
{
|
||||||
return sprintf(page, "%d\n", !!kexec_crash_image);
|
return sprintf(buf, "%d\n", !!kexec_crash_image);
|
||||||
}
|
}
|
||||||
KERNEL_ATTR_RO(kexec_crash_loaded);
|
KERNEL_ATTR_RO(kexec_crash_loaded);
|
||||||
|
|
||||||
static ssize_t vmcoreinfo_show(struct kset *kset, char *page)
|
static ssize_t vmcoreinfo_show(struct kobject *kobj,
|
||||||
|
struct kobj_attribute *attr, char *buf)
|
||||||
{
|
{
|
||||||
return sprintf(page, "%lx %x\n",
|
return sprintf(buf, "%lx %x\n",
|
||||||
paddr_vmcoreinfo_note(),
|
paddr_vmcoreinfo_note(),
|
||||||
(unsigned int)vmcoreinfo_max_size);
|
(unsigned int)vmcoreinfo_max_size);
|
||||||
}
|
}
|
||||||
|
@ -567,7 +567,8 @@ static const char * const hibernation_modes[] = {
|
|||||||
* supports it (as determined by having hibernation_ops).
|
* supports it (as determined by having hibernation_ops).
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static ssize_t disk_show(struct kset *kset, char *buf)
|
static ssize_t disk_show(struct kobject *kobj, struct kobj_attribute *attr,
|
||||||
|
char *buf)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
char *start = buf;
|
char *start = buf;
|
||||||
@ -597,7 +598,8 @@ static ssize_t disk_show(struct kset *kset, char *buf)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static ssize_t disk_store(struct kset *kset, const char *buf, size_t n)
|
static ssize_t disk_store(struct kobject *kobj, struct kobj_attribute *attr,
|
||||||
|
const char *buf, size_t n)
|
||||||
{
|
{
|
||||||
int error = 0;
|
int error = 0;
|
||||||
int i;
|
int i;
|
||||||
@ -642,13 +644,15 @@ static ssize_t disk_store(struct kset *kset, const char *buf, size_t n)
|
|||||||
|
|
||||||
power_attr(disk);
|
power_attr(disk);
|
||||||
|
|
||||||
static ssize_t resume_show(struct kset *kset, char *buf)
|
static ssize_t resume_show(struct kobject *kobj, struct kobj_attribute *attr,
|
||||||
|
char *buf)
|
||||||
{
|
{
|
||||||
return sprintf(buf,"%d:%d\n", MAJOR(swsusp_resume_device),
|
return sprintf(buf,"%d:%d\n", MAJOR(swsusp_resume_device),
|
||||||
MINOR(swsusp_resume_device));
|
MINOR(swsusp_resume_device));
|
||||||
}
|
}
|
||||||
|
|
||||||
static ssize_t resume_store(struct kset *kset, const char *buf, size_t n)
|
static ssize_t resume_store(struct kobject *kobj, struct kobj_attribute *attr,
|
||||||
|
const char *buf, size_t n)
|
||||||
{
|
{
|
||||||
unsigned int maj, min;
|
unsigned int maj, min;
|
||||||
dev_t res;
|
dev_t res;
|
||||||
@ -674,12 +678,14 @@ static ssize_t resume_store(struct kset *kset, const char *buf, size_t n)
|
|||||||
|
|
||||||
power_attr(resume);
|
power_attr(resume);
|
||||||
|
|
||||||
static ssize_t image_size_show(struct kset *kset, char *buf)
|
static ssize_t image_size_show(struct kobject *kobj, struct kobj_attribute *attr,
|
||||||
|
char *buf)
|
||||||
{
|
{
|
||||||
return sprintf(buf, "%lu\n", image_size);
|
return sprintf(buf, "%lu\n", image_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
static ssize_t image_size_store(struct kset *kset, const char *buf, size_t n)
|
static ssize_t image_size_store(struct kobject *kobj, struct kobj_attribute *attr,
|
||||||
|
const char *buf, size_t n)
|
||||||
{
|
{
|
||||||
unsigned long size;
|
unsigned long size;
|
||||||
|
|
||||||
|
@ -289,7 +289,8 @@ struct kset *power_kset;
|
|||||||
* proper enumerated value, and initiates a suspend transition.
|
* proper enumerated value, and initiates a suspend transition.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static ssize_t state_show(struct kset *kset, char *buf)
|
static ssize_t state_show(struct kobject *kobj, struct kobj_attribute *attr,
|
||||||
|
char *buf)
|
||||||
{
|
{
|
||||||
char *s = buf;
|
char *s = buf;
|
||||||
#ifdef CONFIG_SUSPEND
|
#ifdef CONFIG_SUSPEND
|
||||||
@ -310,7 +311,8 @@ static ssize_t state_show(struct kset *kset, char *buf)
|
|||||||
return (s - buf);
|
return (s - buf);
|
||||||
}
|
}
|
||||||
|
|
||||||
static ssize_t state_store(struct kset *kset, const char *buf, size_t n)
|
static ssize_t state_store(struct kobject *kobj, struct kobj_attribute *attr,
|
||||||
|
const char *buf, size_t n)
|
||||||
{
|
{
|
||||||
#ifdef CONFIG_SUSPEND
|
#ifdef CONFIG_SUSPEND
|
||||||
suspend_state_t state = PM_SUSPEND_STANDBY;
|
suspend_state_t state = PM_SUSPEND_STANDBY;
|
||||||
@ -347,13 +349,15 @@ power_attr(state);
|
|||||||
#ifdef CONFIG_PM_TRACE
|
#ifdef CONFIG_PM_TRACE
|
||||||
int pm_trace_enabled;
|
int pm_trace_enabled;
|
||||||
|
|
||||||
static ssize_t pm_trace_show(struct kset *kset, char *buf)
|
static ssize_t pm_trace_show(struct kobject *kobj, struct kobj_attribute *attr,
|
||||||
|
char *buf)
|
||||||
{
|
{
|
||||||
return sprintf(buf, "%d\n", pm_trace_enabled);
|
return sprintf(buf, "%d\n", pm_trace_enabled);
|
||||||
}
|
}
|
||||||
|
|
||||||
static ssize_t
|
static ssize_t
|
||||||
pm_trace_store(struct kset *kset, const char *buf, size_t n)
|
pm_trace_store(struct kobject *kobj, struct kobj_attribute *attr,
|
||||||
|
const char *buf, size_t n)
|
||||||
{
|
{
|
||||||
int val;
|
int val;
|
||||||
|
|
||||||
|
@ -54,7 +54,7 @@ extern int pfn_is_nosave(unsigned long);
|
|||||||
extern struct mutex pm_mutex;
|
extern struct mutex pm_mutex;
|
||||||
|
|
||||||
#define power_attr(_name) \
|
#define power_attr(_name) \
|
||||||
static struct subsys_attribute _name##_attr = { \
|
static struct kobj_attribute _name##_attr = { \
|
||||||
.attr = { \
|
.attr = { \
|
||||||
.name = __stringify(_name), \
|
.name = __stringify(_name), \
|
||||||
.mode = 0644, \
|
.mode = 0644, \
|
||||||
|
@ -627,6 +627,7 @@ static void dynamic_kobj_release(struct kobject *kobj)
|
|||||||
|
|
||||||
static struct kobj_type dynamic_kobj_ktype = {
|
static struct kobj_type dynamic_kobj_ktype = {
|
||||||
.release = dynamic_kobj_release,
|
.release = dynamic_kobj_release,
|
||||||
|
.sysfs_ops = &kobj_sysfs_ops,
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -836,7 +837,8 @@ static void kset_release(struct kobject *kobj)
|
|||||||
kfree(kset);
|
kfree(kset);
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct kobj_type kset_type = {
|
static struct kobj_type kset_ktype = {
|
||||||
|
.sysfs_ops = &kobj_sysfs_ops,
|
||||||
.release = kset_release,
|
.release = kset_release,
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -869,11 +871,11 @@ static struct kset *kset_create(const char *name,
|
|||||||
kset->kobj.parent = parent_kobj;
|
kset->kobj.parent = parent_kobj;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The kobject of this kset will have a type of kset_type and belong to
|
* The kobject of this kset will have a type of kset_ktype and belong to
|
||||||
* no kset itself. That way we can properly free it when it is
|
* no kset itself. That way we can properly free it when it is
|
||||||
* finished being used.
|
* finished being used.
|
||||||
*/
|
*/
|
||||||
kset->kobj.ktype = &kset_type;
|
kset->kobj.ktype = &kset_ktype;
|
||||||
kset->kobj.kset = NULL;
|
kset->kobj.kset = NULL;
|
||||||
|
|
||||||
return kset;
|
return kset;
|
||||||
|
Loading…
Reference in New Issue
Block a user