diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2017-09-14 21:13:32 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2017-09-14 21:13:32 -0400 |
commit | 581bfce969cbfc7ce43ee92273be9cb7c3fdfa61 (patch) | |
tree | 0a693778ce39c49b9b7d93d0d6795c576896f5cf /fs/binfmt_flat.c | |
parent | cc73fee0bae2d66594d1fa2df92bbd783aa98e04 (diff) | |
parent | 9725d4cef62229b4ec4c912e0db0761e7d400650 (diff) |
Merge branch 'work.set_fs' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
Pull more set_fs removal from Al Viro:
"Christoph's 'use kernel_read and friends rather than open-coding
set_fs()' series"
* 'work.set_fs' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
fs: unexport vfs_readv and vfs_writev
fs: unexport vfs_read and vfs_write
fs: unexport __vfs_read/__vfs_write
lustre: switch to kernel_write
gadget/f_mass_storage: stop messing with the address limit
mconsole: switch to kernel_read
btrfs: switch write_buf to kernel_write
net/9p: switch p9_fd_read to kernel_write
mm/nommu: switch do_mmap_private to kernel_read
serial2002: switch serial2002_tty_write to kernel_{read/write}
fs: make the buf argument to __kernel_write a void pointer
fs: fix kernel_write prototype
fs: fix kernel_read prototype
fs: move kernel_read to fs/read_write.c
fs: move kernel_write to fs/read_write.c
autofs4: switch autofs4_write to __kernel_write
ashmem: switch to ->read_iter
Diffstat (limited to 'fs/binfmt_flat.c')
-rw-r--r-- | fs/binfmt_flat.c | 18 |
1 files changed, 5 insertions, 13 deletions
diff --git a/fs/binfmt_flat.c b/fs/binfmt_flat.c index ce6537c50ec1..475d083f8088 100644 --- a/fs/binfmt_flat.c +++ b/fs/binfmt_flat.c | |||
@@ -176,19 +176,14 @@ static int create_flat_tables(struct linux_binprm *bprm, unsigned long arg_start | |||
176 | #define ENCRYPTED 0x20 /* bit 5 set: file is encrypted */ | 176 | #define ENCRYPTED 0x20 /* bit 5 set: file is encrypted */ |
177 | #define RESERVED 0xC0 /* bit 6,7: reserved */ | 177 | #define RESERVED 0xC0 /* bit 6,7: reserved */ |
178 | 178 | ||
179 | static int decompress_exec( | 179 | static int decompress_exec(struct linux_binprm *bprm, loff_t fpos, char *dst, |
180 | struct linux_binprm *bprm, | 180 | long len, int fd) |
181 | unsigned long offset, | ||
182 | char *dst, | ||
183 | long len, | ||
184 | int fd) | ||
185 | { | 181 | { |
186 | unsigned char *buf; | 182 | unsigned char *buf; |
187 | z_stream strm; | 183 | z_stream strm; |
188 | loff_t fpos; | ||
189 | int ret, retval; | 184 | int ret, retval; |
190 | 185 | ||
191 | pr_debug("decompress_exec(offset=%lx,buf=%p,len=%lx)\n", offset, dst, len); | 186 | pr_debug("decompress_exec(offset=%llx,buf=%p,len=%lx)\n", fpos, dst, len); |
192 | 187 | ||
193 | memset(&strm, 0, sizeof(strm)); | 188 | memset(&strm, 0, sizeof(strm)); |
194 | strm.workspace = kmalloc(zlib_inflate_workspacesize(), GFP_KERNEL); | 189 | strm.workspace = kmalloc(zlib_inflate_workspacesize(), GFP_KERNEL); |
@@ -202,13 +197,11 @@ static int decompress_exec( | |||
202 | } | 197 | } |
203 | 198 | ||
204 | /* Read in first chunk of data and parse gzip header. */ | 199 | /* Read in first chunk of data and parse gzip header. */ |
205 | fpos = offset; | 200 | ret = kernel_read(bprm->file, buf, LBUFSIZE, &fpos); |
206 | ret = kernel_read(bprm->file, offset, buf, LBUFSIZE); | ||
207 | 201 | ||
208 | strm.next_in = buf; | 202 | strm.next_in = buf; |
209 | strm.avail_in = ret; | 203 | strm.avail_in = ret; |
210 | strm.total_in = 0; | 204 | strm.total_in = 0; |
211 | fpos += ret; | ||
212 | 205 | ||
213 | retval = -ENOEXEC; | 206 | retval = -ENOEXEC; |
214 | 207 | ||
@@ -274,7 +267,7 @@ static int decompress_exec( | |||
274 | } | 267 | } |
275 | 268 | ||
276 | while ((ret = zlib_inflate(&strm, Z_NO_FLUSH)) == Z_OK) { | 269 | while ((ret = zlib_inflate(&strm, Z_NO_FLUSH)) == Z_OK) { |
277 | ret = kernel_read(bprm->file, fpos, buf, LBUFSIZE); | 270 | ret = kernel_read(bprm->file, buf, LBUFSIZE, &fpos); |
278 | if (ret <= 0) | 271 | if (ret <= 0) |
279 | break; | 272 | break; |
280 | len -= ret; | 273 | len -= ret; |
@@ -282,7 +275,6 @@ static int decompress_exec( | |||
282 | strm.next_in = buf; | 275 | strm.next_in = buf; |
283 | strm.avail_in = ret; | 276 | strm.avail_in = ret; |
284 | strm.total_in = 0; | 277 | strm.total_in = 0; |
285 | fpos += ret; | ||
286 | } | 278 | } |
287 | 279 | ||
288 | if (ret < 0) { | 280 | if (ret < 0) { |