diff options
author | David Woodhouse <David.Woodhouse@intel.com> | 2010-05-02 11:21:21 +0300 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2010-05-21 09:37:28 -0700 |
commit | dd336c554d8926c3348a2d5f2a5ef5597f6d1a06 (patch) | |
tree | 457178c0d3189d6c3e02922aca36e528f4fc50a9 /include/linux/firmware.h | |
parent | cdc6e3d3968052cebb2f2ddcd742bff29fbd1a90 (diff) | |
download | op-kernel-dev-dd336c554d8926c3348a2d5f2a5ef5597f6d1a06.zip op-kernel-dev-dd336c554d8926c3348a2d5f2a5ef5597f6d1a06.tar.gz |
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 043811f..53d1e6c 100644 --- a/include/linux/firmware.h +++ b/include/linux/firmware.h @@ -12,6 +12,7 @@ struct firmware { size_t size; const u8 *data; + struct page **pages; }; struct device; |