summaryrefslogtreecommitdiffstats
path: root/runtime/transport/debugfs.c
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/transport/debugfs.c')
-rw-r--r--runtime/transport/debugfs.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/runtime/transport/debugfs.c b/runtime/transport/debugfs.c
index 85ee604d..6bbef53b 100644
--- a/runtime/transport/debugfs.c
+++ b/runtime/transport/debugfs.c
@@ -10,6 +10,7 @@
*/
#include <linux/debugfs.h>
+#include "transport.h"
#define STP_DEFAULT_BUFFERS 50
@@ -22,18 +23,26 @@ static struct dentry *_stp_cmd_file = NULL;
static int _stp_register_ctl_channel_fs(void)
{
- if (_stp_utt == NULL) {
- errk("_expected _stp_utt to be set.\n");
+ struct dentry *module_dir = _stp_get_module_dir();
+ if (module_dir == NULL) {
+ errk("no module directory found.\n");
return -1;
}
/* create [debugfs]/systemtap/module_name/.cmd */
- _stp_cmd_file = debugfs_create_file(".cmd", 0600, _stp_utt->dir,
+ _stp_cmd_file = debugfs_create_file(".cmd", 0600, module_dir,
NULL, &_stp_ctl_fops_cmd);
if (_stp_cmd_file == NULL) {
errk("Error creating systemtap debugfs entries.\n");
return -1;
}
+ else if (IS_ERR(_stp_cmd_file)) {
+ _stp_cmd_file = NULL;
+ errk("Error creating systemtap debugfs entries: %ld\n",
+ -PTR_ERR(_stp_cmd_file));
+ return -1;
+ }
+
_stp_cmd_file->d_inode->i_uid = _stp_uid;
_stp_cmd_file->d_inode->i_gid = _stp_gid;