diff options
author | 2013-12-28 16:53:59 +0100 | |
---|---|---|
committer | 2014-01-08 20:29:19 -0800 | |
commit | 08da2012e0bb0f3f1422cce3f76c36a90da366b5 (patch) | |
tree | 62ebb93c62391db44bc3f29db6c34667df6fddbc /drivers/base/firmware_class.c | |
parent | driver-core: Fix use-after-free triggered by bus_unregister() (diff) | |
download | linux-08da2012e0bb0f3f1422cce3f76c36a90da366b5.tar.gz linux-08da2012e0bb0f3f1422cce3f76c36a90da366b5.tar.bz2 linux-08da2012e0bb0f3f1422cce3f76c36a90da366b5.zip |
firmware_class: Fix the file size check
We expect to read firmware blobs with a single call to kernel_read(),
which returns int. Therefore the size must be within the range of
int, not long.
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/base/firmware_class.c')
-rw-r--r-- | drivers/base/firmware_class.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/drivers/base/firmware_class.c b/drivers/base/firmware_class.c index 54592e66551f..8a97ddfa6122 100644 --- a/drivers/base/firmware_class.c +++ b/drivers/base/firmware_class.c @@ -280,21 +280,21 @@ module_param_string(path, fw_path_para, sizeof(fw_path_para), 0644); MODULE_PARM_DESC(path, "customized firmware image search path with a higher priority than default path"); /* Don't inline this: 'struct kstat' is biggish */ -static noinline_for_stack long fw_file_size(struct file *file) +static noinline_for_stack int fw_file_size(struct file *file) { struct kstat st; if (vfs_getattr(&file->f_path, &st)) return -1; if (!S_ISREG(st.mode)) return -1; - if (st.size != (long)st.size) + if (st.size != (int)st.size) return -1; return st.size; } static int fw_read_file_contents(struct file *file, struct firmware_buf *fw_buf) { - long size; + int size; char *buf; int rc; |