X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=fs%2Fexec.c;h=a1789cd684bf25dde64739c2c38b1bcc23cd3eb3;hb=a098ecd2fa7db8fa4fcc178a43627b29b226edb9;hp=ca239fc86d8d0acd5446d754ff341e2d4d4613cb;hpb=0e742e927571946e08e877d3629e6efd4891ed95;p=deliverable%2Flinux.git diff --git a/fs/exec.c b/fs/exec.c index ca239fc86d8d..a1789cd684bf 100644 --- a/fs/exec.c +++ b/fs/exec.c @@ -866,7 +866,8 @@ int kernel_read_file(struct file *file, void **buf, loff_t *size, goto out; } - *buf = vmalloc(i_size); + if (id != READING_FIRMWARE_PREALLOC_BUFFER) + *buf = vmalloc(i_size); if (!*buf) { ret = -ENOMEM; goto out; @@ -897,8 +898,10 @@ int kernel_read_file(struct file *file, void **buf, loff_t *size, out_free: if (ret < 0) { - vfree(*buf); - *buf = NULL; + if (id != READING_FIRMWARE_PREALLOC_BUFFER) { + vfree(*buf); + *buf = NULL; + } } out: