summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorJeff Layton <jlayton@poochiereds.net>2015-06-09 19:43:59 -0400
committerTrond Myklebust <trond.myklebust@primarydata.com>2015-06-16 11:15:45 -0400
commita319268891089386bd303bb90ace89d75e47102f (patch)
tree61a5c98cccfed198dc94764eea31c3f0f759d786 /include
parentb8fb2f595e8009ad245d564b7a443d108a2334cd (diff)
nfs: make nfs4_init_nonuniform_client_string use a dynamically allocated buffer
The way the *_client_string functions work is a little goofy. They build the string in an on-stack buffer and then use kstrdup to copy it. This is not only stack-heavy but artificially limits the size of the client name string. Change it so that we determine the length of the string, allocate it and then scnprintf into it. Since the contents of the nonuniform string depend on rcu-managed data structures, it's possible that they'll change between when we allocate the string and when we go to fill it. If that happens, free the string, recalculate the length and try again. If it the mismatch isn't resolved on the second try then just give up and return -EINVAL. Signed-off-by: Jeff Layton <jeff.layton@primarydata.com> Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
Diffstat (limited to 'include')
0 files changed, 0 insertions, 0 deletions