Skip to content

Commit

Permalink
mac80211: make debugfs files root-only
Browse files Browse the repository at this point in the history
Unfortunately, debugfs can be made to access invalid memory by
open()ing a file and then waiting until the corresponding debugfs
file has been removed (and, probably, the underlying object.)

That could be exploited by any user if the user is able to open
debugfs files and can cause networking devices, STA entries or
similar to disappear which is quite easy to do.

Hence, all debugfs files should be root-only.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
  • Loading branch information
Johannes Berg authored and John W. Linville committed Apr 8, 2008
1 parent a82d992 commit bebb8a5
Show file tree
Hide file tree
Showing 3 changed files with 6 additions and 6 deletions.
4 changes: 2 additions & 2 deletions net/mac80211/debugfs.c
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ static const struct file_operations name## _ops = { \
};

#define DEBUGFS_ADD(name) \
local->debugfs.name = debugfs_create_file(#name, 0444, phyd, \
local->debugfs.name = debugfs_create_file(#name, 0400, phyd, \
local, &name## _ops);

#define DEBUGFS_DEL(name) \
Expand Down Expand Up @@ -130,7 +130,7 @@ static const struct file_operations stats_ ##name## _ops = { \
};

#define DEBUGFS_STATS_ADD(name) \
local->debugfs.stats.name = debugfs_create_file(#name, 0444, statsd,\
local->debugfs.stats.name = debugfs_create_file(#name, 0400, statsd,\
local, &stats_ ##name## _ops);

#define DEBUGFS_STATS_DEL(name) \
Expand Down
6 changes: 3 additions & 3 deletions net/mac80211/debugfs_netdev.c
Original file line number Diff line number Diff line change
Expand Up @@ -243,7 +243,7 @@ IEEE80211_IF_WFILE(min_discovery_timeout,


#define DEBUGFS_ADD(name, type)\
sdata->debugfs.type.name = debugfs_create_file(#name, 0444,\
sdata->debugfs.type.name = debugfs_create_file(#name, 0400,\
sdata->debugfsdir, sdata, &name##_ops);

static void add_sta_files(struct ieee80211_sub_if_data *sdata)
Expand Down Expand Up @@ -298,7 +298,7 @@ static void add_monitor_files(struct ieee80211_sub_if_data *sdata)

#ifdef CONFIG_MAC80211_MESH
#define MESHSTATS_ADD(name)\
sdata->mesh_stats.name = debugfs_create_file(#name, 0444,\
sdata->mesh_stats.name = debugfs_create_file(#name, 0400,\
sdata->mesh_stats_dir, sdata, &name##_ops);

static void add_mesh_stats(struct ieee80211_sub_if_data *sdata)
Expand All @@ -312,7 +312,7 @@ static void add_mesh_stats(struct ieee80211_sub_if_data *sdata)
}

#define MESHPARAMS_ADD(name)\
sdata->mesh_config.name = debugfs_create_file(#name, 0644,\
sdata->mesh_config.name = debugfs_create_file(#name, 0600,\
sdata->mesh_config_dir, sdata, &name##_ops);

static void add_mesh_config(struct ieee80211_sub_if_data *sdata)
Expand Down
2 changes: 1 addition & 1 deletion net/mac80211/debugfs_sta.c
Original file line number Diff line number Diff line change
Expand Up @@ -266,7 +266,7 @@ static ssize_t sta_agg_status_write(struct file *file,
STA_OPS_WR(agg_status);

#define DEBUGFS_ADD(name) \
sta->debugfs.name = debugfs_create_file(#name, 0444, \
sta->debugfs.name = debugfs_create_file(#name, 0400, \
sta->debugfs.dir, sta, &sta_ ##name## _ops);

#define DEBUGFS_DEL(name) \
Expand Down

0 comments on commit bebb8a5

Please sign in to comment.