GitHub/moto-9609/android_kernel_motorola_exynos9610.git
11 years agoscsi_proc: make proc_scsi_host_open() preallocate a bigger buffer
Al Viro [Sun, 31 Mar 2013 17:50:52 +0000 (13:50 -0400)]
scsi_proc: make proc_scsi_host_open() preallocate a bigger buffer

Some of the ->show_info() instances really spew a lot; it's not a problem
wrt correctness (seq_read() will grow buffer and call the sucker again),
but in this case it makes sense to start with a somewhat bigger one -
they often do exceed one page worth of output.

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agonew helper: single_open_size()
Al Viro [Sun, 31 Mar 2013 17:43:23 +0000 (13:43 -0400)]
new helper: single_open_size()

Same as single_open(), but preallocates the buffer of given size.
Doesn't make any sense for sizes up to PAGE_SIZE and doesn't make
sense if output of show() exceeds PAGE_SIZE only rarely - seq_read()
will take care of growing the buffer and redoing show().  If you
_know_ that it will be large, it might make more sense to look into
saner iterator, rather than go with single-shot one.  If that's
impossible, single_open_size() might be for you.

Again, don't use that without a good reason; occasionally that's really
the best way to go, but very often there are better solutions.

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agoscsi: bury ->proc_info()
Al Viro [Sun, 31 Mar 2013 17:27:56 +0000 (13:27 -0400)]
scsi: bury ->proc_info()

all users converted to ->show_info()/->write_info()

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agoatari_scsi: switch to ->show_info()
Al Viro [Sun, 31 Mar 2013 17:24:44 +0000 (13:24 -0400)]
atari_scsi: switch to ->show_info()

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agoaix7xxx_old: switch to ->show_info()
Al Viro [Sun, 31 Mar 2013 16:53:53 +0000 (12:53 -0400)]
aix7xxx_old: switch to ->show_info()

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agosata_svw: switch to ->show_info()
Al Viro [Sun, 31 Mar 2013 16:46:43 +0000 (12:46 -0400)]
sata_svw: switch to ->show_info()

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agoips: fix format bugs exposed by previous commit
Al Viro [Sun, 31 Mar 2013 16:17:09 +0000 (12:17 -0400)]
ips: fix format bugs exposed by previous commit

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agoips: switch to ->show_info()
Al Viro [Sun, 31 Mar 2013 16:15:44 +0000 (12:15 -0400)]
ips: switch to ->show_info()

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agoacornscsi: switch to ->show_info()
Al Viro [Sun, 31 Mar 2013 16:02:39 +0000 (12:02 -0400)]
acornscsi: switch to ->show_info()

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agofas216: switch to ->show_info()
Al Viro [Sun, 31 Mar 2013 08:42:22 +0000 (04:42 -0400)]
fas216: switch to ->show_info()

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agoaic7xxx: switch to ->show_info()
Al Viro [Sun, 31 Mar 2013 08:07:31 +0000 (04:07 -0400)]
aic7xxx: switch to ->show_info()

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agoaic79xx: switch to ->show_info()
Al Viro [Sun, 31 Mar 2013 07:59:17 +0000 (03:59 -0400)]
aic79xx: switch to ->show_info()

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agoin2000: switch to ->show_info()
Al Viro [Sun, 31 Mar 2013 07:32:45 +0000 (03:32 -0400)]
in2000: switch to ->show_info()

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agoatp870u: switch to ->show_info()
Al Viro [Sun, 31 Mar 2013 07:26:26 +0000 (03:26 -0400)]
atp870u: switch to ->show_info()

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agodc395x: switch to ->show_info()
Al Viro [Sun, 31 Mar 2013 07:24:12 +0000 (03:24 -0400)]
dc395x: switch to ->show_info()

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agodpt_i2o: switch to ->show_info()
Al Viro [Sun, 31 Mar 2013 07:21:50 +0000 (03:21 -0400)]
dpt_i2o: switch to ->show_info()

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agoeata_pio: switch to ->show_info()
Al Viro [Sun, 31 Mar 2013 07:18:35 +0000 (03:18 -0400)]
eata_pio: switch to ->show_info()

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agoaha1740: switch to ->show_info()
Al Viro [Sun, 31 Mar 2013 07:15:00 +0000 (03:15 -0400)]
aha1740: switch to ->show_info()

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agoaha152x: switch to ->show_info()
Al Viro [Sun, 31 Mar 2013 07:12:15 +0000 (03:12 -0400)]
aha152x: switch to ->show_info()

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agoadvansys: fix buggered formats - unsigned long != u32 on 64bit
Al Viro [Sun, 31 Mar 2013 07:04:13 +0000 (03:04 -0400)]
advansys: fix buggered formats - unsigned long != u32 on 64bit

asc_prt_line() had been hiding several places where formats had not
matched the argument types.  The previous commit has finally made them
visible...

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agoadvansys: switch to ->show_info()
Al Viro [Sun, 31 Mar 2013 06:59:55 +0000 (02:59 -0400)]
advansys: switch to ->show_info()

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agonsp_cs: switch to ->show_info()
Al Viro [Sun, 31 Mar 2013 06:14:18 +0000 (02:14 -0400)]
nsp_cs: switch to ->show_info()

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agonsp32: switch to ->show_info()
Al Viro [Sun, 31 Mar 2013 06:11:39 +0000 (02:11 -0400)]
nsp32: switch to ->show_info()

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agokeucr: switch to ->show_info()
Al Viro [Sun, 31 Mar 2013 06:08:31 +0000 (02:08 -0400)]
keucr: switch to ->show_info()

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agorts5139: switch to ->show_info()
Al Viro [Sun, 31 Mar 2013 06:04:33 +0000 (02:04 -0400)]
rts5139: switch to ->show_info()

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agotcm: switch to ->show_info()
Al Viro [Sun, 31 Mar 2013 06:01:55 +0000 (02:01 -0400)]
tcm: switch to ->show_info()

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agocciss: switch to ->show_info()
Al Viro [Sun, 31 Mar 2013 06:00:06 +0000 (02:00 -0400)]
cciss: switch to ->show_info()

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agoBusLogic: switch to ->show_info()
Al Viro [Sun, 31 Mar 2013 05:52:13 +0000 (01:52 -0400)]
BusLogic: switch to ->show_info()

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agoscsi_debug: switch to ->show_info()
Al Viro [Sun, 31 Mar 2013 05:46:06 +0000 (01:46 -0400)]
scsi_debug: switch to ->show_info()

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agofusion: switch to ->show_info()
Al Viro [Sun, 31 Mar 2013 05:42:38 +0000 (01:42 -0400)]
fusion: switch to ->show_info()

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agousb-storage: switch to ->show_info()
Al Viro [Sun, 31 Mar 2013 05:37:13 +0000 (01:37 -0400)]
usb-storage: switch to ->show_info()

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agoNCR5830: switch to ->show_info()
Al Viro [Sun, 31 Mar 2013 05:15:54 +0000 (01:15 -0400)]
NCR5830: switch to ->show_info()

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agoppa: switch to ->show_info()
Al Viro [Sun, 31 Mar 2013 04:58:31 +0000 (00:58 -0400)]
ppa: switch to ->show_info()

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agoimm: switch to ->show_info()
Al Viro [Sun, 31 Mar 2013 04:55:40 +0000 (00:55 -0400)]
imm: switch to ->show_info()

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agogdth: switch to ->show_info()
Al Viro [Sun, 31 Mar 2013 04:52:08 +0000 (00:52 -0400)]
gdth: switch to ->show_info()

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agoswitch wd33c93 to ->show_info()
Al Viro [Sun, 31 Mar 2013 04:30:35 +0000 (00:30 -0400)]
switch wd33c93 to ->show_info()

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agowd7000: switch to ->show_info()
Al Viro [Sun, 31 Mar 2013 04:17:00 +0000 (00:17 -0400)]
wd7000: switch to ->show_info()

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agosym53c8xx_2: switch to ->show_info()
Al Viro [Sun, 31 Mar 2013 04:10:16 +0000 (00:10 -0400)]
sym53c8xx_2: switch to ->show_info()

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agoscsi: saner replacements for ->proc_info()
Al Viro [Sun, 31 Mar 2013 03:58:05 +0000 (23:58 -0400)]
scsi: saner replacements for ->proc_info()

It's still an obsolete interface; don't introduce those in new drivers.
However, it's saner than the ->proc_info() and commits after this one
will convert the existing ->proc_info() users to it.

The read side is ->show_info(seq_file *, struct Scsi_Host *); use
seq_... for generating contents.

The write side is ->write_info(struct Scsi_Host *, char *, int).

Again, this is driven by procfs needs; we are going to kill ->write_proc()
and ->read_proc() and this is the main obstacle to burying that piece of
shit.

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agoprocfs: don't allow to use proc_create, create_proc_entry, etc. for directories
Al Viro [Sun, 31 Mar 2013 01:20:14 +0000 (21:20 -0400)]
procfs: don't allow to use proc_create, create_proc_entry, etc. for directories

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agoi2o: use proc_remove_subtree()
Al Viro [Sun, 31 Mar 2013 00:34:21 +0000 (20:34 -0400)]
i2o: use proc_remove_subtree()

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agosilicom: bury bp_proc.c
Al Viro [Fri, 5 Apr 2013 17:42:42 +0000 (13:42 -0400)]
silicom: bury bp_proc.c

It's a seriously rotten copy of parts of bp_mod.c; had been
ifdefed out all along, lacks a bunch of declarations that would
be needed if ifdef had been removed, all stuff in it is duplicated
in bp_mod.c anyway...

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agosilicom: switch to create_proc_data(), clean procfs side of things up
Al Viro [Sat, 30 Mar 2013 23:11:39 +0000 (19:11 -0400)]
silicom: switch to create_proc_data(), clean procfs side of things up

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agoreiserfs: use proc_remove_subtree()
Al Viro [Sun, 31 Mar 2013 00:16:20 +0000 (20:16 -0400)]
reiserfs: use proc_remove_subtree()

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agosilicom: untangle module_init
Al Viro [Sat, 30 Mar 2013 21:20:54 +0000 (17:20 -0400)]
silicom: untangle module_init

Helper functions are often useful.  So are local variables...

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agosilicom: get_bypass_slave_pfs() open-codes lookup_port()
Al Viro [Sat, 30 Mar 2013 20:44:11 +0000 (16:44 -0400)]
silicom: get_bypass_slave_pfs() open-codes lookup_port()

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agosilicom: unobfuscate get_{status,master}_port_fn()
Al Viro [Sat, 30 Mar 2013 20:07:02 +0000 (16:07 -0400)]
silicom: unobfuscate get_{status,master}_port_fn()

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agosilicom: helper functions are often useful...
Al Viro [Sat, 30 Mar 2013 19:41:56 +0000 (15:41 -0400)]
silicom: helper functions are often useful...

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agoget rid of a bunch of open-coded create_proc_read_entry()
Al Viro [Sat, 30 Mar 2013 17:26:37 +0000 (13:26 -0400)]
get rid of a bunch of open-coded create_proc_read_entry()

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agoisp1362-hcd: don't reimplement proc_create_data()
Al Viro [Sat, 30 Mar 2013 17:15:27 +0000 (13:15 -0400)]
isp1362-hcd: don't reimplement proc_create_data()

... especially in a racy way

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agortl8192u: don't play with reassigning ->proc_fops, just use proc_create()
Al Viro [Sat, 30 Mar 2013 17:13:39 +0000 (13:13 -0400)]
rtl8192u: don't play with reassigning ->proc_fops, just use proc_create()

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agodgrp procfs fixes, part 6: just use proc_create{,_data}
Al Viro [Sat, 30 Mar 2013 05:07:56 +0000 (01:07 -0400)]
dgrp procfs fixes, part 6: just use proc_create{,_data}

->permission() of its own is a rudiment of sysctl imitation;
normal procfs logics will do just fine here, no need to
mess with ->proc_iops at all.

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agodgrp procfs fixes, part 5: per-node files
Al Viro [Sat, 30 Mar 2013 05:03:53 +0000 (01:03 -0400)]
dgrp procfs fixes, part 5: per-node files

this "hooks" scheme is pointless - just make file_operations non-static
and consolidate initialiazation bits.

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agodgrp procfs fixes, part 4: get rid of sysctl-like machinery
Al Viro [Sat, 30 Mar 2013 04:36:23 +0000 (00:36 -0400)]
dgrp procfs fixes, part 4: get rid of sysctl-like machinery

racy and very overblown...

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agodgrp procfs fixes, part 3: kill dead code
Al Viro [Sat, 30 Mar 2013 00:49:43 +0000 (20:49 -0400)]
dgrp procfs fixes, part 3: kill dead code

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agodgrp procfs fixes, part 2
Al Viro [Sat, 30 Mar 2013 00:45:38 +0000 (20:45 -0400)]
dgrp procfs fixes, part 2

All table entries either have non-NULL ->proc_file_fops or
non-NULL child.

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agodgrp procfs fixes, part 1
Al Viro [Sat, 30 Mar 2013 00:39:17 +0000 (20:39 -0400)]
dgrp procfs fixes, part 1

proc_create() has shat upon fops argument when mode is S_IFDIR.
Good thing, too, since fops passed to it is completely useless
for any directory.  Just use proc_mkdir(), damnit.

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agoThe rtl8192e procfs-based debug interface seems very broken
Sean MacLennan [Tue, 9 Apr 2013 01:18:06 +0000 (21:18 -0400)]
The rtl8192e procfs-based debug interface seems very broken

The procfs debug code in rtl_debug.c is, ironically, very buggy: it lacks proper locking.
Since the most useful part of the code (the stats) are available through more
standard APIs, I think it is best to just delete the whole mess.

Signed-off-by: Sean MacLennan <seanm@seanm.ca>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agortl8192e: switch to proc_create()
Al Viro [Sun, 31 Mar 2013 19:02:51 +0000 (15:02 -0400)]
rtl8192e: switch to proc_create()

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agortl8192e: don't use create_proc_entry() for directories
Al Viro [Fri, 29 Mar 2013 23:30:06 +0000 (19:30 -0400)]
rtl8192e: don't use create_proc_entry() for directories

proc_mkdir() is there for purpose...

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agoprocfs: switch /proc/self away from proc_dir_entry
Al Viro [Fri, 29 Mar 2013 23:27:05 +0000 (19:27 -0400)]
procfs: switch /proc/self away from proc_dir_entry

Just have it pinned in dcache all along and let procfs ->kill_sb()
drop it before kill_anon_super().

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agomode_t, whack-a-mole at 11...
Al Viro [Fri, 29 Mar 2013 16:23:28 +0000 (12:23 -0400)]
mode_t, whack-a-mole at 11...

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agosnd_info_register: switch to proc_create_data/proc_mkdir_mode
Al Viro [Fri, 29 Mar 2013 03:01:34 +0000 (23:01 -0400)]
snd_info_register: switch to proc_create_data/proc_mkdir_mode

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agohysdn: stash pointer to card into proc_dir_entry->data
Al Viro [Thu, 28 Mar 2013 22:56:21 +0000 (18:56 -0400)]
hysdn: stash pointer to card into proc_dir_entry->data

no need to search later - we know the card when we are
creating procfs entries

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agoatags_proc: switch to proc_create_data()
Al Viro [Thu, 28 Mar 2013 22:11:13 +0000 (18:11 -0400)]
atags_proc: switch to proc_create_data()

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agogadgetfs: don't bother with fops->owner
Al Viro [Thu, 28 Mar 2013 17:12:32 +0000 (13:12 -0400)]
gadgetfs: don't bother with fops->owner

filesystem module as whole is pinned down by its superblock, no need
to have opened files on it to add anything to that.

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agoccg: don't bother with fops->owner
Al Viro [Thu, 28 Mar 2013 17:00:31 +0000 (13:00 -0400)]
ccg: don't bother with fops->owner

filesystem module as whole is pinned down by its superblock, no need
to have opened files on it to add anything to that.

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agospufs: don't bother with fops->owner
Al Viro [Thu, 28 Mar 2013 16:45:40 +0000 (12:45 -0400)]
spufs: don't bother with fops->owner

filesystem module as whole is pinned down by its superblock, no need
to have opened files on it to add anything to that.

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agoget rid of the last free_pipe_info() callers
Al Viro [Thu, 21 Mar 2013 15:06:46 +0000 (11:06 -0400)]
get rid of the last free_pipe_info() callers

and rename __free_pipe_info() to free_pipe_info()

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agoget rid of alloc_pipe_info() argument
Al Viro [Thu, 21 Mar 2013 15:04:15 +0000 (11:04 -0400)]
get rid of alloc_pipe_info() argument

not used anymore

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agoget rid of pipe->inode
Al Viro [Thu, 21 Mar 2013 15:01:38 +0000 (11:01 -0400)]
get rid of pipe->inode

it's used only as a flag to distinguish normal pipes/FIFOs from the
internal per-task one used by file-to-file splice.  And pipe->files
would work just as well for that purpose...

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agointroduce variants of pipe_lock/pipe_unlock for real pipes/FIFOs
Al Viro [Thu, 21 Mar 2013 16:24:01 +0000 (12:24 -0400)]
introduce variants of pipe_lock/pipe_unlock for real pipes/FIFOs

fs/pipe.c file_operations methods *know* that pipe is not an internal one;
no need to check pipe->inode for those callers.

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agopipe: set file->private_data to ->i_pipe
Al Viro [Thu, 21 Mar 2013 15:16:56 +0000 (11:16 -0400)]
pipe: set file->private_data to ->i_pipe

simplify get_pipe_info(), while we are at it

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agopipe: don't use ->i_mutex
Al Viro [Thu, 21 Mar 2013 06:32:24 +0000 (02:32 -0400)]
pipe: don't use ->i_mutex

now it can be done - put mutex into pipe_inode_info, use it instead
of ->i_mutex

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agopipe: take allocation and freeing of pipe_inode_info out of ->i_mutex
Al Viro [Thu, 21 Mar 2013 06:21:19 +0000 (02:21 -0400)]
pipe: take allocation and freeing of pipe_inode_info out of ->i_mutex

* new field - pipe->files; number of struct file over that pipe (all
  sharing the same inode, of course); protected by inode->i_lock.
* pipe_release() decrements pipe->files, clears inode->i_pipe when
  if the counter has reached 0 (all under ->i_lock) and, in that case,
  frees pipe after having done pipe_unlock()
* fifo_open() starts with grabbing ->i_lock, and either bumps pipe->files
  if ->i_pipe was non-NULL or allocates a new pipe (dropping and regaining
  ->i_lock) and rechecks ->i_pipe; if it's still NULL, inserts new pipe
  there, otherwise bumps ->i_pipe->files and frees the one we'd allocated.
  At that point we know that ->i_pipe is non-NULL and won't go away, so
  we can do pipe_lock() on it and proceed as we used to.  If we end up
  failing, decrement pipe->files and if it reaches 0 clear ->i_pipe and
  free the sucker after pipe_unlock().

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agopipe: preparation to new locking rules
Al Viro [Thu, 21 Mar 2013 06:16:30 +0000 (02:16 -0400)]
pipe: preparation to new locking rules

* use the fact that file_inode(file)->i_pipe doesn't change
  while the file is opened - no locks needed to access that.
* switch to pipe_lock/pipe_unlock where it's easy to do

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agopipe: switch wait_for_partner() and wake_up_partner() to pipe_inode_info
Al Viro [Thu, 21 Mar 2013 06:07:59 +0000 (02:07 -0400)]
pipe: switch wait_for_partner() and wake_up_partner() to pipe_inode_info

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agopipe: fold file_operations instances in one
Al Viro [Tue, 12 Mar 2013 13:58:10 +0000 (09:58 -0400)]
pipe: fold file_operations instances in one

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agofold fifo.c into pipe.c
Al Viro [Tue, 12 Mar 2013 13:46:27 +0000 (09:46 -0400)]
fold fifo.c into pipe.c

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agolift sb_start_write out of ->splice_write()
Al Viro [Wed, 20 Mar 2013 17:21:32 +0000 (13:21 -0400)]
lift sb_start_write out of ->splice_write()

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agolift sb_start_write into default_file_splice_write()
Al Viro [Wed, 20 Mar 2013 17:19:30 +0000 (13:19 -0400)]
lift sb_start_write into default_file_splice_write()

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agolift sb_start_write() out of ->write()
Al Viro [Wed, 20 Mar 2013 17:04:20 +0000 (13:04 -0400)]
lift sb_start_write() out of ->write()

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agoswitch compat readv/writev variants to COMPAT_SYSCALL_DEFINE
Al Viro [Wed, 20 Mar 2013 14:42:10 +0000 (10:42 -0400)]
switch compat readv/writev variants to COMPAT_SYSCALL_DEFINE

... and take to fs/read_write.c

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agof2fs: use mnt_want_write_file() in ioctl
Al Viro [Wed, 20 Mar 2013 13:33:23 +0000 (09:33 -0400)]
f2fs: use mnt_want_write_file() in ioctl

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agolift sb_start_write/sb_end_write out of ->aio_write()
Al Viro [Wed, 20 Mar 2013 01:01:03 +0000 (21:01 -0400)]
lift sb_start_write/sb_end_write out of ->aio_write()

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agohpfs: move setting hpfs-private i_dirty to ->write_end()
Al Viro [Wed, 20 Mar 2013 00:35:00 +0000 (20:35 -0400)]
hpfs: move setting hpfs-private i_dirty to ->write_end()

... so that writev(2) doesn't miss it.  Get rid of hpfs_file_write().

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agoreiserfs: don't wank with EFBIG before calling do_sync_write()
Al Viro [Tue, 19 Mar 2013 23:46:45 +0000 (19:46 -0400)]
reiserfs: don't wank with EFBIG before calling do_sync_write()

look for file_capable() in there...

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agofold release_mounts() into namespace_unlock()
Al Viro [Sat, 16 Mar 2013 19:12:40 +0000 (15:12 -0400)]
fold release_mounts() into namespace_unlock()

... and provide namespace_lock() as a trivial wrapper;
switch to those two consistently.

Result is patterned after rtnl_lock/rtnl_unlock pair.

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agoswitch unlock_mount() to namespace_unlock(), convert all umount_tree() callers
Al Viro [Sat, 16 Mar 2013 18:49:45 +0000 (14:49 -0400)]
switch unlock_mount() to namespace_unlock(), convert all umount_tree() callers

which allows to kill the last argument of umount_tree() and make release_mounts()
static.

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agomore conversions to namespace_unlock()
Al Viro [Sat, 16 Mar 2013 18:42:19 +0000 (14:42 -0400)]
more conversions to namespace_unlock()

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agoget rid of the second argument of shrink_submounts()
Al Viro [Sat, 16 Mar 2013 18:39:34 +0000 (14:39 -0400)]
get rid of the second argument of shrink_submounts()

... it's always &unmounted.

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agosaner umount_tree()/release_mounts(), part 1
Al Viro [Sat, 16 Mar 2013 18:35:16 +0000 (14:35 -0400)]
saner umount_tree()/release_mounts(), part 1

global list of release_mounts() fodder, protected by namespace_sem;
eventually, all umount_tree() callers will use it as kill list.
Helper picking the contents of that list, releasing namespace_sem
and doing release_mounts() on what it got.

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agoget rid of full-hash scan on detaching vfsmounts
Al Viro [Fri, 15 Mar 2013 14:53:28 +0000 (10:53 -0400)]
get rid of full-hash scan on detaching vfsmounts

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agomnt: release locks on error path in do_loopback
Andrey Vagin [Tue, 9 Apr 2013 13:33:29 +0000 (17:33 +0400)]
mnt: release locks on error path in do_loopback

do_loopback calls lock_mount(path) and forget to unlock_mount
if clone_mnt or copy_mnt fails.

[   77.661566] ================================================
[   77.662939] [ BUG: lock held when returning to user space! ]
[   77.664104] 3.9.0-rc5+ #17 Not tainted
[   77.664982] ------------------------------------------------
[   77.666488] mount/514 is leaving the kernel with locks still held!
[   77.668027] 2 locks held by mount/514:
[   77.668817]  #0:  (&sb->s_type->i_mutex_key#7){+.+.+.}, at: [<ffffffff811cca22>] lock_mount+0x32/0xe0
[   77.671755]  #1:  (&namespace_sem){+++++.}, at: [<ffffffff811cca3a>] lock_mount+0x4a/0xe0

Signed-off-by: Andrey Vagin <avagin@openvz.org>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agopalinfo fixes
Al Viro [Mon, 1 Apr 2013 02:34:37 +0000 (22:34 -0400)]
palinfo fixes

* check for proc_mkdir() failures
* fix buffer overrun - sizeof(format string) is *not* enough to
hold sprintf() result.
* use proc_remove_subtree(); life's much easier with it

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agoprocfs: add proc_remove_subtree()
Al Viro [Sun, 31 Mar 2013 00:13:46 +0000 (20:13 -0400)]
procfs: add proc_remove_subtree()

just what it sounds like; do that only to procfs subtrees you've
created - doing that to something shared with another driver is
not only antisocial, but might cause interesting races with
proc_create() and its ilk.

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agoecryptfs: close rmmod race
Al Viro [Thu, 28 Mar 2013 17:30:23 +0000 (13:30 -0400)]
ecryptfs: close rmmod race

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agoMerge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
Linus Torvalds [Wed, 27 Mar 2013 00:42:55 +0000 (17:42 -0700)]
Merge branch 'for-linus' of git://git./linux/kernel/git/viro/vfs

Pull vfs fixes from Al Viro:
 "stable fodder; assorted deadlock fixes"

* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
  vt: synchronize_rcu() under spinlock is not nice...
  Nest rename_lock inside vfsmount_lock
  Don't bother with redoing rw_verify_area() from default_file_splice_from()

11 years agovt: synchronize_rcu() under spinlock is not nice...
Al Viro [Wed, 27 Mar 2013 00:30:17 +0000 (20:30 -0400)]
vt: synchronize_rcu() under spinlock is not nice...

vcs_poll_data_free() calls unregister_vt_notifier(), which calls
atomic_notifier_chain_unregister(), which calls synchronize_rcu().
Do it *after* we'd dropped ->f_lock.

Cc: stable@vger.kernel.org (all kernels since 2.6.37)
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agoNest rename_lock inside vfsmount_lock
Al Viro [Tue, 26 Mar 2013 22:25:57 +0000 (18:25 -0400)]
Nest rename_lock inside vfsmount_lock

... lest we get livelocks between path_is_under() and d_path() and friends.

The thing is, wrt fairness lglocks are more similar to rwsems than to rwlocks;
it is possible to have thread B spin on attempt to take lock shared while thread
A is already holding it shared, if B is on lower-numbered CPU than A and there's
a thread C spinning on attempt to take the same lock exclusive.

As the result, we need consistent ordering between vfsmount_lock (lglock) and
rename_lock (seq_lock), even though everything that takes both is going to take
vfsmount_lock only shared.

Spotted-by: Brad Spengler <spender@grsecurity.net>
Cc: stable@vger.kernel.org
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>