Skip to content

Commit dbd6a82

Browse files
committed
orangefs-debugfs.c: fix parsing problem with kernel debug keywords.
When /sys/kernel/debug/orangefs/kernel-debug was set to a single keyword, the keyword was ignored. Now single and multiple keyword settings produce the expected debug output to the ring buffer. Signed-off-by: Mike Marshall <hubcap@omnibond.com>
1 parent 7aaa804 commit dbd6a82

1 file changed

Lines changed: 11 additions & 10 deletions

File tree

fs/orangefs/orangefs-debugfs.c

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -443,7 +443,7 @@ static ssize_t orangefs_debug_write(struct file *file,
443443
count = ORANGEFS_MAX_DEBUG_STRING_LEN;
444444
}
445445

446-
buf = memdup_user_nul(ubuf, count - 1);
446+
buf = memdup_user_nul(ubuf, count);
447447
if (IS_ERR(buf)) {
448448
gossip_debug(GOSSIP_DEBUGFS_DEBUG,
449449
"%s: memdup_user_nul failed!\n",
@@ -452,6 +452,7 @@ static ssize_t orangefs_debug_write(struct file *file,
452452
buf = NULL;
453453
goto out;
454454
}
455+
strim(buf);
455456

456457
/*
457458
* Map the keyword string from userspace into a valid debug mask.
@@ -873,9 +874,10 @@ static int check_amalgam_keyword(void *mask, int type)
873874
*/
874875
static void debug_string_to_mask(char *debug_string, void *mask, int type)
875876
{
876-
char *unchecked_keyword;
877877
int i;
878878
char *strsep_fodder = kstrdup(debug_string, GFP_KERNEL);
879+
char *trimmed;
880+
char *token;
879881
char *original_pointer;
880882
int element_count = 0;
881883
struct client_debug_mask *c_mask = NULL;
@@ -893,18 +895,17 @@ static void debug_string_to_mask(char *debug_string, void *mask, int type)
893895
}
894896

895897
original_pointer = strsep_fodder;
896-
while ((unchecked_keyword = strsep(&strsep_fodder, ",")))
897-
if (strlen(unchecked_keyword)) {
898+
while ((token = strsep(&strsep_fodder, ",")) != NULL) {
899+
trimmed = strim(token);
900+
if (*trimmed) {
898901
for (i = 0; i < element_count; i++)
899902
if (type)
900-
do_c_mask(i,
901-
unchecked_keyword,
902-
&c_mask);
903+
do_c_mask(i, trimmed, &c_mask);
903904
else
904-
do_k_mask(i,
905-
unchecked_keyword,
906-
&k_mask);
905+
do_k_mask(i, trimmed, &k_mask);
906+
907907
}
908+
}
908909

909910
kfree(original_pointer);
910911
}

0 commit comments

Comments
 (0)