7c8d469877
Currently, the user provided fops, "real_fops", are stored directly into ->d_fsdata. In order to be able to store more per-file state and thus prepare for more granular file removal protection, wrap the real_fops into a dynamically allocated container struct, debugfs_fsdata. A struct debugfs_fsdata gets allocated at file creation and freed from the newly intoduced ->d_release(). Finally, move the implementation of debugfs_real_fops() out of the public debugfs header such that struct debugfs_fsdata's declaration can be kept private. Signed-off-by: Nicolai Stange <nicstange@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
27 lines
743 B
C
27 lines
743 B
C
/*
|
|
* internal.h - declarations internal to debugfs
|
|
*
|
|
* Copyright (C) 2016 Nicolai Stange <nicstange@gmail.com>
|
|
*
|
|
* This program is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU General Public License version
|
|
* 2 as published by the Free Software Foundation.
|
|
*
|
|
*/
|
|
|
|
#ifndef _DEBUGFS_INTERNAL_H_
|
|
#define _DEBUGFS_INTERNAL_H_
|
|
|
|
struct file_operations;
|
|
|
|
/* declared over in file.c */
|
|
extern const struct file_operations debugfs_noop_file_operations;
|
|
extern const struct file_operations debugfs_open_proxy_file_operations;
|
|
extern const struct file_operations debugfs_full_proxy_file_operations;
|
|
|
|
struct debugfs_fsdata {
|
|
const struct file_operations *real_fops;
|
|
};
|
|
|
|
#endif /* _DEBUGFS_INTERNAL_H_ */
|