Commit Graph

573296 Commits

Author SHA1 Message Date
Roman Kiryanov
d02443d2d2 goldfish: pipe: ANDROID: fix checkpatch warnings
Bug: 72717639
bug: 66884503
Change-Id: I83ddd1c2da24a2658d8fe1e43718aa6e9fc47d5d
Signed-off-by: Roman Kiryanov <rkir@google.com>
2018-05-20 16:43:18 +05:30
Roman Kiryanov
d312ab4228 goldfish: pipe: ANDROID: Update module license
Change MODULE_LICENSE() string to properly match
the license for the driver (goldfish_pipe.h).

Bug: 72717639
Bug: 66884503
Change-Id: I4d1ef778276b26b49c83c967c3c9314b2c0c5da7
Signed-off-by: Roman Kiryanov <rkir@google.com>
2018-05-20 16:43:18 +05:30
Roman Kiryanov
64e15ed26a goldfish: pipe: ANDROID: Do not crash
Return an error instead of crashing in signalled_pipes_add_locked.

Bug: 72717639
Bug: 66884503
Change-Id: I811ad1932f1600f8bbe4598cdaf206bd96ea921a
Signed-off-by: Roman Kiryanov <rkir@google.com>
2018-05-20 16:40:16 +05:30
Roman Kiryanov
a85993aca2 goldfish: pipe: ANDROID: remove redundant casting
Casting twice is not required.

Bug: 72717639
Bug: 66884503
Change-Id: I3420388683a9746f2d2110af51d9d25c12c7eea6
Signed-off-by: Roman Kiryanov <rkir@google.com>
2018-05-20 16:40:16 +05:30
Roman Kiryanov
3065c55c49 goldfish: pipe: ANDROID: Add 'pipe' to pipe functions
Replace the 'goldfish' prefix with 'goldfish_pipe' to
say they are pipe functions.

Bug: 72717639
Bug: 66884503
Change-Id: I5a5cf7ee38cf2ae193877b1ffac19eadb15a374a
Signed-off-by: Roman Kiryanov <rkir@google.com>
2018-05-20 16:40:16 +05:30
Roman Kiryanov
1b76a5f98a goldfish: pipe: ANDROID: fix whitespace
Make checkpatch.pl happy.

Bug: 72717639
Bug: 66884503
Change-Id: Ie8758cc91595eba57a0c9144cfba9309da62c966
Signed-off-by: Roman Kiryanov <rkir@google.com>
2018-05-20 16:40:16 +05:30
Roman Kiryanov
fe7ccc47c0 goldfish: pipe: ANDROID: rename global variables
We don't need an array of 1 for pipe_dev and
use better names to distinguish between
goldfish_pipe_dev and miscdevice.

Bug: 72717639
Bug: 66884503
Change-Id: Iab040c158745f034ca8e9569fd49c84933b1c4ba
Signed-off-by: Roman Kiryanov <rkir@google.com>
2018-05-20 16:40:16 +05:30
Roman Kiryanov
110f1b5390 goldfish: pipe: ANDROID: add blank lines
To separate variable declarations from executable code
and to improve readability.

Bug: 72717639
Bug: 66884503
Change-Id: I46fb70b13b8e3d061dfc2288f5720a379f1f39a9
Signed-off-by: Roman Kiryanov <rkir@google.com>
2018-05-20 16:40:16 +05:30
Roman Kiryanov
27f5b73e31 goldfish: pipe: ANDROID: replace 'BUG_ON' with 'BUILD_BUG_ON'
Bug: 72717639
Bug: 66884503
Change-Id: I6afcf21c7ff0fd2f5fcca327813b8406798c4269
Signed-off-by: Roman Kiryanov <rkir@google.com>
2018-05-20 16:40:16 +05:30
Roman Kiryanov
9a36f64967 goldfish: pipe: ANDROID: use the 'BIT' macro for wakeup flags
Bug: 72717639
Bug: 66884503
Change-Id: I977525f145d8b678d39867037c5fddcc35e0a52b
Signed-off-by: Roman Kiryanov <rkir@google.com>
2018-05-20 16:40:16 +05:30
Roman Kiryanov
51775a8709 goldfish: pipe: ANDROID: fix logging format strings
* remove '%p' to avoid exposing kernel addresses;
* add missing '\n'.

Bug: 72717639
Bug: 66884503
Change-Id: I81357841dc334df595a3244f232c2e6bb72e64a1
Signed-off-by: Roman Kiryanov <rkir@google.com>
2018-05-20 16:40:16 +05:30
Arnd Bergmann
49488f3c35 UPSTREAM: tracing: always define trace_{irq,preempt}_{enable_disable}
We get a build error in the irqsoff tracer in some configurations:

kernel/trace/trace_irqsoff.c: In function 'trace_preempt_on':
kernel/trace/trace_irqsoff.c:855:2: error: implicit declaration of function 'trace_preempt_enable_rcuidle'; did you mean 'trace_irq_enable_rcuidle'? [-Werror=implicit-function-declaration]
  trace_preempt_enable_rcuidle(a0, a1);

The problem is that trace_preempt_enable_rcuidle() has different
definition based on multiple Kconfig symbols, but not all combinations
have a valid definition.

This changes the conditions so that we always get exactly one
definition of each of the four tracing macros. I have not tried
to verify that these definitions are sensible, but now we
can build all randconfig combinations again.

Link: http://lkml.kernel.org/r/20171019083230.2450779-1-arnd@arndb.de

Change-Id: I28715af208379e993df85c2fb35549290f4fbd6e
Fixes: d59158162e ("tracing: Add support for preempt and irq enable/disable events")
Acked-by: Joel Fernandes <joelaf@google.com>
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
2018-05-20 16:40:16 +05:30
Alistair Strachan
e95d38f9c3 ANDROID: staging: ion: Obey kptr_restrict
Some debugging messages did not use %pK, but since those messages are
not very useful and have been removed upstream, just remove them
instead.

Bug: 77937819
Change-Id: Ie45897fe2d6ec3f842a02883e8ec929ed2e76933
Signed-off-by: Alistair Strachan <astrachan@google.com>
2018-05-20 16:40:16 +05:30
Daniel Rosenberg
d581f4e010 ANDROID: sdcardfs: Set s_root to NULL after putting
Signed-off-by: Daniel Rosenberg <drosen@google.com>
Bug: 77923821
Change-Id: I1705bfd146009561d2d1da5f0e6a342ec6932a1c
2018-05-20 16:40:16 +05:30
Daniel Rosenberg
e81018b738 ANDROID: sdcardfs: d_make_root calls iput
d_make_root will call iput on failure, so we
shouldn't try to do that ourselves.

Signed-off-by: Daniel Rosenberg <drosen@google.com>
Bug: 77923821
Change-Id: I1abb4afb0f894ab917b7c6be8c833676f436beb7
2018-05-20 16:40:16 +05:30
Daniel Rosenberg
968242a30a ANDROID: sdcardfs: Check for private data earlier
When an sdcardfs dentry is destroyed, it may not yet
have its fsdata initialized. It must be checked before
we try to access the paths in its private data.

Additionally, when cleaning up the superblock after
a failure, we don't have our sb private data, so
check for that case.

Bug: 77923821
Change-Id: I89caf6e121ed86480b42024664453fe0031bbcf3
Signed-off-by: Daniel Rosenberg <drosen@google.com>
2018-05-20 16:40:16 +05:30
Jaegeuk Kim
85288dc993 f2fs: check cap_resource only for data blocks
Cherry-pick from origin/upstream-f2fs-stable-linux-4.4.y:
commit f819874f58 ("f2fs: check cap_resource only for data blocks")

This patch changes the rule to check cap_resource for data blocks, not inode
or node blocks in order to avoid selinux denial.

Change-Id: I875d7ccf7cce7b833a1c11cb0eef0b504b823c4a
Reviewed-by: Chao Yu <yuchao0@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
2018-05-20 16:40:16 +05:30
Jaegeuk Kim
806230092a Revert "f2fs: introduce f2fs_set_page_dirty_nobuffer"
Cherry-pick from origin/upstream-f2fs-stable-linux-4.4.y:
commit 3e7a141175 ("Revert "f2fs: introduce f2fs_set_page_dirty_nobuffer"")

This patch reverts copied f2fs_set_page_dirty_nobuffer to use generic function
for stability.

This reverts commit fe76b796fc.

Change-Id: I3d4728d894d1af41a2f1e30ebc375907abd5ffc8
Reviewed-by: Chao Yu <yuchao0@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
2018-05-20 16:40:16 +05:30
Jaegeuk Kim
e07e4c5dc7 f2fs: clear PageError on writepage
Cherry-pick from origin/upstream-f2fs-stable-linux-4.4.y:
commit 070da80085 ("f2fs: clear PageError on writepage")

This patch clears PageError in some pages tagged by read path, but when we
write the pages with valid contents, writepage should clear the bit likewise
ext4.

Change-Id: I7272074f2bb9c81fc43e37074b44e9d761756263
Reviewed-by: Chao Yu <yuchao0@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
2018-05-20 16:40:16 +05:30
Guenter Roeck
4a9564924a UPSTREAM: timer: Export destroy_hrtimer_on_stack()
hrtimer_init_on_stack() needs a matching call to
destroy_hrtimer_on_stack(), so both need to be exported.

Signed-off-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
(cherry picked from commit c08376ac97)
[astrachan: Fixes i386-allmodconfig build failure in vsoc.ko noticed
 by 01.org kbuild-all project building kernel/msm]
Bug: 78036828
Change-Id: If4d5c466255019322ea21ef38ee5b1b382cce969
Signed-off-by: Alistair Strachan <astrachan@google.com>
2018-05-20 16:40:16 +05:30
Patrik Torstensson
67628da0e2 BACKPORT: dm verity: add 'check_at_most_once' option to only validate hashes once
This allows platforms that are CPU/memory contrained to verify data
blocks only the first time they are read from the data device, rather
than every time.  As such, it provides a reduced level of security
because only offline tampering of the data device's content will be
detected, not online tampering.

Hash blocks are still verified each time they are read from the hash
device, since verification of hash blocks is less performance critical
than data blocks, and a hash block will not be verified any more after
all the data blocks it covers have been verified anyway.

This option introduces a bitset that is used to check if a block has
been validated before or not.  A block can be validated more than once
as there is no thread protection for the bitset.

These changes were developed and tested on entry-level Android Go
devices.

(change to use vzalloc/vfree)
(change per_bio_data_size variable)

Bug: 72664474
Change-Id: I2db2db26c7897c78407789de2cc4cff3587c84bb
Signed-off-by: Mike Snitzer <snitzer@redhat.com>
(cherry picked from commit 843f38d382)
Signed-off-by: Patrik Torstensson <totte@google.com>
2018-05-20 16:40:16 +05:30
Eric Biggers
fdb5d70225 f2fs: call unlock_new_inode() before d_instantiate()
Cherry-pick from origin/upstream-f2fs-stable-linux-4.4.y:
  dafecc032e ("f2fs: call unlock_new_inode() before d_instantiate()")

xfstest generic/429 sometimes hangs on f2fs, caused by a thread being
unable to take a directory's i_rwsem for write in vfs_rmdir().  In the
test, one thread repeatedly creates and removes a directory, and other
threads repeatedly look up a file in the directory.  The bug is that
f2fs_mkdir() calls d_instantiate() before unlock_new_inode(), resulting
in the directory inode being exposed to lookups before it has been fully
initialized.  And with CONFIG_DEBUG_LOCK_ALLOC, unlock_new_inode()
reinitializes ->i_rwsem, corrupting its state when it is already held.

Fix it by calling unlock_new_inode() before d_instantiate().  This
matches what other filesystems do.

Fixes: 57397d86c6 ("f2fs: add inode operations for special inodes")
Change-Id: I1c50a45449b89ce590ae2caccb7d499f4b717665
Signed-off-by: Eric Biggers <ebiggers@google.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
2018-05-20 16:40:16 +05:30
Eric Biggers
f00755e878 f2fs: refactor read path to allow multiple postprocessing steps
Cherry-pick from origin/upstream-f2fs-stable-linux-4.4.y:
  c18b4f60c8 ("f2fs: refactor read path to allow multiple postprocessing steps")

Currently f2fs's ->readpage() and ->readpages() assume that either the
data undergoes no postprocessing, or decryption only.  But with
fs-verity, there will be an additional authenticity verification step,
and it may be needed either by itself, or combined with decryption.

To support this, store a 'struct bio_post_read_ctx' in ->bi_private
which contains a work struct, a bitmask of postprocessing steps that are
enabled, and an indicator of the current step.  The bio completion
routine, if there was no I/O error, enqueues the first postprocessing
step.  When that completes, it continues to the next step.  Pages that
fail any postprocessing step have PageError set.  Once all steps have
completed, pages without PageError set are set Uptodate, and all pages
are unlocked.

Also replace f2fs_encrypted_file() with a new function
f2fs_post_read_required() in places like direct I/O and garbage
collection that really should be testing whether the file needs special
I/O processing, not whether it is encrypted specifically.

This may also be useful for other future f2fs features such as
compression.

Change-Id: I742be348b9dfc2113200bcc5366a84e978371a54
Signed-off-by: Eric Biggers <ebiggers@google.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
2018-05-20 16:40:16 +05:30
Eric Biggers
798a35a563 fscrypt: allow synchronous bio decryption
Cherry-pick from origin/upstream-f2fs-stable-linux-4.4.y:
  13890bed20 ("fscrypt: allow synchronous bio decryption")

Currently, fscrypt provides fscrypt_decrypt_bio_pages() which decrypts a
bio's pages asynchronously, then unlocks them afterwards.  But, this
assumes that decryption is the last "postprocessing step" for the bio,
so it's incompatible with additional postprocessing steps such as
authenticity verification after decryption.

Therefore, rename the existing fscrypt_decrypt_bio_pages() to
fscrypt_enqueue_decrypt_bio().  Then, add fscrypt_decrypt_bio() which
decrypts the pages in the bio synchronously without unlocking the pages,
nor setting them Uptodate; and add fscrypt_enqueue_decrypt_work(), which
enqueues work on the fscrypt_read_workqueue.  The new functions will be
used by filesystems that support both fscrypt and fs-verity.

Change-Id: I99f1c7bfb79381f6e4abf2b1f418776b19bd8e08
Signed-off-by: Eric Biggers <ebiggers@google.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
2018-05-20 16:40:16 +05:30
Alistair Strachan
34b8a001bd ANDROID: Add build server config for cuttlefish.
The build server config can be used with gcc or clang.
Specify CC=clang to build with clang.

Change-Id: Id346ab1489ecaaef8e9e66b084cc416dd0581f69
Signed-off-by: Alistair Strachan <astrachan@google.com>
2018-05-20 16:40:16 +05:30
Alistair Strachan
71ef415400 ANDROID: Add defconfig for cuttlefish.
This file is based on x86_64_defconfig, merged with the base and
recommended configs from configs.git, with the virtio drivers enabled
and some spurious kernel features turned off.

(This version differs from the 4.9 and 4.14 versions because it uses the
 deprecated ANDROID_LOW_MEMORY_KILLER feature instead of MEMCG.)

Change-Id: I61bde941e8cfef2dd83cb4ff040f7380922cc44e
Signed-off-by: Alistair Strachan <astrachan@google.com>
2018-05-20 16:40:16 +05:30
Greg Hartman
fd98574d58 FROMLIST: staging: Android: Add 'vsoc' driver for cuttlefish.
The cuttlefish system is a virtual SoC architecture based on QEMU. It
uses the QEMU ivshmem feature to share memory regions between guest and
host with a custom protocol.

Signed-off-by: Greg Hartman <ghartman@google.com>
[sent upstream via staging https://patchwork.kernel.org/patch/10339507/]
Change-Id: Iaf5d7536898329a66d00764d8892d1395164519e
Signed-off-by: Alistair Strachan <astrachan@google.com>
2018-05-20 16:40:16 +05:30
Greg Hackmann
6d12019ad6 Revert "proc: make oom adjustment files user read-only"
CTS no longer expects oom_{adj,score_adj} to be read-only.  See
https://android-review.googlesource.com/530687/ for additional context.

This reverts commit 55541f1ac3.

Bug: 63142211
Change-Id: I8011b4389b17d9577a6aff08943d0021e990171b
Signed-off-by: Greg Hackmann <ghackmann@google.com>
2018-05-20 16:40:16 +05:30
Greg Hackmann
4448b2ce78 Revert "fixup! proc: make oom adjustment files user read-only"
CTS no longer expects oom_{adj,score_adj} to be read-only.  See
https://android-review.googlesource.com/530687/ for additional context.

This reverts commit 87a7a2cfbe.

Bug: 63142211
Change-Id: I1d1b33c93ca6b6c16a9c1d5430dcb5cbe3ec894c
Signed-off-by: Greg Hackmann <ghackmann@google.com>
2018-05-20 16:40:16 +05:30
Connor O'Brien
d9e02c10ed ANDROID: proc: add null check in proc_uid_init
Check for case when proc_mkdir returns null.

Bug: 75236413
Test: Build & boot device; run 'ls /proc/uid/'
Change-Id: Ie8dd71cc724787286a5f7bc19b5a611ac87a2697
Signed-off-by: Connor O'Brien <connoro@google.com>
2018-05-20 16:40:16 +05:30
Jaegeuk Kim
91d910fc2e f2fs/fscrypt: updates to v4.17-rc1
Pull f2fs update from Jaegeuk Kim:
 "In this round, we've mainly focused on performance tuning and critical
  bug fixes occurred in low-end devices. Sheng Yong introduced
  lost_found feature to keep missing files during recovery instead of
  thrashing them. We're preparing coming fsverity implementation. And,
  we've got more features to communicate with users for better
  performance. In low-end devices, some memory-related issues were
  fixed, and subtle race condtions and corner cases were addressed as
  well.

  Enhancements:
   - large nat bitmaps for more free node ids
   - add three block allocation policies to pass down write hints given by user
   - expose extension list to user and introduce hot file extension
   - tune small devices seamlessly for low-end devices
   - set readdir_ra by default
   - give more resources under gc_urgent mode regarding to discard and cleaning
   - introduce fsync_mode to enforce posix or not
   - nowait aio support
   - add lost_found feature to keep dangling inodes
   - reserve bits for future fsverity feature
   - add test_dummy_encryption for FBE

  Bug fixes:
   - don't use highmem for dentry pages
   - align memory boundary for bitops
   - truncate preallocated blocks in write errors
   - guarantee i_times on fsync call
   - clear CP_TRIMMED_FLAG correctly
   - prevent node chain loop during recovery
   - avoid data race between atomic write and background cleaning
   - avoid unnecessary selinux violation warnings on resgid option
   - GFP_NOFS to avoid deadlock in quota and read paths
   - fix f2fs_skip_inode_update to allow i_size recovery

  In addition to the above, there are several minor bug fixes and clean-ups"

Cherry-pick from origin/upstream-f2fs-stable-linux-4.4.y:

42bf67fc54 f2fs: remain written times to update inode during fsync
6cb5aa02bf f2fs: make assignment of t->dentry_bitmap more readable
a8d07f1f9c f2fs: truncate preallocated blocks in error case
86444d6006 f2fs: fix a wrong condition in f2fs_skip_inode_update
db2188a687 f2fs: reserve bits for fs-verity
ee2e74b3f0 f2fs: Add a segment type check in inplace write
0192e0a450 f2fs: no need to initialize zero value for GFP_F2FS_ZERO
49338842e9 f2fs: don't track new nat entry in nat set
d6a69d5e65 f2fs: clean up with F2FS_BLK_ALIGN
2c8834a7a2 f2fs: check blkaddr more accuratly before issue a bio
6ab573a9d9 f2fs: Set GF_NOFS in read_cache_page_gfp while doing f2fs_quota_read
7419dcb8be f2fs: introduce a new mount option test_dummy_encryption
9321e22c03 f2fs: introduce F2FS_FEATURE_LOST_FOUND feature
8a57196158 f2fs: release locks before return in f2fs_ioc_gc_range()
739ace131c f2fs: align memory boundary for bitops
4c55abe4f8 f2fs: remove unneeded set_cold_node()
30654507e0 f2fs: add nowait aio support
d909e94106 f2fs: wrap all options with f2fs_sb_info.mount_opt
5738be52b3 f2fs: Don't overwrite all types of node to keep node chain
0bdeb167c8 f2fs: introduce mount option for fsync mode
6bc490f0ee f2fs: fix to restore old mount option in ->remount_fs
0c9c3e0344 f2fs: wrap sb_rdonly with f2fs_readonly
6c6611223a f2fs: avoid selinux denial on CAP_SYS_RESOURCE
076a6f32fe f2fs: support hot file extension
58edcdbca6 f2fs: fix to avoid race in between atomic write and background GC
1e0aeb0af9 f2fs: do gc in greedy mode for whole range if gc_urgent mode is set
10b2d001d6 f2fs: issue discard aggressively in the gc_urgent mode
a5052f32b9 f2fs: set readdir_ra by default
1aa536a624 f2fs: add auto tuning for small devices
0ffdffc8f1 f2fs: add mount option for segment allocation policy
b798298912 f2fs: don't stop GC if GC is contended
766d232169 f2fs: expose extension_list sysfs entry
98b329de50 f2fs: fix to set KEEP_SIZE bit in f2fs_zero_range
4d409fa334 f2fs: introduce sb_lock to make encrypt pwsalt update exclusive
1f6bac14c1 f2fs: remove redundant initialization of pointer 'p'
946aefc754 f2fs: flush cp pack except cp pack 2 page at first
e5081a52ac f2fs: clean up f2fs_sb_has_xxx functions
a292477154 f2fs: remove redundant check of page type when submit bio
190e64a819 f2fs: fix to handle looped node chain during recovery
889d980876 f2fs: handle quota for orphan inodes
92b12bb1a2 f2fs: support passing down write hints to block layer with F2FS policy
22fa74c2b0 f2fs: support passing down write hints given by users to block layer
180900373e f2fs: fix to clear CP_TRIMMED_FLAG
0671fae134 f2fs: support large nat bitmap
eceb943d5d f2fs: fix to check extent cache in f2fs_drop_extent_tree
2e2a339c98 f2fs: restrict inline_xattr_size configuration
41dda11641 f2fs: fix heap mode to reset it back
39575737bb f2fs: fix potential corruption in area before F2FS_SUPER_OFFSET
7e0e7995ee fscrypt: fix build with pre-4.6 gcc versions
31d3279a4f fscrypt: fix up fscrypt_fname_encrypted_size() for internal use
82bec88856 fscrypt: define fscrypt_fname_alloc_buffer() to be for presented names
168a907828 fscrypt: calculate NUL-padding length in one place only
042ae9f4cf fscrypt: move fscrypt_symlink_data to fscrypt_private.h
f9550c24c2 fscrypt: remove fscrypt_fname_usr_to_disk()
7ac4756a24 f2fs: switch to fscrypt_get_symlink()
6b76f58e24 f2fs: switch to fscrypt ->symlink() helper functions
fd457d2c4e fscrypt: new helper function - fscrypt_get_symlink()
a1cdacb7ae fscrypt: new helper functions for ->symlink()
7f43602f4d fscrypt: trim down fscrypt.h includes
d9cadc11bd fscrypt: move fscrypt_is_dot_dotdot() to fs/crypto/fname.c
e6fe930580 fscrypt: move fscrypt_valid_enc_modes() to fscrypt_private.h
efefa434f4 fscrypt: move fscrypt_operations declaration to fscrypt_supp.h
7ed178bc8a fscrypt: split fscrypt_dummy_context_enabled() into supp/notsupp versions
3f16e09dad fscrypt: move fscrypt_ctx declaration to fscrypt_supp.h
8216a0b51a fscrypt: move fscrypt_info_cachep declaration to fscrypt_private.h
dfe0b3b1b6 fscrypt: move fscrypt_control_page() to supp/notsupp headers
3a2c791778 fscrypt: move fscrypt_has_encryption_key() to supp/notsupp headers

Signed-off-by: Jaegeuk Kim <jaegeuk@google.com>
2018-05-20 16:40:16 +05:30
Roman Kiryanov
f928606c9f Reduce amount of casting in drivers/tty/goldfish.c.
Change-Id: I8be0ff52a4c3a5bfcc72971f79df8d1c0b5a0eec
Signed-off-by: Roman Kiryanov <rkir@google.com>
2018-05-20 16:40:16 +05:30
Roman Kiryanov
a7c3ef5d5a Replace #define with enum for better compilation errors.
Change-Id: I810a2099fdf4e918bdd02e5327243fdd0faaac5f
Signed-off-by: Roman Kiryanov <rkir@google.com>
2018-05-20 16:40:16 +05:30
Roman Kiryanov
5da5fc6182 Add missing include to drivers/tty/goldfish.c
Change-Id: I4a71a1cad108c8b3bb3875e8483ac2ac7357268c
Signed-off-by: Roman Kiryanov <rkir@google.com>
2018-05-20 16:40:16 +05:30
Roman Kiryanov
5da5abe5fc Fix whitespace in drivers/tty/goldfish.c
Change-Id: I5454fc73d9f8a9fbafc1e2ccd37fe45685cf64d7
Signed-off-by: Roman Kiryanov <rkir@google.com>
2018-05-20 16:40:16 +05:30
Ritesh Harjani
eab5b7eaae ANDROID: fuse: Add null terminator to path in canonical path to avoid issue
page allocated in fuse_dentry_canonical_path to be handled in
fuse_dev_do_write is allocated using __get_free_pages(GFP_KERNEL).
This may not return a page with data filled with 0. Now this
page may not have a null terminator at all.
If this happens and userspace fuse daemon screws up by passing a string
to kernel which is not NULL terminated (or did not fill anything),
then inside fuse driver in kernel when we try to do
strlen(fuse_dev_write->kern_path->getname_kernel)
on that page data -> it may give us issue with kernel paging request.

Unable to handle kernel paging request at virtual address
------------[ cut here ]------------
<..>
PC is at strlen+0x10/0x90
LR is at getname_kernel+0x2c/0xf4
<..>
strlen+0x10/0x90
kern_path+0x28/0x4c
fuse_dev_do_write+0x5b8/0x694
fuse_dev_write+0x74/0x94
do_iter_readv_writev+0x80/0xb8
do_readv_writev+0xec/0x1cc
vfs_writev+0x54/0x64
SyS_writev+0x64/0xe4
el0_svc_naked+0x24/0x28

To avoid this we should ensure in case of FUSE_CANONICAL_PATH,
the page is null terminated.

Change-Id: I33ca7cc76b4472eaa982c67bb20685df451121f5
Signed-off-by: Ritesh Harjani <riteshh@codeaurora.org>
Bug: 75984715
[Daniel - small edit, using args size ]
Signed-off-by: Daniel Rosenberg <drosen@google.com>
2018-05-20 16:40:16 +05:30
Ritesh Harjani
ccce1028fa ANDROID: sdcardfs: Fix sdcardfs to stop creating cases-sensitive duplicate entries.
sdcardfs_name_match gets a 'name' argument from the underlying FS.
This need not be null terminated string.
So in sdcardfs_name_match -> qstr_case_eq -> we should use
str_n_case_eq.

This happens because few of the entries in lower level FS may not be
NULL terminated and may have some garbage characters passed while
doing sdcardfs_name_match.

For e.g.
 # dmesg |grep Download
 [  103.646386] sdcardfs_name_match: q1->name=.nomedia, q1->len=8,
 q2->name=Download\x17\x80\x03, q2->len=8
 [  104.021340] sdcardfs_name_match: q1->name=.nomedia, q1->len=8,
 q2->name=Download\x17\x80\x03, q2->len=8
 [  105.196864] sdcardfs_name_match: q1->name=.nomedia, q1->len=8,
 q2->name=Download\x17\x80\x03, q2->len=8
 [  109.113521] sdcardfs_name_match: q1->name=logs, q1->len=4,
 q2->name=Download\x17\x80\x03, q2->len=8

Now when we try to create a directory with different case for a such
files. SDCARDFS creates a entry if it could not find the underlying
entry in it's dcache.

To reproduce:-
1. bootup the device wait for some time after sdcardfs mounting to
   complete.
2. cd /storage/emulated/0
3. echo 3 > /proc/sys/vm/drop_caches
4. mkdir download

We now start seeing two entries with name.
Download & download.

Change-Id: I976d92a220a607dd8cdb96c01c2041c5c2bc3326
Signed-off-by: Ritesh Harjani <riteshh@codeaurora.org>
bug: 75987238
2018-05-20 16:40:16 +05:30
Roman Kiryanov
f227f8984b ANDROID: add missing include to pdev_bus
Bug: 72886167
Change-Id: I23a875ae5ca325c11942b1174e0eca9d676f4bc4
Signed-off-by: Roman Kiryanov <rkir@google.com>
2018-05-20 16:40:16 +05:30
Roman Kiryanov
84f60b23ec ANDROID: pdev_bus: replace writel with gf_write_ptr
We introduced a function that calls writel inside to simplify 64bit
support.

Bug: 72886167
Change-Id: I987891e0b331a0e205da4bbf4ee98c19edf087b7
Signed-off-by: Roman Kiryanov <rkir@google.com>
2018-05-20 16:40:16 +05:30
Roman Kiryanov
9778a6414f ANDROID: Cleanup type casting in goldfish.h
Bug: 72886167
Change-Id: I506a24e6e659d83a9df5efa0f8f00229e0a4b2d4
Signed-off-by: Roman Kiryanov <rkir@google.com>
2018-05-20 16:40:16 +05:30
Roman Kiryanov
273636bb93 ANDROID: Include missing headers in goldfish.h
Include headers to define 'dma_addr_t' and 'writel' symbols that
goldfish.h refers to.

Bug: 72886167
Change-Id: I0bb16d739e15edbedb779468bffc8ef46d9b6982
Signed-off-by: Roman Kiryanov <rkir@google.com>
2018-05-20 16:40:16 +05:30
Connor O'Brien
b5a05b441e ANDROID: cpufreq: times: skip printing invalid frequencies
The header of /proc/uid_time_in_state should match the logic used for
the rest of the file by skipping invalid frequency table entries.

Test: Read /proc/uid_time_in_state and check for invalid frequencies
in header.
Signed-off-by: Connor O'Brien <connoro@google.com>

Change-Id: I96888e7b71f4928383ff7080c98c988d5fe1a95c
2018-05-20 16:40:16 +05:30
Nathan Chancellor
4519569354 ANDROID: xt_qtaguid: Remove unnecessary null checks to device's name
'name' will never be NULL since it isn't a plain pointer but an array
of char values.

../net/netfilter/xt_qtaguid.c:1195:27: warning: address of array
'(*el_dev)->name' will always evaluate to 'true'
[-Wpointer-bool-conversion]
        if (unlikely(!(*el_dev)->name)) {
                     ~~~~~~~~~~~~^~~~

Change-Id: If3b25f17829b43e8a639193fb9cd04ae45947200
Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
2018-05-20 16:40:16 +05:30
Nathan Chancellor
3e312f97f8 ANDROID: xt_qtaguid: Remove unnecessary null checks to ifa_label
'ifa_label' will never be NULL since it isn't a plain pointer but an
array of char values.

../net/netfilter/xt_qtaguid.c:971:11: warning: address of array
'ifa->ifa_label' will always evaluate to 'true'
[-Wpointer-bool-conversion]
                        ifa->ifa_label ? ifa->ifa_label : "(null)");
                        ~~~~~^~~~~~~~~ ~
../net/netfilter/xt_qtaguid.c:972:13: warning: address of array
'ifa->ifa_label' will always evaluate to 'true'
[-Wpointer-bool-conversion]
                if (ifa->ifa_label && !strcmp(ifname, ifa->ifa_label))
                    ~~~~~^~~~~~~~~ ~~

Change-Id: I3c87a5d4b830aaa21a59e9c39cfe0a1d60d7f830
Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
2018-05-20 16:40:16 +05:30
Connor O'Brien
535aacd93e ANDROID: cpufreq: times: allocate enough space for a uid_entry
since the variable called uid_entry is a pointer, need to use
sizeof(*uid_entry) to allocate enough space for a full uid_entry
struct.

Bug: 74338318
Change-Id: I488a7cab849398ef7b1f4712b7746f8cf645209d
Signed-off-by: Connor O'Brien <connoro@google.com>
2018-05-20 16:40:16 +05:30
Rob Herring
48d2470a80 UPSTREAM: drm: virtio-gpu: set atomic flag
Advertise atomic mode setting capability to user space.

Signed-off-by: Rob Herring <robh@kernel.org>
Signed-off-by: Dave Airlie <airlied@redhat.com>
(cherry picked from commit 5443ce86fa)

Change-Id: I2c5db7056a2c0ce99dd83b234f064671ee5b2e2a
Signed-off-by: Alistair Strachan <astrachan@google.com>
2018-05-20 16:40:16 +05:30
Rob Herring
9404d23db2 UPSTREAM: drm: virtio-gpu: transfer dumb buffers to host on plane update
For dumb buffers, we need to transfer them to the host when updating a
plane.

Signed-off-by: Rob Herring <robh@kernel.org>
Signed-off-by: Dave Airlie <airlied@redhat.com>
(cherry picked from commit 4109e7f7d5)

Change-Id: I125ccb3943d82ac1a7738e2afde28eea9e55abcc
Signed-off-by: Alistair Strachan <astrachan@google.com>
2018-05-20 16:40:16 +05:30
Rob Herring
9448438a31 UPSTREAM: drm: virtio-gpu: ensure plane is flushed to host on atomic update
This fixes drawing updates when updating planes with atomic API.

Signed-off-by: Rob Herring <robh@kernel.org>
Signed-off-by: Dave Airlie <airlied@redhat.com>
(cherry picked from commit bd17d1c77c)

Change-Id: Ib688992f35a775e2c90640387eceaf343df846de
Signed-off-by: Alistair Strachan <astrachan@google.com>
2018-05-20 16:40:16 +05:30
Rob Herring
45da553009 UPSTREAM: drm: virtio-gpu: get the fb from the plane state for atomic updates
When using the atomic API, plane->fb is not set when calling
virtio_gpu_plane_atomic_update. Use plane->state->fb instead.

Signed-off-by: Rob Herring <robh@kernel.org>
Signed-off-by: Dave Airlie <airlied@redhat.com>
(cherry picked from commit 11c94ace5e)

Change-Id: Ic5f4e3852fcd44af965d6a1cf784c38a34aee19e
Signed-off-by: Alistair Strachan <astrachan@google.com>
2018-05-20 16:40:16 +05:30
Connor O'Brien
9bf5cde85e ANDROID: cpufreq: times: fix proc_time_in_state_show
Read times from p->time_in_state. Remove the "times" pointer, which is
never initialized.

Bug: 75238970
Test: /proc/<pid>/time_in_state now shows some nonzero values
Change-Id: I2f375b64ec39de034da3e24e5e5fb58b04958b76
Signed-off-by: Connor O'Brien <connoro@google.com>
2018-05-20 16:40:16 +05:30