summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* ncpfs: rcu-delay unload_nls() and freeing ncp_serverAl Viro2013-10-242-8/+13
| | | | | | | makes ->d_hash() and ->d_compare() safety in RCU mode independent from vfsmount_lock. Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
* fat: rcu-delay unloading nls and freeing sbiAl Viro2013-10-242-8/+12
| | | | | | | makes ->d_hash() and ->d_compare() safety in RCU mode independent from vfsmount_lock. Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
* cifs: rcu-delay unload_nls() and freeing sbiAl Viro2013-10-242-2/+9
| | | | | | | makes ->d_hash(), ->d_compare() and ->permission() safety in RCU mode independent from vfsmount_lock. Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
* autofs4: make freeing sbi rcu-delayedAl Viro2013-10-242-9/+5
| | | | | | makes ->d_managed() safety in RCU mode independent from vfsmount_lock Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
* adfs: delayed freeing of sbiAl Viro2013-10-242-5/+7
| | | | | | | makes ->d_hash() and ->d_compare() safety in RCU mode independent from vfsmount_lock. Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
* hpfs: make freeing sbi and codetables rcu-delayedAl Viro2013-10-242-14/+15
| | | | | | | makes ->d_hash() and ->d_compare() safety in RCU mode independent from vfsmount_lock Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
* make freeing super_block rcu-delayedAl Viro2013-10-242-1/+2
| | | | Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
* vfs: introduce d_instantiate_no_diralias()Miklos Szeredi2013-10-245-40/+33
| | | | | | | | | | ...which just returns -EBUSY if a directory alias would be created. This is to be used by fuse mkdir to make sure that a buggy or malicious userspace filesystem doesn't do anything nasty. Previously fuse used a private mutex for this purpose, which can now go away. Signed-off-by: Miklos Szeredi <mszeredi@suse.cz>
* move taking vfsmount_lock down into prepend_path()Al Viro2013-10-241-9/+2
| | | | Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
* split __lookup_mnt() in two functionsAl Viro2013-10-244-25/+30
| | | | | | | | Instead of passing the direction as argument (and checking it on every step through the hash chain), just have separate __lookup_mnt() and __lookup_mnt_last(). And use the standard iterators... Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
* uninline destroy_super(), consolidate alloc_super()Al Viro2013-10-241-120/+86
| | | | Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
* isofs: don't pass dentry to isofs_hash{i,}_common()Al Viro2013-10-241-6/+6
| | | | Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
* new helpers: lock_mount_hash/unlock_mount_hashAl Viro2013-10-245-54/+64
| | | | | | | aka br_write_{lock,unlock} of vfsmount_lock. Inlines in fs/mount.h, vfsmount_lock extern moved over there as well. Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
* don't bother with vfsmount_lock in mounts_poll()Al Viro2013-10-241-4/+4
| | | | | | | wake_up_interruptible/poll_wait provide sufficient barriers; just use ACCESS_ONCE() to fetch ns->event and that's it. Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
* namespace.c: get rid of mnt_ghostsAl Viro2013-10-243-18/+9
| | | | Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
* fold dup_mnt_ns() into its only surviving callerAl Viro2013-10-241-30/+18
| | | | | | should've been done 6 years ago... Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
* mnt_set_expiry() doesn't need vfsmount_lockAl Viro2013-10-241-2/+0
| | | | | | ->mnt_expire is protected by namespace_sem Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
* finish_automount() doesn't need vfsmount_lock for removal from expiry listAl Viro2013-10-241-2/+0
| | | | Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
* fs/namespace.c: bury long-dead defineAl Viro2013-10-241-2/+0
| | | | | | MNT_WRITER_UNDERFLOW_LIMIT has been missed 4 years ago when it became unused. Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
* fold mntfree() into mntput_no_expire()Al Viro2013-10-241-23/+16
| | | | Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
* do_remount(): pull touch_mnt_namespace() upAl Viro2013-10-241-5/+1
| | | | | | ... and don't bother with dropping and regaining vfsmount_lock Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
* dup_mnt_ns(): get rid of pointless grabbing of vfsmount_lockAl Viro2013-10-241-2/+0
| | | | | | mnt_list is protected by namespace_sem, not vfsmount_lock Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
* fs_is_visible only needs namespace_sem held sharedAl Viro2013-10-241-2/+2
| | | | Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
* initialize namespace_sem staticallyAl Viro2013-10-241-3/+1
| | | | Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
* file->f_op is never NULL...Al Viro2013-10-2429-97/+74
| | | | Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
* rtl8188eu: remove dead codeAl Viro2013-10-242-213/+0
| | | | Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
* dmxdev: get rid of pointless clearing ->f_opAl Viro2013-10-241-4/+0
| | | | | | | nobody else will see that struct file after return from ->release() anyway; just leave ->f_op as is and let __fput() do that fops_put(). Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
* consolidate the reassignments of ->f_op in ->open() instancesAl Viro2013-10-248-77/+43
| | | | Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
* put_mnt_ns(): use drop_collected_mounts()Al Viro2013-10-241-5/+1
| | | | | | ... rather than open-coding it Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
* ncpfs: switch to %p[dD]Al Viro2013-10-242-43/+24
| | | | Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
* ubifs: switch to %pdAl Viro2013-10-243-34/+29
| | | | Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
* sunrpc: switch to %pdAl Viro2013-10-241-6/+6
| | | | Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
* nfsd: switch to %p[dD]Al Viro2013-10-245-37/+31
| | | | Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
* nfs: use %p[dD] instead of open-coded (and often racy) equivalentsAl Viro2013-10-2411-186/+119
| | | | Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
* befs: split symlink iops in two - for short and long symlinks resp.Al Viro2013-10-241-30/+31
| | | | Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
* new helper: kfree_put_link()Al Viro2013-10-248-38/+15
| | | | | | duplicated to hell and back... Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
* libfs: get exports to definitions of objects being exported...Al Viro2013-10-241-35/+34
| | | | Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
* ecryptfs: ->lower_path.dentry is never NULLAl Viro2013-10-241-2/+1
| | | | | | ... on anything found via ->d_fsdata Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
* ecryptfs: get rid of ecryptfs_set_dentry_lower{,_mnt}Al Viro2013-10-243-18/+3
| | | | Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
* ecryptfs: don't leave RCU pathwalk immediatelyAl Viro2013-10-242-15/+20
| | | | | | | | If the underlying dentry doesn't have ->d_revalidate(), there's no need to force dropping out of RCU mode. All we need for that is to make freeing ecryptfs_dentry_info RCU-delayed. Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
* ecryptfs: check DCACHE_OP_REVALIDATE instead of ->d_opAl Viro2013-10-241-1/+1
| | | | Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
* 9p: make v9fs_cache_inode_{get,put,set}_cookie empty inlines for !9P_CACHEFSAl Viro2013-10-244-12/+12
| | | | Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
* Linux 3.12-rc4v3.12-rc4Linus Torvalds2013-10-061-1/+1
|
* net: Update the sysctl permissions handler to test effective uid/gidEric W. Biederman2013-10-061-2/+2
| | | | | | | | | | | Modify the code to use current_euid(), and in_egroup_p, as in done in fs/proc/proc_sysctl.c:test_perm() Cc: stable@vger.kernel.org Reviewed-by: Eric Sandeen <sandeen@redhat.com> Reported-by: Eric Sandeen <sandeen@redhat.com> Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
* Merge git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pendingLinus Torvalds2013-10-068-25/+67
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Pull SCSI target fixes from Nicholas Bellinger: "Here are the outstanding target fixes queued up for v3.12-rc4 code. The highlights include: - Make vhost/scsi tag percpu_ida_alloc() use GFP_ATOMIC - Allow sess_cmd_map allocation failure fallback to use vzalloc - Fix COMPARE_AND_WRITE se_cmd->data_length bug with FILEIO backends - Fixes for COMPARE_AND_WRITE callback recursive failure OOPs + non zero scsi_status bug - Make iscsi-target do acknowledgement tag release from RX context - Setup iscsi-target with extra (cmdsn_depth / 2) percpu_ida tags Also included is a iscsi-target patch CC'ed for v3.10+ that avoids legacy wait_for_task=true release during fast-past StatSN acknowledgement, and two other SRP target related patches that address long-standing issues that are CC'ed for v3.3+. Extra thanks to Thomas Glanzmann for his testing feedback with COMPARE_AND_WRITE + EXTENDED_COPY VAAI logic" * git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pending: iscsi-target; Allow an extra tag_num / 2 number of percpu_ida tags iscsi-target: Perform release of acknowledged tags from RX context iscsi-target: Only perform wait_for_tasks when performing shutdown target: Fail on non zero scsi_status in compare_and_write_callback target: Fix recursive COMPARE_AND_WRITE callback failure target: Reset data_length for COMPARE_AND_WRITE to NoLB * block_size ib_srpt: always set response for task management target: Fall back to vzalloc upon ->sess_cmd_map kzalloc failure vhost/scsi: Use GFP_ATOMIC with percpu_ida_alloc for obtaining tag ib_srpt: Destroy cm_id before destroying QP. target: Fix xop->dbl assignment in target_xcopy_parse_segdesc_02
| * iscsi-target; Allow an extra tag_num / 2 number of percpu_ida tagsNicholas Bellinger2013-10-031-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch bumps the default number of tags allocated per session by iscsi-target via transport_alloc_session_tags() -> percpu_ida_init() by another (tag_num / 2). This is done to take into account the tags waiting to be acknowledged and released in iscsit_ack_from_expstatsn(), but who's number are not directly limited by the CmdSN Window queue_depth being enforced by the target. Using a larger value here is also useful to prevent percpu_ida_alloc() from having to steal tags from other CPUs when no tags are available on the local CPU, while waiting for unacknowledged tags to be released. Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
| * iscsi-target: Perform release of acknowledged tags from RX contextNicholas Bellinger2013-10-031-4/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch converts iscsit_ack_from_expstatsn() to populate a local ack_list of commands, and call iscsit_free_cmd() directly from RX thread context, instead of using iscsit_add_cmd_to_immediate_queue() to queue the acknowledged commands to be released from TX thread context. It is helpful to release the acknowledge commands as quickly as possible, along with the associated percpu_ida tags, in order to prevent percpu_ida_alloc() from having to steal tags from other CPUs while waiting for iscsit_free_cmd() to happen from TX thread context. Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
| * iscsi-target: Only perform wait_for_tasks when performing shutdownNicholas Bellinger2013-10-031-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | This patch changes transport_generic_free_cmd() to only wait_for_tasks when shutdown=true is passed to iscsit_free_cmd(). With the advent of >= v3.10 iscsi-target code using se_cmd->cmd_kref, the extra wait_for_tasks with shutdown=false is unnecessary, and may end up causing an extra context switch when releasing WRITEs. Cc: stable@vger.kernel.org # 3.10+ Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
| * target: Fail on non zero scsi_status in compare_and_write_callbackNicholas Bellinger2013-10-031-1/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch addresses a bug for backends such as IBLOCK that perform asynchronous completion via transport_complete_cmd(), that will call target_complete_failure_work() -> transport_generic_request_failure(), upon exception status and invoke cmd->transport_complete_callback() -> compare_and_write_callback() incorrectly during the failure case. It adds a check for a non zero se_cmd->scsi_status within the first invocation of compare_and_write_callback(), and will jump to out plus up se_device->caw_sem before exiting the callback. Reported-by: Thomas Glanzmann <thomas@glanzmann.de> Tested-by: Thomas Glanzmann <thomas@glanzmann.de> Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
| * target: Fix recursive COMPARE_AND_WRITE callback failureNicholas Bellinger2013-10-031-1/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch addresses a bug when compare_and_write_callback() invoked from target_complete_ok_work() hits an failure from __target_execute_cmd() -> cmd->execute_cmd(), that ends up calling transport_generic_request_failure() -> compare_and_write_post(), thus causing SCF_COMPARE_AND_WRITE_POST to incorrectly be set. The result of this bug is that target_complete_ok_work() no longer hits the if (!rc && !(cmd->se_cmd_flags & SCF_COMPARE_AND_WRITE_POST) check that forces an immediate return, and instead double completes the se_cmd in question, triggering an OOPs in the process. This patch changes compare_and_write_post() to only set this bit when a failure has not already occured to ensure the immediate return from within target_complete_ok_work(), and thus allow transport_generic_request_failure() to handle the sending of the CHECK_CONDITION exception status. Reported-by: Thomas Glanzmann <thomas@glanzmann.de> Tested-by: Thomas Glanzmann <thomas@glanzmann.de> Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
OpenPOWER on IntegriCloud