Преглед на файлове

[CIFS] Add destroy routine for dns_resolver

Otherwise, we're leaking the payload memory.

CC: Stable Kernel <stable@vger.kernel.org>
Acked-by: David Howells <dhowells@redhat.com>
Signed-off-by: Jeff Layton <jlayton@redhat.com>
Signed-off-by: Steve French <sfrench@us.ibm.com>
Jeff Layton преди 16 години
родител
ревизия
87ed1d65fb
променени са 2 файла, в които са добавени 9 реда и са изтрити 1 реда
  1. 2 1
      fs/cifs/CHANGES
  2. 7 0
      fs/cifs/dns_resolve.c

+ 2 - 1
fs/cifs/CHANGES

@@ -8,7 +8,8 @@ architectures.  Fix problems with preserving timestamps on copying open
 files (e.g. "cp -a") to Windows servers.  For mkdir and create honor setgid bit
 files (e.g. "cp -a") to Windows servers.  For mkdir and create honor setgid bit
 on parent directory when server supports Unix Extensions but not POSIX
 on parent directory when server supports Unix Extensions but not POSIX
 create. Update cifs.upcall version to handle new Kerberos sec flags
 create. Update cifs.upcall version to handle new Kerberos sec flags
-(this requires update of cifs.upcall program from Samba).
+(this requires update of cifs.upcall program from Samba).  Fix memory leak
+on dns_upcall (resolving DFS referralls).
 
 
 Version 1.53
 Version 1.53
 ------------
 ------------

+ 7 - 0
fs/cifs/dns_resolve.c

@@ -47,11 +47,18 @@ static int dns_resolver_instantiate(struct key *key, const void *data,
 	return rc;
 	return rc;
 }
 }
 
 
+static void
+dns_resolver_destroy(struct key *key)
+{
+	kfree(key->payload.data);
+}
+
 struct key_type key_type_dns_resolver = {
 struct key_type key_type_dns_resolver = {
 	.name        = "dns_resolver",
 	.name        = "dns_resolver",
 	.def_datalen = sizeof(struct in_addr),
 	.def_datalen = sizeof(struct in_addr),
 	.describe    = user_describe,
 	.describe    = user_describe,
 	.instantiate = dns_resolver_instantiate,
 	.instantiate = dns_resolver_instantiate,
+	.destroy     = dns_resolver_destroy,
 	.match       = user_match,
 	.match       = user_match,
 };
 };