openwrt/staging/blogic.git
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>
11 years agoMerge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Linus Torvalds [Tue, 26 Mar 2013 21:24:29 +0000 (14:24 -0700)]
Merge git://git./linux/kernel/git/davem/net

Pull networking fixes from David Miller:

 1) Always increment IPV4 ID field in encapsulated GSO packets, even
    when DF is set.  Regression fix from Pravin B Shelar.

 2) Fix per-net subsystem initialization in netfilter conntrack,
    otherwise we may access dynamically allocated memory before it is
    actually allocated.  From Gao Feng.

 3) Fix DMA buffer lengths in iwl3945 driver, from Stanislaw Gruszka.

 4) Fix race between submission of sync vs async commands in mwifiex
    driver, from Amitkumar Karwar.

 5) Add missing cancel of command timer in mwifiex driver, from Bing
    Zhao.

 6) Missing SKB free in rtlwifi USB driver, from Jussi Kivilinna.

 7) Thermal layer tries to use a genetlink multicast string that is
    longer than the 16 character limit.  Fix it and add a BUG check to
    prevent this kind of thing from happening in the future.

 From Masatake YAMATO.

 8) Fix many bugs in the handling of the teardown of L2TP connections,
    UDP encapsulation instances, and sockets.  From Tom Parkin.

 9) Missing socket release in IRDA, from Kees Cook.

10) Fix fec driver modular build, from Fabio Estevam.

11) Erroneous use of kfree() instead of free_netdev() in lantiq_etop,
    from Wei Yongjun.

12) Fix bugs in handling of queue numbers and steering rules in mlx4
    driver, from Moshe Lazer, Hadar Hen Zion, and Or Gerlitz.

13) Some FOO_DIAG_MAX constants were defined off by one, fix from Andrey
    Vagin.

14) TCP segmentation deferral is unintentionally done too strongly,
    breaking ACK clocking.  Fix from Eric Dumazet.

15) net_enable_timestamp() can legitimately be invoked from software
    interrupts, and in a way that is safe, so remove the WARN_ON().
    Also from Eric Dumazet.

16) Fix use after free in VLANs, from Cong Wang.

17) Fix TCP slow start retransmit storms after SACK reneging, from
    Yuchung Cheng.

18) Unix socket release should mark a socket dead before NULL'ing out
    sock->sk, otherwise we can race.  Fix from Paul Moore.

19) IPV6 addrconf code can try to free static memory, from Hong Zhiguo.

20) Fix register mis-programming, NULL pointer derefs, and wrong PHC
    clock frequency in IGB driver.  From Lior LevyAlex Williamson, Jiri
    Benc, and Jeff Kirsher.

21) skb->ip_summed logic in pch_gbe driver is reversed, breaking packet
    forwarding.  Fix from Veaceslav Falico.

* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (65 commits)
  ipv4: Fix ip-header identification for gso packets.
  bonding: remove already created master sysfs link on failure
  af_unix: dont send SCM_CREDENTIAL when dest socket is NULL
  pch_gbe: fix ip_summed checksum reporting on rx
  igb: fix PHC stopping on max freq
  igb: make sensor info static
  igb: SR-IOV init reordering
  igb: Fix null pointer dereference
  igb: fix i350 anti spoofing config
  ixgbevf: don't release the soft entries
  ipv6: fix bad free of addrconf_init_net
  unix: fix a race condition in unix_release()
  tcp: undo spurious timeout after SACK reneging
  bnx2x: fix assignment of signed expression to unsigned variable
  bridge: fix crash when set mac address of br interface
  8021q: fix a potential use-after-free
  net: remove a WARN_ON() in net_enable_timestamp()
  tcp: preserve ACK clocking in TSO
  net: fix *_DIAG_MAX constants
  net/mlx4_core: Disallow releasing VF QPs which have steering rules
  ...

11 years agoMerge tag 'nfs-for-3.9-3' of git://git.linux-nfs.org/projects/trondmy/linux-nfs
Linus Torvalds [Tue, 26 Mar 2013 21:23:45 +0000 (14:23 -0700)]
Merge tag 'nfs-for-3.9-3' of git://git.linux-nfs.org/projects/trondmy/linux-nfs

Pull NFS client bugfixes from Trond Myklebust:
 - Fix an NFSv4 idmapper regression
 - Fix an Oops in the pNFS blocks client
 - Fix up various issues with pNFS layoutcommit
 - Ensure correct read ordering of variables in
   rpc_wake_up_task_queue_locked

* tag 'nfs-for-3.9-3' of git://git.linux-nfs.org/projects/trondmy/linux-nfs:
  SUNRPC: Add barriers to ensure read ordering in rpc_wake_up_task_queue_locked
  NFSv4.1: Add a helper pnfs_commit_and_return_layout
  NFSv4.1: Always clear the NFS_INO_LAYOUTCOMMIT in layoutreturn
  NFSv4.1: Fix a race in pNFS layoutcommit
  pnfs-block: removing DM device maybe cause oops when call dev_remove
  NFSv4: Fix the string length returned by the idmapper

11 years agoipv4: Fix ip-header identification for gso packets.
Pravin B Shelar [Sun, 24 Mar 2013 17:36:29 +0000 (17:36 +0000)]
ipv4: Fix ip-header identification for gso packets.

ip-header id needs to be incremented even if IP_DF flag is set.
This behaviour was changed in commit 490ab08127cebc25e3a26
(IP_GRE: Fix IP-Identification).

Following patch fixes it so that identification is always
incremented.

Reported-by: Cong Wang <amwang@redhat.com>
Signed-off-by: Pravin B Shelar <pshelar@nicira.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
11 years agobonding: remove already created master sysfs link on failure
Veaceslav Falico [Tue, 26 Mar 2013 16:43:28 +0000 (17:43 +0100)]
bonding: remove already created master sysfs link on failure

If slave sysfs symlink failes to be created - we end up without removing
the master sysfs symlink. Remove it in case of failure.

Signed-off-by: Veaceslav Falico <vfalico@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
11 years agoaf_unix: dont send SCM_CREDENTIAL when dest socket is NULL
dingtianhong [Mon, 25 Mar 2013 17:02:04 +0000 (17:02 +0000)]
af_unix: dont send SCM_CREDENTIAL when dest socket is NULL

SCM_SCREDENTIALS should apply to write() syscalls only either source or destination
socket asserted SOCK_PASSCRED. The original implememtation in maybe_add_creds is wrong,
and breaks several LSB testcases ( i.e. /tset/LSB.os/netowkr/recvfrom/T.recvfrom).

Origionally-authored-by: Karel Srot <ksrot@redhat.com>
Signed-off-by: Ding Tianhong <dingtianhong@huawei.com>
Acked-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
11 years agoMerge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net
David S. Miller [Tue, 26 Mar 2013 16:21:31 +0000 (12:21 -0400)]
Merge branch 'master' of git://git./linux/kernel/git/jkirsher/net

Jeff Kirsher says:

====================
This series contains updates to ixgbevf and igb.

The ixgbevf calls to pci_disable_msix() and to free the msix_entries
memory should not occur if device open fails.  Instead they should be
called during device driver removal to balance with the call to
pci_enable_msix() and the call to allocate msix_entries memory
during the device probe and driver load.

The remaining 4 of 5 igb patches are simple 1-3 line patches to fix
several issues such as possible null pointer dereference, PHC stopping
on max frequency, make sensor info static and SR-IOV initialization
reordering.

The remaining igb patch to fix anti-spoofing config fixes a problem
in i350 where anti spoofing configuration was written into a wrong
register.
====================

Signed-off-by: David S. Miller <davem@davemloft.net>
11 years agopch_gbe: fix ip_summed checksum reporting on rx
Veaceslav Falico [Mon, 25 Mar 2013 22:26:21 +0000 (22:26 +0000)]
pch_gbe: fix ip_summed checksum reporting on rx

skb->ip_summed should be CHECKSUM_UNNECESSARY when the driver reports that
checksums were correct and CHECKSUM_NONE in any other case. They're
currently placed vice versa, which breaks the forwarding scenario. Fix it
by placing them as described above.

Signed-off-by: Veaceslav Falico <vfalico@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
11 years agoigb: fix PHC stopping on max freq
Jiri Benc [Wed, 20 Mar 2013 09:06:34 +0000 (09:06 +0000)]
igb: fix PHC stopping on max freq

For 82576 MAC type, max_adj is reported as 1000000000 ppb. However, if
this value is passed to igb_ptp_adjfreq_82576, incvalue overflows out of
INCVALUE_82576_MASK, resulting in setting of zero TIMINCA.incvalue, stopping
the PHC (instead of going at twice the nominal speed).

Fix the advertised max_adj value to the largest value hardware can handle.
As there is no min_adj value available (-max_adj is used instead), this will
also prevent stopping the clock intentionally. It's probably not a big deal,
other igb MAC types don't support stopping the clock, either.

Signed-off-by: Jiri Benc <jbenc@redhat.com>
Acked-by: Matthew Vick <matthew.vick@intel.com>
Tested-by: Aaron Brown <aaron.f.brown@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
11 years agoigb: make sensor info static
Stephen Hemminger [Wed, 20 Mar 2013 09:06:29 +0000 (09:06 +0000)]
igb: make sensor info static

Trivial sparse warning.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Tested-by: Aaron Brown <aaron.f.brown@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
11 years agoigb: SR-IOV init reordering
Alex Williamson [Wed, 13 Mar 2013 15:50:29 +0000 (15:50 +0000)]
igb: SR-IOV init reordering

igb is ineffective at setting a lower total VFs because:

int pci_sriov_set_totalvfs(struct pci_dev *dev, u16 numvfs)
{
        ...
        /* Shouldn't change if VFs already enabled */
        if (dev->sriov->ctrl & PCI_SRIOV_CTRL_VFE)
                return -EBUSY;

Swap init ordering.

Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
Acked-by: Greg Rose <gregory.v.rose@intel.com>
Tested-by: Aaron Brown <aaron.f.brown@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
11 years agoigb: Fix null pointer dereference
Alex Williamson [Wed, 13 Mar 2013 15:50:24 +0000 (15:50 +0000)]
igb: Fix null pointer dereference

The max_vfs= option has always been self limiting to the number of VFs
supported by the device.  fa44f2f1 added SR-IOV configuration via
sysfs, but in the process broke this self correction factor.  The
failing path is:

igb_probe
  igb_sw_init
    if (max_vfs > 7) {
        adapter->vfs_allocated_count = 7;
    ...
    igb_probe_vfs
    igb_enable_sriov(, max_vfs)
      if (num_vfs > 7) {
        err = -EPERM;
        ...

This leaves vfs_allocated_count = 7 and vf_data = NULL, so we bomb out
when igb_probe finally calls igb_reset.  It seems like a really bad
idea, and somewhat pointless, to set vfs_allocated_count separate from
vf_data, but limiting max_vfs is enough to avoid the null pointer.

Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
Acked-by: Greg Rose <gregory.v.rose@intel.com>
Tested-by: Aaron Brown <aaron.f.brown@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
11 years agoigb: fix i350 anti spoofing config
Lior Levy [Tue, 12 Mar 2013 15:49:32 +0000 (15:49 +0000)]
igb: fix i350 anti spoofing config

Fix a problem in i350 where anti spoofing configuration was written into a
wrong register.

Signed-off-by: Lior Levy <lior.levy@intel.com>
Tested-by: Aaron Brown <aaron.f.brown@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
11 years agoixgbevf: don't release the soft entries
xunleer [Tue, 5 Mar 2013 07:44:20 +0000 (07:44 +0000)]
ixgbevf: don't release the soft entries

When the ixgbevf driver is opened the request to allocate MSIX irq
vectors may fail.  In that case the driver will call ixgbevf_down()
which will call ixgbevf_irq_disable() to clear the HW interrupt
registers and calls synchronize_irq() using the msix_entries pointer in
the adapter structure.  However, when the function to request the MSIX
irq vectors failed it had already freed the msix_entries which causes
an OOPs from using the NULL pointer in synchronize_irq().

The calls to pci_disable_msix() and to free the msix_entries memory
should not occur if device open fails.  Instead they should be called
during device driver removal to balance with the call to
pci_enable_msix() and the call to allocate msix_entries memory
during the device probe and driver load.

Signed-off-by: Li Xun <xunleer.li@huawei.com>
Signed-off-by: Greg Rose <gregory.v.rose@intel.com>
Tested-by: Sibai Li <sibai.li@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
11 years agoMerge branch 'timers-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel...
Linus Torvalds [Tue, 26 Mar 2013 01:03:34 +0000 (18:03 -0700)]
Merge branch 'timers-urgent-for-linus' of git://git./linux/kernel/git/tip/tip

Pull timer fix from Thomas Gleixner:
 "A single bugfix which prevents that a non functional timer device is
  selected to provide the fallback device, which is supposed to serve
  timer interrupts on behalf of non functional devices ..."

* 'timers-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
  clockevents: Don't allow dummy broadcast timers

11 years agoipv6: fix bad free of addrconf_init_net
Hong Zhiguo [Mon, 25 Mar 2013 17:52:45 +0000 (01:52 +0800)]
ipv6: fix bad free of addrconf_init_net

Signed-off-by: Hong Zhiguo <honkiko@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
11 years agounix: fix a race condition in unix_release()
Paul Moore [Mon, 25 Mar 2013 03:18:33 +0000 (03:18 +0000)]
unix: fix a race condition in unix_release()

As reported by Jan, and others over the past few years, there is a
race condition caused by unix_release setting the sock->sk pointer
to NULL before properly marking the socket as dead/orphaned.  This
can cause a problem with the LSM hook security_unix_may_send() if
there is another socket attempting to write to this partially
released socket in between when sock->sk is set to NULL and it is
marked as dead/orphaned.  This patch fixes this by only setting
sock->sk to NULL after the socket has been marked as dead; I also
take the opportunity to make unix_release_sock() a void function
as it only ever returned 0/success.

Dave, I think this one should go on the -stable pile.

Special thanks to Jan for coming up with a reproducer for this
problem.

Reported-by: Jan Stancek <jan.stancek@gmail.com>
Signed-off-by: Paul Moore <pmoore@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
11 years agoMerge tag 'rdma-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland...
Linus Torvalds [Mon, 25 Mar 2013 16:44:39 +0000 (09:44 -0700)]
Merge tag 'rdma-for-linus' of git://git./linux/kernel/git/roland/infiniband

Pull infiniband/rdma fixes from Roland Dreier:
 "Small batch of InfiniBand/RDMA fixes for 3.9:

   - Fix for TX lockup in IPoIB
   - QLogic -> Intel update for qib driver
   - Small static checker fix for qib
   - Fix error path return value in cxgb4"

* tag 'rdma-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband:
  IB/qib: change QLogic to Intel
  IB/ipath: Silence a static checker warning
  IPoIB: Fix send lockup due to missed TX completion
  RDMA/cxgb4: Fix error return code in create_qp()

11 years agoMerge tag 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc
Linus Torvalds [Mon, 25 Mar 2013 16:26:10 +0000 (09:26 -0700)]
Merge tag 'fixes' of git://git./linux/kernel/git/arm/arm-soc

Pull ARM SoC bug fixes from Arnd Bergmann:
 "Four patches for arm-soc this week:

   - Kevin Hilman is no longer reachable under his previous email
     address.  He submitted the patch earlier, but nobody felt
     responsible to pick it up.

   - One Tegra fix for an incorect register address in device tree.

   - IMX multiplatform support exposes a configuration option that leads
     to unbootable kernels on all other machines and that needs to
     depend on that platform.

   - A nontrivial bug fix for the setup of the mxs video output."

* tag 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc:
  MAINTAINERS: update email address for Kevin Hilman
  ARM: tegra: fix register address of slink controller
  ARM: imx: add dependency check for DEBUG_IMX_UART_PORT
  ARM: video: mxs: Fix mxsfb misconfiguring VDCTRL0