mirror of
https://github.com/torvalds/linux.git
synced 2026-04-18 06:44:00 -04:00
kernfs has historically used const void * to pass around namespace tags used for directory-level namespace filtering. The only current user of this is sysfs network namespace tagging where struct net pointers are cast to void *. Replace all const void * namespace parameters with const struct ns_common * throughout the kernfs, sysfs, and kobject namespace layers. This includes the kobj_ns_type_operations callbacks, kobject_namespace(), and all sysfs/kernfs APIs that accept or return namespace tags. Passing struct ns_common is needed because various codepaths require access to the underlying namespace. A struct ns_common can always be converted back to the concrete namespace type (e.g., struct net) via container_of() or to_ns_common() in the reverse direction. This is a preparatory change for switching to ns_id-based directory iteration to prevent a KASLR pointer leak through the current use of raw namespace pointers as hash seeds and comparison keys. Signed-off-by: Christian Brauner <brauner@kernel.org>
44 lines
1007 B
C
44 lines
1007 B
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
/*
|
|
* fs/sysfs/sysfs.h - sysfs internal header file
|
|
*
|
|
* Copyright (c) 2001-3 Patrick Mochel
|
|
* Copyright (c) 2007 SUSE Linux Products GmbH
|
|
* Copyright (c) 2007 Tejun Heo <teheo@suse.de>
|
|
*/
|
|
|
|
#ifndef __SYSFS_INTERNAL_H
|
|
#define __SYSFS_INTERNAL_H
|
|
|
|
#include <linux/sysfs.h>
|
|
|
|
/*
|
|
* mount.c
|
|
*/
|
|
extern struct kernfs_node *sysfs_root_kn;
|
|
|
|
/*
|
|
* dir.c
|
|
*/
|
|
extern spinlock_t sysfs_symlink_target_lock;
|
|
|
|
void sysfs_warn_dup(struct kernfs_node *parent, const char *name);
|
|
|
|
/*
|
|
* file.c
|
|
*/
|
|
int sysfs_add_file_mode_ns(struct kernfs_node *parent,
|
|
const struct attribute *attr, umode_t amode, kuid_t uid,
|
|
kgid_t gid, const struct ns_common *ns);
|
|
int sysfs_add_bin_file_mode_ns(struct kernfs_node *parent,
|
|
const struct bin_attribute *battr, umode_t mode, size_t size,
|
|
kuid_t uid, kgid_t gid, const struct ns_common *ns);
|
|
|
|
/*
|
|
* symlink.c
|
|
*/
|
|
int sysfs_create_link_sd(struct kernfs_node *kn, struct kobject *target,
|
|
const char *name);
|
|
|
|
#endif /* __SYSFS_INTERNAL_H */
|