Actually jsm displays "Device Added" 8 times (for a 8 port device).
This silly patch just makes things more informative, showing
the port (instead of the device) that was added.
1. If unregister_netdevice_many() is called with both registered
and unregistered devices, rollback_registered_many() bails out
when it reaches the first unregistered device. The processing
of the prior registered devices is unfinished, and the
remaining devices are skipped, and possible registered netdev's
are leaked/unregistered.
2. System hangs or panics depending on how the devices are passed,
since when netdev_run_todo() runs, some devices were not fully
processed.
Tested by passing intermingled unregistered and registered vlan
devices to unregister_netdevice_many() as follows:
1. dev, fake_dev1, fake_dev2: hangs in run_todo
("unregister_netdevice: waiting for eth1.100 to become
free. Usage count = 1")
2. fake_dev1, dev, fake_dev2: failure during de-registration
and next registration, followed by a vlan driver Oops
during subsequent registration.
Martin Willi [Wed, 9 Dec 2009 06:11:15 +0000 (06:11 +0000)]
xfrm: Fix truncation length of authentication algorithms installed via PF_KEY
Commit 4447bb33f09444920a8f1d89e1540137429351b6 ("xfrm: Store aalg in
xfrm_state with a user specified truncation length") breaks
installation of authentication algorithms via PF_KEY, as the state
specific truncation length is not installed with the algorithms
default truncation length. This patch initializes state properly to
the default if installed via PF_KEY.
Paul Mundt [Thu, 10 Dec 2009 20:42:27 +0000 (20:42 +0000)]
net: smc91x: Fix up type mismatch in smc_drv_resume().
smc_drv_resume() takes a struct device, while smc_enable_device() takes a
platform device. This fixes up the smc_enable_device() callsite with the
proper pointer.
It's not obvious when this change was introduced, as git history doesn't
go back that far. Presumably the resume code has always been broken in
this fashion.
Mike Frysinger [Wed, 9 Dec 2009 03:40:04 +0000 (03:40 +0000)]
smc91x: fix unused flags warnings on UP systems
Local flags variables will be declared whenever these functions get used,
but obviously on UP systems the flags parameter won't be touched. So add
some dummy ops that get optimized away anyways to satisfy gcc's warnings.
Takashi Iwai [Thu, 3 Dec 2009 05:12:02 +0000 (05:12 +0000)]
net: Add missing TST_CFG_WRITE bits around sky2_pci_write
Add missing TST_CFG_WRITE bits around sky2_pci_write*() in Optima
setup routines. Without the cfg-write bits, the driver may spew endless
link-up messages through qlink irq.
Linus Torvalds [Fri, 11 Dec 2009 22:32:30 +0000 (14:32 -0800)]
Merge branch 'drm-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6
* 'drm-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6:
drm/ttm: export some functions useful to drivers using ttm
drm/radeon/kms/avivo: fix typo in new_pll module description
drm/radeon/kms: Convert radeon to new ttm_bo_init
drm/ttm: Convert ttm_buffer_object_init to use ttm_placement
Jason Gunthorpe [Tue, 24 Nov 2009 21:52:53 +0000 (21:52 +0000)]
xfs: Fix error return for fallocate() on XFS
Noticed that through glibc fallocate would return 28 rather than -1
and errno = 28 for ENOSPC. The xfs routines uses XFS_ERROR format
positive return error codes while the syscalls use negative return
codes. Fixup the two cases in xfs_vn_fallocate syscall to convert to
negative.
Stop the flag saving as we never mangle those in the unmount path, and
hide all the weird arguents to the dmapi code inside the
XFS_SEND_PREUNMOUNT / XFS_SEND_UNMOUNT macros.
Remove our own STATIC_INLINE macro. For small function inside
implementation files just use STATIC and let gcc inline it, and for
those in headers do the normal static inline - they are all small
enough to be inlined for debug builds, too.
Currently the low-level buffer cache interfaces are highly confusing
as we have a _flags variant of each that does actually respect the
flags, and one without _flags which has a flags argument that gets
ignored and overriden with a default set. Given that very few places
use the default arguments get rid of the duplication and convert all
callers to pass the flags explicitly. Also remove the now confusing
_flags postfix.
Andy Poling [Tue, 3 Nov 2009 17:26:47 +0000 (17:26 +0000)]
xfs: Wrapped journal record corruption on read at recovery
Summary of problem:
If a journal record wraps at the physical end of the journal, it has to be
read in two parts in xlog_do_recovery_pass(): a read at the physical end and a
read at the physical beginning. If xlog_bread() has to re-align the first
read, the second read request does not take that re-alignment into account.
If the first read was re-aligned, the second read over-writes the end of the
data from the first read, effectively corrupting it. This can happen either
when reading the record header or reading the record data.
The first sanity check in xlog_recover_process_data() is to check for a valid
clientid, so that is the error reported.
Summary of fix:
If there was a first read at the physical end, XFS_BUF_PTR() returns where the
data was requested to begin. Conversely, because it is the result of
xlog_align(), offset indicates where the requested data for the first read
actually begins - whether or not xlog_bread() has re-aligned it.
Using offset as the base for the calculation of where to place the second read
data ensures that it will be correctly placed immediately following the data
from the first read instead of sometimes over-writing the end of it.
The attached patch has resolved the reported problem of occasional inability
to recover the journal (reporting "bad clientid").
Currently we have different end I/O handlers for read vs the different
types of write I/O. But they are all very similar so we could just
use one with a few conditionals and reduce code size a lot.
The VM and I/O schedulers now expect us to use WRITE_SYNC_PLUG for
synchronous writeout. Right now I can't see any changes in performance
numbers with this, but we're getting some beating for not using it,
and the knowledge definitely could help the block code to make better
decisions.
xfs: reset the i_iolock lock class in the reclaim path
The iolock is used for protecting reads, writes and block truncates
against each other. We have two classes of callers, the first one is
induced by a file operation and requires a reference to the inode be
held and not dropped after the operation is done:
- xfs_vm_vmap, xfs_vn_fallocate, xfs_read, xfs_write, xfs_splice_read,
xfs_splice_write and xfs_setattr are all implementations of VFS
methods that require a live inode
- xfs_getbmap and xfs_swap_extents are ioctl subcommand for which the
same is true
- xfs_truncate_file is only called on quota inodes just returned from
xfs_iget
- xfs_sync_inode_data does the lock just after an igrab()
- xfs_filestream_associate and xfs_filestream_new_ag take the iolock
on the parent inode of an inode which by VFS rules must be referenced
And we have various calls to truncate blocks past EOF or the whole
file when dropping the last reference to an inode. Unfortunately
lockdep complains when we do memory allocations that can recurse into
the filesystem in the first class because the second class happens to
take the same lock. To avoid this re-init the iolock in the beginning
of xfs_fs_clear_inode to get a new lock class.
xfs: I/O completion handlers must use NOFS allocations
When completing I/O requests we must not allow the memory allocator to
recurse into the filesystem, as we might deadlock on waiting for the
I/O completion otherwise. The only thing currently allocating normal
GFP_KERNEL memory is the allocation of the transaction structure for
the unwritten extent conversion. Add a memflags argument to
_xfs_trans_alloc to allow controlling the allocator behaviour.
xfs: fix mmap_sem/iolock inversion in xfs_free_eofblocks
When xfs_free_eofblocks is called from ->release the VM might already
hold the mmap_sem, but in the write path we take the iolock before
taking the mmap_sem in the generic write code.
Switch xfs_free_eofblocks to only trylock the iolock if called from
->release and skip trimming the prellocated blocks in that case.
We'll still free them later on the final iput.
Currently the reclaim code for the case where we don't reclaim the
final reclaim is overly complicated. We know that the inode is clean
but instead of just directly reclaiming the clean inode we go through
the whole process of marking the inode reclaimable just to directly
reclaim it from the calling context. Besides being overly complicated
this introduces a race where iget could recycle an inode between
marked reclaimable and actually being reclaimed leading to panics.
This patch gets rid of the existing reclaim path, and replaces it with
a simple call to xfs_ireclaim if the inode was clean. While we're at
it we also use the slightly more lax xfs_inode_clean check we'd use
later to determine if we need to flush the inode here.
Finally get rid of xfs_reclaim function and place the remaining small
bits of reclaim code directly into xfs_fs_destroy_inode.
Jay Fenlason [Fri, 11 Dec 2009 19:23:58 +0000 (14:23 -0500)]
firewire: ohci: handle receive packets with a data length of zero
Queueing to receive an ISO packet with a payload length of zero
silently does nothing in dualbuffer mode, and crashes the kernel in
packet-per-buffer mode. Return an error in dualbuffer mode, because
the DMA controller won't let us do what we want, and work correctly in
packet-per-buffer mode.
* git://git.kernel.org/pub/scm/linux/kernel/git/viro/mmap:
Add missing alignment check in arch/score sys_mmap()
fix broken aliasing checks for MAP_FIXED on sparc32, mips, arm and sh
Get rid of open-coding in ia64_brk()
sparc_brk() is not needed anymore
switch do_brk() to get_unmapped_area()
Take arch_mmap_check() into get_unmapped_area()
fix a struct file leak in do_mmap_pgoff()
Unify sys_mmap*
Cut hugetlb case early for 32bit on ia64
arch_mmap_check() on mn10300
Kill ancient crap in s390 compat mmap
arm: add arch_mmap_check(), get rid of sys_arm_mremap()
file ->get_unmapped_area() shouldn't duplicate work of get_unmapped_area()
kill useless checks in sparc mremap variants
fix pgoff in "have to relocate" case of mremap()
fix the arch checks in MREMAP_FIXED case
fix checks for expand-in-place mremap
do_mremap() untangling, part 3
do_mremap() untangling, part 2
untangling do_mremap(), part 1
Staging: IIO: add selection of IIO_SW_RING to LIS3L02DQ as needed
Here I've kept the selection of IIO_SW_RING separate from
IIO_TRIGGER as it will go away fairly shortly when the ring buffer
type becomes configurable on a per device basis, whereas the
IIO_TRIGGER select will remain. Whether to retain the option to
remove the support for ring buffers entirely is one for after that
support is in place.
Henk de Groot [Sun, 6 Dec 2009 20:29:31 +0000 (21:29 +0100)]
Staging: wlags49_h2: fix up signal levels
Adjusts the signal levels reported by the wlags49_h2 and wlags49_h25 staging
drivers. With the constants supplied by Agere the signal levels are always
poor, even in close proximity to the AP. The signals are now measured with
a real device. 100% for close proximity to the AP, 0% for the noice floor.
Now the levels shown by the NetworkManager gauge make sense.
Some magic numbers in the related code are replaced by the correct constants
from the wireless extension interface (wireless.h). Also the flag IW_QUAL_DBM
is now set, as specified in the wireless.h header file.
Andrew Lunn [Mon, 9 Nov 2009 20:20:10 +0000 (21:20 +0100)]
staging: batman-adv meshing protocol
B.A.T.M.A.N. (better approach to mobile ad-hoc networking) is
a routing protocol for multi-hop ad-hoc mesh networks. The
networks may be wired or wireless. See
http://www.open-mesh.org/ for more information and user space
tools.
This is the first submission for inclusion in staging.
These drivers are no longer being developed and the original authors
seem to have abandonded them and hence, do not want them in the mainline
kernel tree.
Alan Cox [Wed, 18 Nov 2009 14:07:58 +0000 (14:07 +0000)]
Staging: et131x: clean up the avail fields in the rx registers
These have a wrap bit but again need little work to clean out. There are a
couple of uglies left that want addressing in later clean up. Notably we should
probably keep the local psr copy and wrap as two values.
Larry Finger [Tue, 17 Nov 2009 05:35:38 +0000 (23:35 -0600)]
Staging: rtl8187se: Rename staging driver to avoid name conflict with mainline driver
Now that active development has begun on a mainline version of
a driver for the RTL8187SE that should be called rtl8187se, there
is a conflict with the driver in staging with the same name.
To solve the conflict, rename the driver in staging to r8187se.
Larry Finger [Mon, 9 Nov 2009 16:53:20 +0000 (10:53 -0600)]
Staging: rtl8187se: Remove card8185 variable to simplify flow
When this code is used for the rtl8187se, the value of card_8185
in struct r8180_priv is always 7 or 8. As a result, the program
flow can be simplified.
Amit Kucheria [Mon, 9 Nov 2009 13:14:28 +0000 (15:14 +0200)]
Staging: iio: tsl2563 ambient light sensor driver
Add driver support for the tsl2563 TAOS ambient light sensor. After looking at
discussions on LKML, the driver was modified from a 'hwmon' driver to an 'iio'
driver. The sysfs interfaces have been tested on an RX51 (N900) to see if it
responds to changing light conditions.
The only real reason for submitting this to staging is that it is dependent on
the IIO subsystem.
Randy Dunlap [Tue, 17 Nov 2009 18:17:42 +0000 (10:17 -0800)]
Staging: sep: fix 2 warnings
Fix printk format warning:
drivers/staging/sep/sep_driver.c:276: warning: format '%08llx' expects type 'long long unsigned int', but argument 2 has type 'dma_addr_t'
and variable may be used uninitialized (correct):
drivers/staging/sep/sep_driver.c:1774: warning: 'error' may be used uninitialized in this function
Randy Dunlap [Wed, 11 Nov 2009 17:31:42 +0000 (09:31 -0800)]
Staging: vt665*: fix printk formats
Fix printk format warnings in vt665[56]:
drivers/staging/vt6655/wpa.c:150: warning: format '%ld' expects type 'long int', but argument 3 has type 'unsigned int'
drivers/staging/vt6655/wpa.c:181: warning: format '%ld' expects type 'long int', but argument 3 has type 'unsigned int'
drivers/staging/vt6656/wpa.c:150: warning: format '%ld' expects type 'long int', but argument 3 has type 'unsigned int'
drivers/staging/vt6656/wpa.c:181: warning: format '%ld' expects type 'long int', but argument 3 has type 'unsigned int'
drivers/staging/vt6656/firmware.c:804: warning: format '%ld' expects type 'long int', but argument 3 has type 'unsigned int'
Randy Dunlap [Tue, 10 Nov 2009 17:04:28 +0000 (09:04 -0800)]
Staging: iio: fix ring buffer build
max1363 uses both the iio hardware ring buffer and software
ring buffer interfaces, but its Makefile and Kconfig do not
reflect that usage, so its build breaks. Add a new Kconfig
symbol to reflect that usage and change max1363.h & Makefile
to use the new Kconfig symbol.
Martyn Welch [Thu, 29 Oct 2009 16:35:20 +0000 (16:35 +0000)]
Staging: vme: Rename VME DMA functions
The DMA resource allocation function is called "vme_request_dma" while
master and slave window allocation functions are called
"vme_master_request" and "vme_slave_request" respectively. Rename
"vme_request_dma" to "vme_dma_request" to fit the pattern.
Martyn Welch [Thu, 29 Oct 2009 16:35:14 +0000 (16:35 +0000)]
Staging: vme: Clean up tsi148 driver
* Remove message from IACK interrupt handler
* Correct clearing of location monitor interrupts
* Remove interrupt cleanup code that's duplcated in sub function
Martyn Welch [Thu, 29 Oct 2009 16:35:08 +0000 (16:35 +0000)]
Staging: vme: Correct operation of vme_lm_free
The vme_lm_free() function is not clearing up the resource created in
vme_lm_request(). In addition vme_lm_free() is void function and is used in
exit/error paths, we should wait for mutex to become free rather than
exiting and not freeing the resource.
Martyn Welch [Thu, 29 Oct 2009 16:35:01 +0000 (16:35 +0000)]
Staging: vme: Allow size of 0 when disabling a window
The TSI148 driver currently does not allow a size of zero to be passed to a
window. Zero is a valid value if the window is being disabled. Allow
windows to be disabled and their registers cleared.
Martyn Welch [Thu, 29 Oct 2009 16:34:54 +0000 (16:34 +0000)]
Staging: vme: Pull common VME interrupt handling into core code
Currently the VME callback infrastructure is replicated in each VME driver.
Move this common code into the VME core. Rename functions to fit in better
with naming of other VME functions.