32548 Commits

Author SHA1 Message Date
Andrea Arcangeli 14468afe50 fs/exec: fix use after free in execve
"file" can be already freed if bprm->file is NULL after
search_binary_handler() return. binfmt_script will do exactly that for
example. If the VM reuses the file after fput run(), this will result in
a use ater free.

So obtain d_is_su before search_binary_handler() runs.

This should explain this crash:

[25333.009554] Unable to handle kernel NULL pointer dereference at virtual address 00000185
[..]
[25333.009918] [2:             am:21861] PC is at do_execve+0x354/0x474

Change-Id: I2a8a814d1c0aa75625be83cb30432cf13f1a0681
Signed-off-by: Kevin F. Haggerty <haggertk@lineageos.org>
2018-05-03 18:49:05 +02:00
Alberto97 d0b3db957e fs: readdir: Fix su hide patch for non-iterate filesystems
* 3.10 doesn't normally use iterate for filesystems,
  but it was backported in hopes of removing vfs_readdir()
* Because the romnt variable was only set for filesystems
  using iterate, the su hide patches were broken for many
  filesytems like ext4, which still use vfs_readdir()
  instead of iterate_dir() like their mainline counterparts
* Remove the iterate check around setting romnt to fix this

Change-Id: I26426683df0fd199a80f053294f352e31754bec5
2018-05-03 18:47:07 +02:00
Tom Marshall 05e290dfc9 kernel: Fix potential refcount leak in su check
Change-Id: I7e1ecb78bfc951bf645a1462988dcd93c4247a9b
2018-05-03 18:46:03 +02:00
Tom Marshall 672c40a112 kernel: Only expose su when daemon is running
It has been claimed that the PG implementation of 'su' has security
vulnerabilities even when disabled.  Unfortunately, the people that
find these vulnerabilities often like to keep them private so they
can profit from exploits while leaving users exposed to malicious
hackers.

In order to reduce the attack surface for vulnerabilites, it is
therefore necessary to make 'su' completely inaccessible when it
is not in use (except by the root and system users).

Change-Id: I79716c72f74d0b7af34ec3a8054896c6559a181d
2018-05-03 18:44:36 +02:00
Al Viro 0f63c0e88f introduce ->iterate(), ctx->pos, dir_emit()
New method - ->iterate(file, ctx).  That's the replacement for ->readdir();
it takes callback from ctx->actor, uses ctx->pos instead of file->f_pos and
calls dir_emit(ctx, ...) instead of filldir(data, ...).  It does *not*
update file->f_pos (or look at it, for that matter); iterate_dir() does the
update.

Note that dir_emit() takes the offset from ctx->pos (and eventually
filldir_t will lose that argument).

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
2018-05-03 18:37:22 +02:00
Al Viro 0f8376923b introduce iterate_dir() and dir_context
iterate_dir(): new helper, replacing vfs_readdir().

struct dir_context: contains the readdir callback (and will get more stuff
in it), embedded into whatever data that callback wants to deal with;
eventually, we'll be passing it to ->readdir() replacement instead of
(data,filldir) pair.

Change-Id: Idb3843e77b97d52490b297b1f9e7d7efab18eaef
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
2018-05-03 18:33:29 +02:00
Stricted 9afc0d8b26 fix compilation after merge 2018-03-21 23:40:56 +01:00
Stricted bdecc6d184 Merge tag 'v3.10.108' into update
This is the 3.10.108 stable release
2018-03-21 23:07:40 +01:00
Stricted 073b9047a0 Merge tag 'v3.10.107' into update
This is the 3.10.107 stable release
2018-03-21 23:07:35 +01:00
Stricted 47e5ca72da Merge tag 'v3.10.106' into update
This is the 3.10.106 stable release
2018-03-21 23:06:23 +01:00
Stricted ad957d335c Merge tag 'v3.10.105' into update
This is the 3.10.105 stable release
2018-03-21 23:00:38 +01:00
Stricted b9e7bc93d6 Merge tag 'v3.10.103' into update
This is the 3.10.103 stable release
2018-03-21 22:58:21 +01:00
Stricted a8732f92e3 Merge tag 'v3.10.102' into update
This is the 3.10.102 stable release
2018-03-21 22:54:09 +01:00
Stricted 9aae3dad3d Merge tag 'v3.10.101' into update
This is the 3.10.101 stable release
2018-03-21 22:52:41 +01:00
Stricted 93481ad93e Merge tag 'v3.10.100' into update
This is the 3.10.100 stable release
2018-03-21 22:52:38 +01:00
Stricted d09f889ac9 Merge tag 'v3.10.99' into update
This is the 3.10.99 stable release
2018-03-21 22:51:42 +01:00
Stricted 647f2da1e2 Merge tag 'v3.10.98' into update
This is the 3.10.98 stable release
2018-03-21 22:51:37 +01:00
Stricted dd388bd4cd Merge tag 'v3.10.97' into update
This is the 3.10.97 stable release
2018-03-21 22:51:04 +01:00
Stricted f3d34b554f Merge tag 'v3.10.95' into update
This is the 3.10.95 stable release
2018-03-21 22:50:56 +01:00
Stricted d50b84c473 Merge tag 'v3.10.91' into update
This is the 3.10.91 stable release
2018-03-21 22:48:36 +01:00
Stricted 8441062777 Merge tag 'v3.10.90' into update
This is the 3.10.90 stable release
2018-03-21 22:47:31 +01:00
Stricted 15bd15baa8 Merge tag 'v3.10.89' into update
This is the 3.10.89 stable release
2018-03-21 22:47:28 +01:00
Stricted 3460ea59c6 Merge tag 'v3.10.87' into update
This is the 3.10.87 stable release
2018-03-21 22:47:22 +01:00
Stricted 45f8c76c71 Merge tag 'v3.10.86' into update
This is the 3.10.86 stable release
2018-03-21 22:47:17 +01:00
Stricted 38b8911896 Merge tag 'v3.10.85' into update
This is the 3.10.85 stable release
2018-03-21 22:46:39 +01:00
Stricted a03fb26067 Merge tag 'v3.10.84' into update
This is the 3.10.84 stable release
2018-03-21 22:46:36 +01:00
Stricted 81575b8770 Merge tag 'v3.10.83' into update
This is the 3.10.83 stable release
2018-03-21 22:46:32 +01:00
Stricted 241abbf30d Merge tag 'v3.10.82' into update
This is the 3.10.82 stable release
2018-03-21 22:45:38 +01:00
Stricted eabf5dacf4 Merge tag 'v3.10.81' into update
This is the 3.10.81 stable release
2018-03-21 22:45:35 +01:00
Stricted 5eab702925 Merge tag 'v3.10.80' into update
This is the 3.10.80 stable release
2018-03-21 22:45:22 +01:00
Stricted 705e3c2e81 Merge tag 'v3.10.79' into update
This is the 3.10.79 stable release
2018-03-21 22:44:42 +01:00
Stricted 9d35d890f3 Merge tag 'v3.10.78' into update
This is the 3.10.78 stable release
2018-03-21 22:44:38 +01:00
Stricted 9b13083065 Merge tag 'v3.10.77' into update
This is the 3.10.77 stable release
2018-03-21 22:44:34 +01:00
Stricted 85511b9d61 Merge tag 'v3.10.76' into update
This is the 3.10.76 stable release
2018-03-21 22:42:30 +01:00
Stricted 446a42c9b2 Merge tag 'v3.10.75' into update
This is the 3.10.75 stable release
2018-03-21 22:41:10 +01:00
Stricted 4a7de1f3d4 Merge tag 'v3.10.74' into update
This is the 3.10.74 stable release
2018-03-21 22:41:07 +01:00
Stricted eff333fa3b Merge tag 'v3.10.73' into update
This is the 3.10.73 stable release
2018-03-21 22:41:03 +01:00
Stricted aba762bde4 Merge tag 'v3.10.72' into update
This is the 3.10.72 stable release
2018-03-21 22:40:54 +01:00
Stricted 5d8d08710c Merge tag 'v3.10.71' into update
This is the 3.10.71 stable release
2018-03-21 22:40:50 +01:00
Stricted 4a2455f795 Merge tag 'v3.10.69' into update
This is the 3.10.69 stable release
2018-03-21 22:39:46 +01:00
Stricted 875966bda8 Merge tag 'v3.10.68' into update
This is the 3.10.68 stable release
2018-03-21 22:38:24 +01:00
Stricted b2d402e5a4 Merge tag 'v3.10.67' into update
This is the 3.10.67 stable release
2018-03-21 22:36:30 +01:00
Stricted 3219320124 Merge tag 'v3.10.66' into update
This is the 3.10.66 stable release
2018-03-21 22:36:27 +01:00
Stricted 90cb50b720 Merge tag 'v3.10.65' into update
This is the 3.10.65 stable release
2018-03-21 22:36:23 +01:00
Stricted d242a5721c Merge tag 'v3.10.64' into update
This is the 3.10.64 stable release
2018-03-21 22:33:51 +01:00
Stricted 44c8e3c96a Merge tag 'v3.10.63' into update
This is the 3.10.63 stable release
2018-03-21 22:33:47 +01:00
Stricted 620f7405fd Merge tag 'v3.10.62' into update
This is the 3.10.62 stable release
2018-03-21 22:31:45 +01:00
Stricted 7887027a47 Merge tag 'v3.10.61' into update
This is the 3.10.61 stable release
2018-03-21 22:31:40 +01:00
Stricted 6f56b75961 Merge tag 'v3.10.60' into update
This is the 3.10.60 stable release
2018-03-21 22:31:34 +01:00
Stricted 583be8778f Merge tag 'v3.10.59' into update
This is the 3.10.59 stable release
2018-03-21 22:31:29 +01:00