summaryrefslogtreecommitdiff
path: root/fs/sdcardfs
AgeCommit message (Collapse)Author
2017-09-08ANDROID: sdcardfs: Add missing breakDaniel Rosenberg
Signed-off-by: Daniel Rosenberg <drosen@google.com> Bug: 63245673 Change-Id: I5fc596420301045895e5a9a7e297fd05434babf9
2017-09-08ANDROID: Sdcardfs: Move gid derivation under flagDaniel Rosenberg
This moves the code to adjust the gid/uid of lower filesystem files under the mount flag derive_gid. Signed-off-by: Daniel Rosenberg <drosen@google.com> Change-Id: I44eaad4ef67c7fcfda3b6ea3502afab94442610c Bug: 63245673
2017-08-08ANDROID: sdcardfs: override credential for ioctl to lower fsJaegeuk Kim
Otherwise, lower_fs->ioctl() fails due to inode_owner_or_capable(). Signed-off-by: Jaegeuk Kim <jaegeuk@google.com> Bug: 63260873 Change-Id: I623a6c7c5f8a3cbd7ec73ef89e18ddb093c43805
2017-07-20ANDROID: sdcardfs: Remove unnecessary lockDaniel Rosenberg
The mmap_sem lock does not appear to be protecting anything, and has been removed in Samsung's more recent versions of sdcardfs. Signed-off-by: Daniel Rosenberg <drosen@google.com> Change-Id: I76ff3e33002716b8384fc8be368028ed63dffe4e Bug: 63785372
2017-07-10ANDROID: sdcardfs: use mount_nodev and fix a issue in sdcardfs_kill_sbGao Xiang
Use the VFS mount_nodev instead of customized mount_nodev_with_options and fix generic_shutdown_super to kill_anon_super because of set_anon_super Signed-off-by: Gao Xiang <gaoxiang25@huawei.com> Change-Id: Ibe46647aa2ce49d79291aa9d0295e9625cfccd80
2017-06-20ANDROID: sdcardfs: remove dead function open_flags_to_access_mode()Greg Hackmann
smatch warns about the suspicious formatting in the last line of open_flags_to_access_mode(). It turns out the only caller was deleted over a year ago by "ANDROID: sdcardfs: Bring up to date with Android M permissions:", so we can "fix" the function's formatting by deleting it. Change-Id: Id85946f3eb01722eef35b1815f405a6fda3aa4ff Signed-off-by: Greg Hackmann <ghackmann@google.com>
2017-06-07ANDROID: sdcardfs: d_splice_alias can return error valuesDaniel Rosenberg
We must check that d_splice_alias was successful before using its output. Signed-off-by: Daniel Rosenberg <drosen@google.com> Bug: 62390017 Change-Id: Ifda0a052fb3f67e35c635a4e5e907876c5400978
2017-05-23ANDROID: sdcardfs: Check for NULL in revalidateDaniel Rosenberg
If the inode is in the process of being evicted, the top value may be NULL. Signed-off-by: Daniel Rosenberg <drosen@google.com> Bug: 38502532 Change-Id: I0b9d04aab621e0398d44d1c5dc53293106aa5f89
2017-05-16ANDROID: sdcardfs: Move top to its own structDaniel Rosenberg
Move top, and the associated data, to its own struct. This way, we can properly track refcounts on top without interfering with the inode's accounting. Signed-off-by: Daniel Rosenberg <drosen@google.com> Bug: 38045152 Change-Id: I1968e480d966c3f234800b72e43670ca11e1d3fd
2017-05-10ANDROID: sdcardfs: fix sdcardfs_destroy_inode for the inode RCU approachGao Xiang
According to the following commits, fs: icache RCU free inodes vfs: fix the stupidity with i_dentry in inode destructors sdcardfs_destroy_inode should be fixed for the fast path safety. Signed-off-by: Gao Xiang <gaoxiang25@huawei.com> Change-Id: I84f43c599209d23737c7e28b499dd121cb43636d
2017-05-09ANDROID: sdcardfs: Don't iput if we didn't igrabDaniel Roseberg
If we fail to get top, top is either NULL, or igrab found that we're in the process of freeing that inode, and did not grab it. Either way, we didn't grab it, and have no business putting it. Signed-off-by: Daniel Rosenberg <drosen@google.com> Bug: 38117720 Change-Id: Ie2f587483b9abb5144263156a443e89bc69b767b
2017-04-26ANDROID: sdcardfs: Call lower fs's revalidateDaniel Rosenberg
We should be calling the lower filesystem's revalidate inside of sdcardfs's revalidate, as wrapfs does. Signed-off-by: Daniel Rosenberg <drosen@google.com> Bug: 35766959 Change-Id: I939d1c4192fafc1e21678aeab43fe3d588b8e2f4
2017-04-26ANDROID: sdcardfs: Avoid setting GIDs outside of valid rangesDaniel Rosenberg
When setting up the ownership of files on the lower filesystem, ensure that these values are in reasonable ranges for apps. If they aren't, default to AID_MEDIA_RW Signed-off-by: Daniel Rosenberg <drosen@google.com> Bug: 37516160 Change-Id: I0bec76a61ac72aff0b993ab1ad04be8382178a00
2017-04-26ANDROID: sdcardfs: Copy meta-data from lower inodeDaniel Rosenberg
From wrapfs commit 3ee9b365e38c ("Wrapfs: properly copy meta-data after AIO operations from lower inode") Signed-off-by: Daniel Rosenberg <drosen@google.com> Bug: 35766959 Change-Id: I9a789222e27a17b8d85ce61c45397d1839f9a675
2017-04-26Revert "Revert "Android: sdcardfs: Don't do d_add for lower fs""Daniel Rosenberg
This reverts commit ffa75fdb9c408f49b9622b6d55752ed99ff61488. Turns out we just needed the right hash. Signed-off-by: Daniel Rosenberg <drosen@google.com> Bug: 37231161 Change-Id: I6a6de7f7df99ad42b20fa062913b219f64020c31
2017-04-26ANDROID: sdcardfs: Use filesystem specific hashDaniel Rosenberg
We weren't accounting for FS specific hash functions, causing us to miss negative dentries for any FS that had one. Similar to a patch from esdfs commit 75bd25a9476d ("esdfs: support lower's own hash") Signed-off-by: Daniel Rosenberg <drosen@google.com> Change-Id: I32d1ba304d728e0ca2648cacfb4c2e441ae63608
2017-04-20Revert "Android: sdcardfs: Don't do d_add for lower fs"Daniel Rosenberg
This reverts commit e92f72194da2e690d85fc736661d3f0d96825c57. This change caused issues for sdcardfs on top of vfat Signed-off-by: Daniel Rosenberg <drosen@google.com> Change-Id: Ife2ac6d9af40e4ddb95b7261e1dad4d7817e3779
2017-04-19Android: sdcardfs: Don't complain in fixup_lower_ownershipDaniel Rosenberg
Not all filesystems support changing the owner of a file. We shouldn't complain if it doesn't happen. Signed-off-by: Daniel Rosenberg <drosen@google.com> Bug: 37488099 Change-Id: I403e44ab7230f176e6df82f6adb4e5c82ce57f33
2017-04-19Android: sdcardfs: Don't do d_add for lower fsDaniel Rosenberg
For file based encryption, ext4 explicitly does not create negative dentries for encrypted files. If you force one over it, the decrypted file will be hidden until the cache is cleared. Instead, just fail out. Signed-off-by: Daniel Rosenberg <drosen@google.com> Bug: 37231161 Change-Id: Id2a9708dfa75e1c22f89915c529789caadd2ca4b
2017-04-19ANDROID: sdcardfs: ->iget fixesDaniel Rosenberg
Adapted from wrapfs commit 8c49eaa0sb9c ("Wrapfs: ->iget fixes") Change where we igrab/iput to ensure we always hold a valid lower_inode. Return ENOMEM (not EACCES) if iget5_locked returns NULL. Signed-off-by: Erez Zadok <ezk@cs.sunysb.edu> Signed-off-by: Daniel Rosenberg <drosen@google.com> Bug: 35766959 Change-Id: Id8d4e0c0cbc685a0a77685ce73c923e9a3ddc094
2017-04-19Android: sdcardfs: Change cache GID valueDaniel Rosenberg
Change-Id: Ieb955dd26493da26a458bc20fbbe75bca32b094f Signed-off-by: Daniel Rosenberg <drosen@google.com> Bug: 37193650
2017-04-11ANDROID: sdcardfs: Directly pass lower file for mmapDaniel Rosenberg
Instead of relying on a copy hack, pass the lower file as private data. This lets the kernel find the vma mapping for pages used by the file, allowing pages used by mapping to be reclaimed. This is adapted from following esdfs patches commit 0647e638d: ("esdfs: store lower file in vm_file for mmap") commit 064850866: ("esdfs: keep a counter for mmaped file") Change-Id: I75b74d1e5061db1b8c13be38d184e118c0851a1a Signed-off-by: Daniel Rosenberg <drosen@google.com>
2017-04-07ANDROID: sdcardfs: update module infoDaniel Rosenberg
Signed-off-by: Daniel Rosenberg <drosen@google.com> Change-Id: I958c7c226d4e9265fea8996803e5b004fb33d8ad
2017-04-06ANDROID: sdcardfs: use d_splice_aliasDaniel Rosenberg
adapted from wrapfs commit 9671770ff8b9 ("Wrapfs: use d_splice_alias") Refactor interpose code to allow lookup to use d_splice_alias. Signed-off-by: Erez Zadok <ezk@cs.sunysb.edu> Signed-off-by: Daniel Rosenberg <drosen@google.com> Bug: 35766959 Change-Id: Icf51db8658202c48456724275b03dc77f73f585b
2017-04-06ANDROID: sdcardfs: add read_iter/write_iter opeationsDaniel Rosenberg
Adapted from wrapfs commit f398bf6a7377 ("Wrapfs: add read_iter/write_iter opeations") Signed-off-by: Erez Zadok <ezk@cs.sunysb.edu> Signed-off-by: Mengyang Li <li.mengyang@stonybrook.edu> Signed-off-by: Daniel Rosenberg <drosen@google.com> Bug: 35766959 Change-Id: I2b3de59c9682fc705bf21df0de6df81e76fd2e40
2017-04-06ANDROID: sdcardfs: fix ->llseek to update upper and lower offsetDaniel Rosenberg
Adapted from wrapfs commit 1d1d23a47baa ("Wrapfs: fix ->llseek to update upper and lower offsets") Fixes bug: xfstests generic/257. f_pos consistently is required by and only by dir_ops->wrapfs_readdir, main_ops is not affected. Signed-off-by: Erez Zadok <ezk@cs.sunysb.edu> Signed-off-by: Mengyang Li <li.mengyang@stonybrook.edu> Signed-off-by: Daniel Rosenberg <drosen@google.com> Bug: 35766959 Change-Id: I360a1368ac37ea8966910a58972b81504031d437
2017-04-06ANDROID: sdcardfs: copy lower inode attributes in ->ioctlDaniel Rosenberg
Adapted from wrapfs commit fbc9c6f83ea6 ("Wrapfs: copy lower inode attributes in ->ioctl") commit e97d8e26cc9e ("Wrapfs: use file_inode helper") Some ioctls (e.g., EXT2_IOC_SETFLAGS) can change inode attributes, so copy them from lower inode. Signed-off-by: Erez Zadok <ezk@cs.sunysb.edu> Signed-off-by: Daniel Rosenberg <drosen@google.com> Bug: 35766959 Change-Id: I0f12684b9dbd4088b4a622c7ea9c03087f40e572
2017-04-06ANDROID: sdcardfs: remove unnecessary call to do_munmapDaniel Rosenberg
Adapted from wrapfs commit 5be6de9ecf02 ("Wrapfs: use vm_munmap in ->mmap") commit 2c9f6014a8bb ("Wrapfs: remove unnecessary call to vm_unmap in ->mmap") Code is unnecessary and causes deadlocks in newer kernels. Signed-off-by: Erez Zadok <ezk@cs.sunysb.edu> Signed-off-by: Daniel Rosenberg <drosen@google.com> Bug: 35766959 Change-Id: Ia252d60c60799d7e28fc5f1f0f5b5ec2430a2379
2017-03-23ANDROID: sdcardfs: Fix style issues in macrosDaniel Rosenberg
Signed-off-by: Daniel Rosenberg <drosen@google.com> Bug: 35331000 Change-Id: I89c4035029dc2236081a7685c55cac595d9e7ebf
2017-03-23ANDROID: sdcardfs: Use seq_puts over seq_printfDaniel Rosenberg
Signed-off-by: Daniel Rosenberg <drosen@google.com> Bug: 35331000 Change-Id: I3795ec61ce61e324738815b1ce3b0e09b25d723f
2017-03-23ANDROID: sdcardfs: Use to kstroutDaniel Rosenberg
Switch from deprecated simple_strtoul to kstrout Signed-off-by: Daniel Rosenberg <drosen@google.com> Bug: 35331000 Change-Id: If18bd133b4d2877f71e58b58fc31371ff6613ed5
2017-03-23ANDROID: sdcardfs: Use pr_[...] instead of printkDaniel Rosenberg
Signed-off-by: Daniel Rosenberg <drosen@google.com> Bug: 35331000 Change-Id: Ibc635ec865750530d32b87067779f681fe58a003
2017-03-23ANDROID: sdcardfs: remove unneeded null checkDaniel Rosenberg
As pointed out by checkpatch, these functions already handle null inputs, so the checks are not needed. Signed-off-by: Daniel Rosenberg <drosen@google.com> Bug: 35331000 Change-Id: I189342f032dfcefee36b27648bb512488ad61d20
2017-03-23ANDROID: sdcardfs: Fix style issues with commentsDaniel Rosenberg
Signed-off-by: Daniel Rosenberg <drosen@google.com> Bug: 35331000 Change-Id: I8791ef7eac527645ecb9407908e7e5ece35b8f80
2017-03-23ANDROID: sdcardfs: Fix formattingDaniel Rosenberg
This fixes various spacing and bracket related issues pointed out by checkpatch. Signed-off-by: Daniel Rosenberg <drosen@google.com> Bug: 35331000 Change-Id: I6e248833a7a04e3899f3ae9462d765cfcaa70c96
2017-03-23ANDROID: sdcardfs: correct order of descriptorsDaniel Rosenberg
Signed-off-by: Daniel Rosenberg <drosen@google.com> Bug: 35331000 Change-Id: Ia6d16b19c8c911f41231d2a12be0740057edfacf
2017-03-14ANDROID: sdcardfs: Fix gid issueDaniel Rosenberg
We were already calculating most of these values, and erroring out because the check was confused by this. Instead of recalculating, adjust it as needed. Signed-off-by: Daniel Rosenberg <drosen@google.com> Bug: 36160015 Change-Id: I9caf3e2fd32ca2e37ff8ed71b1d392f1761bc9a9
2017-03-14ANDROID: sdcardfs: Use tabs instead of spaces in multiuser.hDaniel Rosenberg
Signed-off-by: Daniel Rosenberg <drosen@google.com> Bug: 35331000 Change-Id: Ic7801914a7dd377e270647f81070020e1f0bab9b
2017-03-14ANDROID: sdcardfs: Remove uninformative printsDaniel Rosenberg
At best these prints do not provide useful information, and at worst, some allow userspace to abuse the kernel log. Signed-off-by: Daniel Rosenberg <drosen@google.com> Bug: 36138424 Change-Id: I812c57cc6a22b37262935ab77f48f3af4c36827e
2017-03-14ANDROID: sdcardfs: move path_put outside of spinlockDaniel Rosenberg
Signed-off-by: Daniel Rosenberg <drosen@google.com> Bug: 35643557 Change-Id: Ib279ebd7dd4e5884d184d67696a93e34993bc1ef
2017-03-14ANDROID: sdcardfs: Use case insensitive hash functionDaniel Rosenberg
Case insensitive comparisons don't help us much if we hash to different buckets... Signed-off-by: Daniel Rosenberg <drosen@google.com> bug: 36004503 Change-Id: I91e00dbcd860a709cbd4f7fd7fc6d855779f3285
2017-03-14ANDROID: sdcardfs: declare MODULE_ALIAS_FSDaniel Rosenberg
From commit ee616b78aa87 ("Wrapfs: declare MODULE_ALIAS_FS") Signed-off-by: Daniel Rosenberg <drosen@google.com> bug: 35766959 Change-Id: Ia4728ab49d065b1d2eb27825046f14b97c328cba
2017-03-14ANDROID: sdcardfs: Get the blocksize from the lower fsDaniel Rosenberg
This changes sdcardfs to be more in line with the getattr in wrapfs, which calls the lower fs's getattr to get the block size Signed-off-by: Daniel Rosenberg <drosen@google.com> Bug: 34723223 Change-Id: I1c9e16604ba580a8cdefa17f02dcc489d7351aed
2017-03-14ANDROID: sdcardfs: Use d_invalidate instead of drop_recurisveDaniel Rosenberg
drop_recursive did not properly remove stale dentries. Instead, we use the vfs's d_invalidate, which does the proper cleanup. Additionally, remove the no longer used drop_recursive, and fixup_top_recursive that that are no longer used. Signed-off-by: Daniel Rosenberg <drosen@google.com> Change-Id: Ibff61b0c34b725b024a050169047a415bc90f0d8
2017-03-14ANDROID: sdcardfs: Switch to internal case insensitive compareDaniel Rosenberg
There were still a few places where we called into a case insensitive lookup that was not defined by sdcardfs. Moving them all to the same place will allow us to switch the implementation in the future. Additionally, the check in fixup_perms_recursive did not take into account the length of both strings, causing extraneous matches when the name we were looking for was a prefix of the child name. Signed-off-by: Daniel Rosenberg <drosen@google.com> Change-Id: I45ce768cd782cb4ea1ae183772781387c590ecc2
2017-03-14ANDROID: sdcardfs: Use spin_lock_nestedDaniel Rosenberg
Signed-off-by: Daniel Rosenberg <drosen@google.com> Bug: 36007653 Change-Id: I805d5afec797669679853fb2bb993ee38e6276e4
2017-03-14ANDROID: sdcardfs: Replace get/put with d_lockDaniel Rosenberg
dput cannot be called with a spin_lock. Instead, we protect our accesses by holding the d_lock. Signed-off-by: Daniel Rosenberg <drosen@google.com> Bug: 35643557 Change-Id: I22cf30856d75b5616cbb0c223724f5ab866b5114
2017-03-14ANDROID: sdcardfs: rate limit warning printDaniel Rosenberg
Signed-off-by: Daniel Rosenberg <drosen@google.com> Bug: 35848445 Change-Id: Ida72ea0ece191b2ae4a8babae096b2451eb563f6
2017-03-14ANDROID: sdcardfs: Fix case insensitive lookupDaniel Rosenberg
The previous case insensitive lookup relied on the entry being present in the dcache. This instead uses iterate_dir to find the correct case. Signed-off-by: Daniel Rosenberg <drosen@google.com> bug: 35633782 Change-Id: I556f7090773468c1943c89a5e2aa07f746ba49c5
2017-02-24ANDROID: sdcardfs: support direct-IO (DIO) operationsDaniel Rosenberg
This comes from the wrapfs patch 2e346c83b26e Wrapfs: support direct-IO (DIO) operations Signed-off-by: Li Mengyang <li.mengyang@stonybrook.edu> Signed-off-by: Erez Zadok <ezk@cs.sunysb.edu> Signed-off-by: Daniel Rosenberg <drosen@google.com> Bug: 34133558 Change-Id: I3fd779c510ab70d56b1d918f99c20421b524cdc4