NFSD: Helper function for parsing uuid
Subsystems (2)
PATCH 2/4 NFSD: Helper function for parsing uuid
Signed-off-by Kinglong Mee <[email protected]>
--- fs/nfsd/export.c | 32 ++++++++++++++++++++------------ 1 file changed, 20 insertions(+), 12 deletions(-)
fs/nfsd/export.c +20 -12
@@ -480,6 +480,23 @@ static inline int secinfo_parse(char **mesg, char *buf, struct svc_export *exp) { return 0; }#endif +static inline int +uuid_parse (char **mesg,char *buf,unsigned char **puuid) +{ +int len; + +/* expect a 16 byte uuid encoded as \xXXXX... */ + len =qword_get (mesg, buf,PAGE_SIZE ); +if (len !=16 ) +return -EINVAL ; + + *puuid =kmemdup (buf,16 ,GFP_KERNEL ); +if (*puuid ==NULL ) +return -ENOMEM ; + +return 0 ; +} +static int svc_export_parse (struct cache_detail *cd,char *mesg,int mlen) {/* client path expiry [flags anonuid anongid fsid] */
@@ -558,18 +575,9 @@ static int svc_export_parse(struct cache_detail *cd, char *mesg, int mlen)while ((len =qword_get (&mesg, buf,PAGE_SIZE )) >0 ) {if (strcmp (buf,"fsloc" ) ==0 ) err =fsloc_parse (&mesg, buf, &exp.ex_fslocs); -else if (strcmp (buf,"uuid" ) ==0 ) { -/* expect a 16 byte uuid encoded as \xXXXX... */ - len =qword_get (&mesg, buf,PAGE_SIZE ); -if (len !=16 ) - err = -EINVAL ; -else { - exp.ex_uuid = -kmemdup (buf,16 ,GFP_KERNEL ); -if (exp.ex_uuid ==NULL ) - err = -ENOMEM ; - } - }else if (strcmp (buf,"secinfo" ) ==0 ) +else if (strcmp (buf,"uuid" ) ==0 ) + err =uuid_parse (&mesg, buf, &exp.ex_uuid); +else if (strcmp (buf,"secinfo" ) ==0 ) err =secinfo_parse (&mesg, buf, &exp);else /* quietly ignore unknown words and anything
Signature · 1 line
1.9.0