diff options
author | David Woodhouse <David.Woodhouse@intel.com> | 2010-05-02 04:21:21 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2010-05-21 12:37:28 -0400 |
commit | dd336c554d8926c3348a2d5f2a5ef5597f6d1a06 (patch) | |
tree | 457178c0d3189d6c3e02922aca36e528f4fc50a9 /include/linux/firmware.h | |
parent | cdc6e3d3968052cebb2f2ddcd742bff29fbd1a90 (diff) |
firmware_class: fix memory leak - free allocated pages
fix memory leak introduced by the patch 6e03a201bbe:
firmware: speed up request_firmware()
1. vfree won't release pages there were allocated explicitly and mapped
using vmap. The memory has to be vunmap-ed and the pages needs
to be freed explicitly
2. page array is moved into the 'struct
firmware' so that we can free it from release_firmware()
and not only in fw_dev_release()
The fix doesn't break the firmware load speed.
Cc: Johannes Berg <johannes@sipsolutions.net>
Cc: Ming Lei <tom.leiming@gmail.com>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Singed-off-by: Kay Sievers <kay.sievers@vrfy.org>
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'include/linux/firmware.h')
-rw-r--r-- | include/linux/firmware.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/include/linux/firmware.h b/include/linux/firmware.h index 043811f0d277..53d1e6c4f848 100644 --- a/include/linux/firmware.h +++ b/include/linux/firmware.h | |||
@@ -12,6 +12,7 @@ | |||
12 | struct firmware { | 12 | struct firmware { |
13 | size_t size; | 13 | size_t size; |
14 | const u8 *data; | 14 | const u8 *data; |
15 | struct page **pages; | ||
15 | }; | 16 | }; |
16 | 17 | ||
17 | struct device; | 18 | struct device; |