Messages in this thread Patch in this message | | | Subject | [PATCH] firmware_class: Fix the file size check | From | Ben Hutchings <> | Date | Sat, 28 Dec 2013 16:53:59 +0100 |
| |
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> --- --- a/drivers/base/firmware_class.c +++ b/drivers/base/firmware_class.c @@ -270,21 +270,21 @@ module_param_string(path, fw_path_para, 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 bool fw_read_file_contents(struct file *file, struct firmware_buf *fw_buf) { - long size; + int size; char *buf; size = fw_file_size(file); -- Ben Hutchings Kids! Bringing about Armageddon can be dangerous. Do not attempt it in your own home. - Terry Pratchett and Neil Gaiman, `Good Omens' [unhandled content-type:application/pgp-signature] | |