diff options
author | Paulo Alcantara <pc@cjr.nz> | 2022-10-04 18:41:36 -0300 |
---|---|---|
committer | Steve French <stfrench@microsoft.com> | 2022-12-19 08:03:11 -0600 |
commit | 6d740164d8903e6a0e98c30f80fac6af19ce0a21 (patch) | |
tree | 9861e8bfcac455a3a51dba53cc4208351c44837b /fs/cifs/misc.c | |
parent | 2301bc103ac4acb6d6b6e5860eeed448c4ba2df0 (diff) | |
download | linux-stable-6d740164d8903e6a0e98c30f80fac6af19ce0a21.tar.gz linux-stable-6d740164d8903e6a0e98c30f80fac6af19ce0a21.tar.bz2 linux-stable-6d740164d8903e6a0e98c30f80fac6af19ce0a21.zip |
cifs: set resolved ip in sockaddr
All callers from dns_resolve_server_name_to_ip() used to convert the
ip addr string back to sockaddr, so do that inside
dns_resolve_server_name_to_ip() and avoid duplicating code.
Signed-off-by: Paulo Alcantara (SUSE) <pc@cjr.nz>
Signed-off-by: Steve French <stfrench@microsoft.com>
Diffstat (limited to 'fs/cifs/misc.c')
-rw-r--r-- | fs/cifs/misc.c | 36 |
1 files changed, 10 insertions, 26 deletions
diff --git a/fs/cifs/misc.c b/fs/cifs/misc.c index 062175994e87..4d3c586785a5 100644 --- a/fs/cifs/misc.c +++ b/fs/cifs/misc.c @@ -1258,44 +1258,28 @@ int match_target_ip(struct TCP_Server_Info *server, bool *result) { int rc; - char *target, *tip = NULL; - struct sockaddr tipaddr; + char *target; + struct sockaddr_storage ss; *result = false; target = kzalloc(share_len + 3, GFP_KERNEL); - if (!target) { - rc = -ENOMEM; - goto out; - } + if (!target) + return -ENOMEM; scnprintf(target, share_len + 3, "\\\\%.*s", (int)share_len, share); cifs_dbg(FYI, "%s: target name: %s\n", __func__, target + 2); - rc = dns_resolve_server_name_to_ip(target, &tip, NULL); - if (rc < 0) - goto out; - - cifs_dbg(FYI, "%s: target ip: %s\n", __func__, tip); + rc = dns_resolve_server_name_to_ip(target, (struct sockaddr *)&ss, NULL); + kfree(target); - if (!cifs_convert_address(&tipaddr, tip, strlen(tip))) { - cifs_dbg(VFS, "%s: failed to convert target ip address\n", - __func__); - rc = -EINVAL; - goto out; - } + if (rc < 0) + return rc; - *result = cifs_match_ipaddr((struct sockaddr *)&server->dstaddr, - &tipaddr); + *result = cifs_match_ipaddr((struct sockaddr *)&server->dstaddr, (struct sockaddr *)&ss); cifs_dbg(FYI, "%s: ip addresses match: %u\n", __func__, *result); - rc = 0; - -out: - kfree(target); - kfree(tip); - - return rc; + return 0; } int cifs_update_super_prepath(struct cifs_sb_info *cifs_sb, char *prefix) |