diff options
| author | Jeff Layton <jlayton@redhat.com> | 2008-08-27 13:53:30 -0400 |
|---|---|---|
| committer | Steve French <sfrench@us.ibm.com> | 2008-08-27 17:17:41 -0400 |
| commit | 87ed1d65fb536a0cd4e84874c0b038f953e448aa (patch) | |
| tree | c6af45a3605a037a5f53101107da5e4cd4024325 | |
| parent | 96c2a1137b9e00bcdbe3a95113ea8f42ca994f76 (diff) | |
[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>
| -rw-r--r-- | fs/cifs/CHANGES | 3 | ||||
| -rw-r--r-- | fs/cifs/dns_resolve.c | 7 |
2 files changed, 9 insertions, 1 deletions
diff --git a/fs/cifs/CHANGES b/fs/cifs/CHANGES index 526041a52d35..f9e4ad97a79e 100644 --- a/fs/cifs/CHANGES +++ b/fs/cifs/CHANGES | |||
| @@ -8,7 +8,8 @@ architectures. Fix problems with preserving timestamps on copying open | |||
| 8 | files (e.g. "cp -a") to Windows servers. For mkdir and create honor setgid bit | 8 | files (e.g. "cp -a") to Windows servers. For mkdir and create honor setgid bit |
| 9 | on parent directory when server supports Unix Extensions but not POSIX | 9 | on parent directory when server supports Unix Extensions but not POSIX |
| 10 | create. Update cifs.upcall version to handle new Kerberos sec flags | 10 | create. Update cifs.upcall version to handle new Kerberos sec flags |
| 11 | (this requires update of cifs.upcall program from Samba). | 11 | (this requires update of cifs.upcall program from Samba). Fix memory leak |
| 12 | on dns_upcall (resolving DFS referralls). | ||
| 12 | 13 | ||
| 13 | Version 1.53 | 14 | Version 1.53 |
| 14 | ------------ | 15 | ------------ |
diff --git a/fs/cifs/dns_resolve.c b/fs/cifs/dns_resolve.c index f730ef35499e..a2e0673e1b08 100644 --- a/fs/cifs/dns_resolve.c +++ b/fs/cifs/dns_resolve.c | |||
| @@ -47,11 +47,18 @@ static int dns_resolver_instantiate(struct key *key, const void *data, | |||
| 47 | return rc; | 47 | return rc; |
| 48 | } | 48 | } |
| 49 | 49 | ||
| 50 | static void | ||
| 51 | dns_resolver_destroy(struct key *key) | ||
| 52 | { | ||
| 53 | kfree(key->payload.data); | ||
| 54 | } | ||
| 55 | |||
| 50 | struct key_type key_type_dns_resolver = { | 56 | struct key_type key_type_dns_resolver = { |
| 51 | .name = "dns_resolver", | 57 | .name = "dns_resolver", |
| 52 | .def_datalen = sizeof(struct in_addr), | 58 | .def_datalen = sizeof(struct in_addr), |
| 53 | .describe = user_describe, | 59 | .describe = user_describe, |
| 54 | .instantiate = dns_resolver_instantiate, | 60 | .instantiate = dns_resolver_instantiate, |
| 61 | .destroy = dns_resolver_destroy, | ||
| 55 | .match = user_match, | 62 | .match = user_match, |
| 56 | }; | 63 | }; |
| 57 | 64 | ||
