mirror of
https://github.com/FEX-Emu/linux.git
synced 2024-11-30 19:11:16 +00:00
sysfs: Wrap __compat_only_sysfs_link_entry_to_kobj function to change the symlink name
The __compat_only_sysfs_link_entry_to_kobj function creates a symlink to a kobject but doesn't provide an option to change the symlink file name. This patch adds a wrapper function compat_only_sysfs_link_entry_to_kobj that extends the __compat_only_sysfs_link_entry_to_kobj functionality which allows function caller to customize the symlink name. Signed-off-by: Sourabh Jain <sourabhjain@linux.ibm.com> [mpe: Fix compile error when CONFIG_SYSFS=n] Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Link: https://lore.kernel.org/r/20191211160910.21656-3-sourabhjain@linux.ibm.com
This commit is contained in:
parent
f52153ab38
commit
9255782f70
@ -424,6 +424,25 @@ EXPORT_SYMBOL_GPL(sysfs_remove_link_from_group);
|
||||
int __compat_only_sysfs_link_entry_to_kobj(struct kobject *kobj,
|
||||
struct kobject *target_kobj,
|
||||
const char *target_name)
|
||||
{
|
||||
return compat_only_sysfs_link_entry_to_kobj(kobj, target_kobj,
|
||||
target_name, NULL);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(__compat_only_sysfs_link_entry_to_kobj);
|
||||
|
||||
/**
|
||||
* compat_only_sysfs_link_entry_to_kobj - add a symlink to a kobject pointing
|
||||
* to a group or an attribute
|
||||
* @kobj: The kobject containing the group.
|
||||
* @target_kobj: The target kobject.
|
||||
* @target_name: The name of the target group or attribute.
|
||||
* @symlink_name: The name of the symlink file (target_name will be
|
||||
* considered if symlink_name is NULL).
|
||||
*/
|
||||
int compat_only_sysfs_link_entry_to_kobj(struct kobject *kobj,
|
||||
struct kobject *target_kobj,
|
||||
const char *target_name,
|
||||
const char *symlink_name)
|
||||
{
|
||||
struct kernfs_node *target;
|
||||
struct kernfs_node *entry;
|
||||
@ -448,12 +467,15 @@ int __compat_only_sysfs_link_entry_to_kobj(struct kobject *kobj,
|
||||
return -ENOENT;
|
||||
}
|
||||
|
||||
link = kernfs_create_link(kobj->sd, target_name, entry);
|
||||
if (!symlink_name)
|
||||
symlink_name = target_name;
|
||||
|
||||
link = kernfs_create_link(kobj->sd, symlink_name, entry);
|
||||
if (PTR_ERR(link) == -EEXIST)
|
||||
sysfs_warn_dup(kobj->sd, target_name);
|
||||
sysfs_warn_dup(kobj->sd, symlink_name);
|
||||
|
||||
kernfs_put(entry);
|
||||
kernfs_put(target);
|
||||
return PTR_ERR_OR_ZERO(link);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(__compat_only_sysfs_link_entry_to_kobj);
|
||||
EXPORT_SYMBOL_GPL(compat_only_sysfs_link_entry_to_kobj);
|
||||
|
@ -300,6 +300,10 @@ void sysfs_remove_link_from_group(struct kobject *kobj, const char *group_name,
|
||||
int __compat_only_sysfs_link_entry_to_kobj(struct kobject *kobj,
|
||||
struct kobject *target_kobj,
|
||||
const char *target_name);
|
||||
int compat_only_sysfs_link_entry_to_kobj(struct kobject *kobj,
|
||||
struct kobject *target_kobj,
|
||||
const char *target_name,
|
||||
const char *symlink_name);
|
||||
|
||||
void sysfs_notify(struct kobject *kobj, const char *dir, const char *attr);
|
||||
|
||||
@ -508,6 +512,14 @@ static inline int __compat_only_sysfs_link_entry_to_kobj(
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline int compat_only_sysfs_link_entry_to_kobj(struct kobject *kobj,
|
||||
struct kobject *target_kobj,
|
||||
const char *target_name,
|
||||
const char *symlink_name)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline void sysfs_notify(struct kobject *kobj, const char *dir,
|
||||
const char *attr)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user