diff options
author | Jaegeuk Kim <jaegeuk@kernel.org> | 2015-05-29 03:06:40 +0300 |
---|---|---|
committer | Jaegeuk Kim <jaegeuk@kernel.org> | 2015-06-02 02:21:08 +0300 |
commit | e5e0906b6b4c517a8622f2ff196c19cbd1068644 (patch) | |
tree | 9c9b203e3e6a2f7294a2cdf27afdc3af0ef95e5e | |
parent | e992e238ff93920da65f5aa83d3f3e257530ce8b (diff) | |
download | linux-e5e0906b6b4c517a8622f2ff196c19cbd1068644.tar.xz |
f2fs crypto: clean up error handling in f2fs_fname_setup_filename
Sync with:
ext4 crypto: clean up error handling in ext4_fname_setup_filename
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
-rw-r--r-- | fs/f2fs/crypto_fname.c | 24 |
1 files changed, 10 insertions, 14 deletions
diff --git a/fs/f2fs/crypto_fname.c b/fs/f2fs/crypto_fname.c index 81852cca7bbe..ab377d496a39 100644 --- a/fs/f2fs/crypto_fname.c +++ b/fs/f2fs/crypto_fname.c @@ -392,15 +392,13 @@ int f2fs_fname_setup_filename(struct inode *dir, const struct qstr *iname, return ret; ret = f2fs_fname_encrypt(dir, iname, &fname->crypto_buf); if (ret < 0) - goto out; + goto errout; fname->disk_name.name = fname->crypto_buf.name; fname->disk_name.len = fname->crypto_buf.len; return 0; } - if (!lookup) { - ret = -EACCES; - goto out; - } + if (!lookup) + return -EACCES; /* We don't have the key and we are doing a lookup; decode the * user-supplied name @@ -408,19 +406,17 @@ int f2fs_fname_setup_filename(struct inode *dir, const struct qstr *iname, if (iname->name[0] == '_') bigname = 1; if ((bigname && (iname->len != 33)) || - (!bigname && (iname->len > 43))) { - ret = -ENOENT; - } + (!bigname && (iname->len > 43))) + return -ENOENT; + fname->crypto_buf.name = kmalloc(32, GFP_KERNEL); - if (fname->crypto_buf.name == NULL) { - ret = -ENOMEM; - goto out; - } + if (fname->crypto_buf.name == NULL) + return -ENOMEM; ret = digest_decode(iname->name + bigname, iname->len - bigname, fname->crypto_buf.name); if (ret < 0) { ret = -ENOENT; - goto out; + goto errout; } fname->crypto_buf.len = ret; if (bigname) { @@ -430,7 +426,7 @@ int f2fs_fname_setup_filename(struct inode *dir, const struct qstr *iname, fname->disk_name.len = fname->crypto_buf.len; } return 0; -out: +errout: f2fs_fname_crypto_free_buffer(&fname->crypto_buf); return ret; } |