9p: use copy of the options value instead of original
Subsystems (2)
Latchesar Ionkov
maintainerPATCH 1/1 9p: use copy of the options value instead of original
v9fs_parse_options function uses strsep which modifies the value of the v9ses->options field. That modified value is later passed to the function that creates the transport potentially making the transport creation function to fail.
This patch creates a copy of v9ses->option field that v9fs_parse_options function uses instead of the original value.
Signed-off-by Latchesar Ionkov <[email protected]>
---
commit 0c0b7fa3d4e80ab3e4e69b8a55661f649d1b41ff
tree eeb4ac6ea85387c153e3f7f6cad370e1c5dc8534
parent c9927c2bf4f45bb85e8b502ab3fb79ad6483c244 author Latchesar Ionkov <[email protected]> 1193438132 -0600 committer Latchesar Ionkov <[email protected]> 1193438132 -0600
fs/9p/v9fs.c | 6 ++++-- 1 files changed, 4 insertions(+), 2 deletions(-)
fs/9p/v9fs.c +4 -2
@@ -82,7 +82,7 @@ static match_table_t tokens = {static void v9fs_parse_options (struct v9fs_session_info *v9ses) { -char *options = v9ses->options; +char *options;substring_t args[MAX_OPT_ARGS ];char *p;int option;
@@ -96,9 +96,10 @@ static void v9fs_parse_options(struct v9fs_session_info *v9ses) v9ses->cache =0 ; v9ses->trans =v9fs_default_trans (); -if (!options) +if (!v9ses->options)return ; + options =kstrdup (v9ses->options,GFP_KERNEL );while ((p =strsep (&options,"," )) !=NULL ) {int token;if (!*p)
@@ -169,6 +170,7 @@ static void v9fs_parse_options(struct v9fs_session_info *v9ses)continue ; } } +kfree (options); }/**