Jiri Kosina [Wed, 21 Feb 2007 16:18:03 +0000 (17:18 +0100)]
HID: fix possible double-free on error path in hid parser
Freeing of device->collection is properly done in hid_free_device() (as
this function is supposed to free all the device resources and could be
called from transport specific code, e.g. usb_hid_configure()).
Remove all kfree() calls preceeding the hid_free_device() call.
Jiri Kosina [Tue, 20 Feb 2007 00:33:39 +0000 (01:33 +0100)]
HID: fix bug in zeroing the last field byte in output reports
d4ae650a904612ffb7edd3f28b69b022988d2466 introduced zeroing of the
last field byte in output reports in order to make sure the unused
bits are set to 0. This is done in a wrong way, resulting in a
wrong bits being zeroed out (not properly shifted by the field offset
in the report). Fix this.
Julien BLACHE [Sun, 11 Feb 2007 17:20:25 +0000 (18:20 +0100)]
USB HID: Fix USB vendor and product IDs endianness for USB HID devices
The USB vendor and product IDs are not byteswapped appropriately, and
thus come out in the wrong endianness when fetched through the evdev
using ioctl() on big endian platforms.
Linus Torvalds [Wed, 28 Feb 2007 04:59:12 +0000 (20:59 -0800)]
Linux 2.6.21-rc2
Too many changes for comfort since -rc1. Some missed merges, and some
just annoyingly big fixes since. This is not how an -rc2 should look.
Need to really calm things down!
David S. Miller [Mon, 26 Feb 2007 22:55:06 +0000 (14:55 -0800)]
[SPARC64]: Fix PCI interrupts on E450 et al.
When the PCI controller OBP node lacks an interrupt-map
and interrupt-map-mask property, we need to form the
INO by hand. The PCI swizzle logic was not doing that
properly.
This was a regression added by the of_device code.
Signed-off-by: David S. Miller <davem@davemloft.net>
Linus Torvalds [Tue, 27 Feb 2007 15:39:04 +0000 (07:39 -0800)]
Merge branch 'upstream-linus' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6
* 'upstream-linus' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6: (52 commits)
netxen: do_rom_fast_write error handling
natsemi: Fix detection of vanilla natsemi cards
net: remove a collection of unneeded #undef REALLY_SLOW_IO stuff
chelsio: Fix non-NAPI compile
cxgb3 - Feed Rx free list with pages
cxgb3 - Recovery from HW starvation of response queue entries.
cxgb3 - Unmap offload packets when they are freed
cxgb3 - FW version update
cxgb3 - private ioctl cleanup
cxgb3 - manage sysfs attributes per port
S2IO: Restoring the mac address in s2io_reset
S2IO: Avoid printing the Enhanced statistics for Xframe I card.
S2IO: Making LED off during LINK_DOWN notification.
S2IO: Added a loadable parameter to enable or disable vlan stripping in frame.
S2IO: Optimized the delay to wait for command completion
S2IO: Fixes for MSI and MSIX
qla3xxx: Bumping driver version number
qla3xxx: Kernic Panic on pSeries under stress conditions
qla3xxx: bugfix tx reset after stress conditions.
qla3xxx: Check return code from pci_map_single() in ql_release_to_lrg_buf_free_list(), ql_populate_free_queue(), ql_alloc_large_buffers(), and ql3xxx_send()
...
The function do_rom_fast_read called in do_rom_fast_write can fail
and leave data1 unset. This causes a compile warning.
The correct thing is to propagate the error out.
Signed-off-by: Stephen Hemminger <shemminger@linux-foundation.org> Signed-off-by: Jeff Garzik <jeff@garzik.org>
Mark Brown [Sun, 25 Feb 2007 15:37:27 +0000 (15:37 +0000)]
natsemi: Fix detection of vanilla natsemi cards
Bob Tracy <rct@gherkin.frus.com> reported that the addition of support
for Aculab E1/T1 cPCI carrier cards broke detection of vanilla natsemi
cards. This patch fixes that: the problem is that the driver-specific
ta in the PCI device table is an index into a second table and this
had not been updated for the vanilla cards.
This patch fixes the problem minimally.
Signed-Off-By: Mark Brown <broonie@sirena.org.uk> Signed-off-by: Jeff Garzik <jeff@garzik.org>
Roland Dreier [Mon, 26 Feb 2007 22:58:49 +0000 (14:58 -0800)]
chelsio: Fix non-NAPI compile
Chelsio without NAPI enabled has been broken (won't compile) since 3de00b89 ("chelsio: NAPI speed improvement"):
drivers/net/chelsio/sge.c: In function `t1_interrupt`:
drivers/net/chelsio/sge.c:1716: error: `Q` undeclared (first use in this function)
The change below seems to add back in the declaration and
initialization of `Q` that was removed by mistake, and at least makes
the driver compile for me, although I have no hardware and hence no
way to test whether this actually works.
Signed-off-by: Roland Dreier <rolandd@cisco.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
Divy Le Ray [Sun, 25 Feb 2007 00:44:06 +0000 (16:44 -0800)]
cxgb3 - Unmap offload packets when they are freed
Offload packets may be DMAed long after their SGE Tx descriptors are done
so they must remain mapped until they are freed rather than until their
descriptors are freed. Unmap such packets through an skb destructor.
Signed-off-by: Divy Le Ray <divy@chelsio.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
- Restore in s2io_reset, the mac address assigned during s2io_open.
Earlier, it was getting overwritten to the factory default (read from the
eeprom) and subsequently dropping received frames.
- Fixed the typo in calling rtnl_unlock in s2io_set_link function.
Signed-off-by: Sivakumar Subramani <sivakumar.subramani@neterion.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
S2IO: Avoid printing the Enhanced statistics for Xframe I card.
- Enhanced Statistics are supported only for Xframe II (Herculas) card. Add
condition check such Enhanced statistics will included only in the case of
Xframe II card.
Signed-off-by: Sivakumar Subramani <sivakumar.subramani@neterion.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
S2IO: Added a loadable parameter to enable or disable vlan stripping in frame.
- Added code to not to strip vlan tag when driver is in promiscuous mode
- Added module loadable parameter 'vlan_tag_strip" through which user can
enable or disable vlan stripping irrespective of mode
( promiscuous or non-promiscuous ).
Signed-off-by: Sivakumar Subramani <sivakumar.subramani@neterion.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
S2IO: Optimized the delay to wait for command completion
- Optimized delay to wait for command completion so as to reduce the
initialization wait time.
- Disable differentiated services steering. By default RMAC is configured to
steer traffic with certain DS codes to other queues. Driver must initialize
the DS memory to 0 to make sure that DS steering will not be used by default.
Signed-off-by: Sivakumar Subramani <sivakumar.subramani@neterion.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
- Added debug statements to print a debug message if the MSI/MSI-X vector (or)
data is zero.
- This patch removes the code that will enable NAPI for the case of single
ring and MSI-X / MSI case. There are some issue in the enabling NAPI with
MSI/MSI-X. So we are turning off NAPI in the case of MSI/MSI-X.
Signed-off-by: Sivakumar Subramani <sivakumar.subramani@neterion.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
Benjamin Li [Mon, 26 Feb 2007 19:06:42 +0000 (11:06 -0800)]
qla3xxx: Kernic Panic on pSeries under stress conditions
To reproduce this panic consistently, we run an intensive network
application like 'netperf'. After waiting for a couple of seconds,
you will see a stack trace and a kernel panic where we are calling
pci_unmap_single() in ql_poll().
Changes:
1) Check the flags on the Response MAC IO Control block to check for
errors
2) Ensure that if we are on the 4022 we only use one segment
3) Before, we were reading the memory mapped producer index register
everytime we iterated in the loop when clearing the queue. We should
only be iterating to a known point, not as the producer index
is being updated.
Signed-off-by: Benjamin Li <benjamin.li@qlogic.com> Signed-off-by: Ron Mercer <ron.mercer@qlogic.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
Ron Mercer [Mon, 26 Feb 2007 19:06:41 +0000 (11:06 -0800)]
qla3xxx: bugfix tx reset after stress conditions.
To Reproduce the Problem:
To reproduce this panic consistently, we run an intensive network
application like 'netperf' and then switch to a different console.
After waiting for a couple of seconds, you will see a tx reset has occured.
Reason:
We enable interrupts even if we were not running.
Solution:
Now we will enable interrupts only after we are ready to give up the poll
routine.
Signed-off-by: Ron Mercer <ron.mercer@qlogic.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
Benjamin Li [Mon, 26 Feb 2007 19:06:40 +0000 (11:06 -0800)]
qla3xxx: Check return code from pci_map_single() in ql_release_to_lrg_buf_free_list(), ql_populate_free_queue(), ql_alloc_large_buffers(), and ql3xxx_send()
pci_map_single() could fail. We need to properly check the return
code from pci_map_single(). If we can not properly map this address,
then we should cleanup and return the proper return code.
Signed-off-by: Benjamin Li <benjamin.li@qlogic.com> Signed-off-by: Ron Mercer <ron.mercer@qlogic.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
Ron Mercer [Mon, 26 Feb 2007 19:06:36 +0000 (11:06 -0800)]
qla3xxx: Remove API to change MTU.
This network device driver shares the same hardware as the qla4xxx
iSCSI driver. Changing the MTU via the device interface will
cause qla4xxx to crash as there is no way to make notification.
Users wishing to change the MTU must do so using an iSCSI
utility such as Qlogic SanSurfer. This forces the user to
unload/reload this network device driver after the MTU
value has been changed in flash.
Signed-off-by: Ron Mercer <ron.mercer@qlogic.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
Benjamin Li [Mon, 26 Feb 2007 19:06:35 +0000 (11:06 -0800)]
qla3xxx: Fix deadlock issue on error paths
1) Fix deadlock issue when in QL_RESET_ACTIVE state and traversing
through the Link State Machine
2) Fix deadlock issue when ethtool would call ql_get_settings()
3) Fix deadlock issue when adaptor is ifup'ed but adaptor fails to initialize
Signed-off-by: Benjamin Li <benjamin.li@qlogic.com> Signed-off-by: Ron Mercer <ron.mercer@qlogic.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
Benjamin Li [Mon, 26 Feb 2007 19:06:32 +0000 (11:06 -0800)]
qla3xxx: Remove unnecessary memset() in qla3xxx_send()
We do not need to zero out the 64 byte MAC request I/O control block.
By zeroing out the control block and setting it to proper fields is
redundant work. This is because in the qla3xxx_send() function we will
already set the proper fields in this structure. The unused fields are
not looked at by the hardware and do not need to be zeroed out.
Signed-off-by: Benjamin Li <benjamin.li@qlogic.com> Signed-off-by: Ron Mercer <ron.mercer@qlogic.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
Benjamin Li [Mon, 26 Feb 2007 19:06:31 +0000 (11:06 -0800)]
qla3xxx: Return proper error codes when the 4022/4032 is being probed
The return code was not properly set when when allocating memory or mapping
memory failed. Depending on the stack, the return code would sometimes
return 0, which indicates everything was ok, when in fact there was an error.
This would cause trouble when the module was removed. Now, we will pass
back the proper return code when an error occurs during the PCI probe.
Signed-off-by: Benjamin Li <benjamin.li@qlogic.com> Signed-off-by: Ron Mercer <ron.mercer@qlogic.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
It looks like the skge driver inherited another bug from the sk98lin code.
If I send from 1000mbit port to a machine on 100mbit port, the switch should
be doing hardware flow control, but no pause frames show up in the statistics.
This is the analog of the recent sky2 fixes. The device needs to listen
for multicast pause frames and then not discard them.
Signed-off-by: Stephen Hemminger <shemminger@linux-foundation.org> Signed-off-by: Jeff Garzik <jeff@garzik.org>
Linas Vepstas [Tue, 20 Feb 2007 22:41:03 +0000 (16:41 -0600)]
spidernet: fix racy double-free of skb
It appears that under certain circumstances, a race will result
in a double-free of an skb. This patch null's out the skb pointer
upon the skb free, avoiding the inadvertent deref of bogus data.
The next patch fixes the actual race.
Linas Vepstas [Tue, 20 Feb 2007 22:40:06 +0000 (16:40 -0600)]
spidernet: separate hardware state from driver state.
This patch separates the hardware descriptor state from the
driver descriptor state, per (old) suggestion from Ben Herrenschmidt.
This compiles and boots and seems to work.
Ishizaki Kou [Tue, 20 Feb 2007 22:37:42 +0000 (16:37 -0600)]
spidernet: remove txram full logging
This patches removes logging for SPIDER_NET_GTMFLLINT interrupts.
Since the interrupts are not irregular, and they happen frequently
when using 100Mbps network switches.
Jens Osterkamp [Tue, 20 Feb 2007 22:30:50 +0000 (16:30 -0600)]
sungem_phy: support bcm5461 phy, autoneg.
This version moves the medium variable to the card specific structure and
changes the GMII_* to BCM54XX_* #defines.
This patch adds improved version of enable_fiber for both the 5421 and
the 5461 phy. It is now possible to specify with these wether you want
autonegotiation or not. This is needed for bladecenter switches where
some expect autonegotiation and some dont seem to like this at all.
Depending on this flag it sets phy->autoneg accordingly for the fiber mode.
More importantly it implements proper read_link and poll_link functions
for both phys which can handle both copper and fiber mode by determining
the medium first and then branching to the required functions. For fiber
they all work fine, for copper they are not tested but return the result
of the genmii_* function anyway which is supposed to work.
The patch moves the genmii_* functions around to avoid foreward declarations.
Ryusuke Konishi [Tue, 27 Feb 2007 05:13:02 +0000 (14:13 +0900)]
[AGPGART] fix compile errors
This fixes the following compile failures of agpgart drivers.
These errors were inserted by the recent AGPGART constification patch.
drivers/char/agp/uninorth-agp.c:492: error: expected '{' before 'const'
drivers/char/agp/uninorth-agp.c:517: error: expected '{' before 'const'
drivers/char/agp/uninorth-agp.c: In function 'agp_uninorth_probe':
drivers/char/agp/uninorth-agp.c:634: error: 'u3_agp_driver' undeclared (first use in this function)
drivers/char/agp/uninorth-agp.c:634: error: (Each undeclared identifier is reported only once
drivers/char/agp/uninorth-agp.c:634: error: for each function it appears in.)
drivers/char/agp/uninorth-agp.c:636: error: 'uninorth_agp_driver' undeclared (first use in this function)
Signed-off-by: Ryusuke Konishi <ryusuke@osrg.net> Signed-off-by: Dave Jones <davej@redhat.com>
Kyle McMartin [Tue, 27 Feb 2007 03:21:22 +0000 (22:21 -0500)]
[PARISC] clocksource: Move update_cr16_clocksource later in boot
smp_cpus_done is too early for us... before we even do a device
inventory! Move update_cr16_clocksource into the tail end of
processor_probe() and stub it out on CONFIG_SMP=n builds.
Verified that clocksource0 is properly updated to use jiffies
on an SMP build.
Atsushi Nemoto [Thu, 22 Feb 2007 15:39:48 +0000 (00:39 +0900)]
[MIPS] Kill redundant EXTRA_AFLAGS
Many Makefiles in arch/mips have EXTRA_AFLAGS := $(CFLAGS) line. This
is redundant while AFLAGS contains $(cflags-y) and any options only
listed in CFLAGS (not in cflags-y) should be unnecessary for asm
sources.
Linus Torvalds [Mon, 26 Feb 2007 22:55:48 +0000 (14:55 -0800)]
Revert "[CPUFREQ] constify cpufreq_driver where possible."
This reverts commit aeeddc1435c37fa3fc844f31d39c185b08de4158, which was
half-baked and broken. It just resulted in compile errors, since
cpufreq_register_driver() still changes the 'driver_data' by setting
bits in the flags field. So claiming it is 'const' _really_ doesn't
work.
Linus Torvalds [Mon, 26 Feb 2007 21:18:43 +0000 (13:18 -0800)]
Merge branch 'for-linus' of master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband
* 'for-linus' of master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband:
IPoIB: Correct debugging output when path record lookup fails
RDMA/cxgb3: Stop the EP Timer on BAD CLOSE
RDMA/cxgb3: cleanups
RDMA/cma: Remove unused node_guid from cma_device structure
IB/cm: Remove ca_guid from cm_device structure
RDMA/cma: Request reversible paths only
IB/core: Set hop limit in ib_init_ah_from_wc correctly
IB/uverbs: Return correct error for invalid PD in register MR
IPoIB: Remove unused local_rate tracking
IPoIB/cm: Improve small message bandwidth
IB/mthca: Make 2 functions static
Alan [Wed, 21 Feb 2007 16:41:23 +0000 (16:41 +0000)]
[PATCH] Fix oops in pata_pcmcia
The change to the devres layer re-orders the execution of cleanup
functions and in turn causes the pcmcia layer to oops as it zaps a
pointer now needed later on. We simply leave the pointer alone.
Signed-off-by: Alan Cox <alan@redhat.com> Acked-by: Jeff Garzik <jeff@garzik.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Roland Dreier [Mon, 26 Feb 2007 20:57:08 +0000 (12:57 -0800)]
IPoIB: Correct debugging output when path record lookup fails
If path_rec_completion() is passed a non-NULL path record pointer
along with an unsuccessful status value, the tracing code incorrectly
prints the (invalid) DLID from the path record rather than the more
interesting status code. The actual logic of the function correctly
uses the path record only if the status indicates a successful lookup.
Ondrej Zajicek [Thu, 22 Feb 2007 16:00:41 +0000 (17:00 +0100)]
[PATCH] Fix build-failure in drivers/video/s3fb.c
Toralf Förster pointed out that drivers/video/s3fb.c would fail to compile:
> ...
> CC drivers/video/s3fb.o
> drivers/video/s3fb.c: In function `s3_pci_remove':
> drivers/video/s3fb.c:1003: warning: unused variable `par'
> drivers/video/s3fb.c: In function `s3fb_setup':
> drivers/video/s3fb.c:1141: error: `mtrr' undeclared (first use in this function)
> drivers/video/s3fb.c:1141: error: (Each undeclared identifier is reported only once
> drivers/video/s3fb.c:1141: error: for each function it appears in.)
> make[2]: *** [drivers/video/s3fb.o] Error 1
> make[1]: *** [drivers/video] Error 2
> make: *** [drivers] Error 2
Ingo Molnar [Thu, 22 Feb 2007 08:38:22 +0000 (09:38 +0100)]
[PATCH] x86: add -freg-struct-return to CFLAGS
Jeremy Fitzhardinge suggested the use of -freg-struct-return, which does
structure-returns (such as when using pte_t) in registers instead of on
the stack.
that is indeed so, and this option reduced the kernel size a bit:
* master.kernel.org:/pub/scm/linux/kernel/git/kyle/parisc-2.6: (78 commits)
[PARISC] Use symbolic last syscall in __NR_Linux_syscalls
[PARISC] Add missing statfs64 and fstatfs64 syscalls
Revert "[PARISC] Optimize TLB flush on SMP systems"
[PARISC] Compat signal fixes for 64-bit parisc
[PARISC] Reorder syscalls to match unistd.h
Revert "[PATCH] make kernel/signal.c:kill_proc_info() static"
[PARISC] fix sys_rt_sigqueueinfo
[PARISC] fix section mismatch warnings in harmony sound driver
[PARISC] do not export get_register/set_register
[PARISC] add ENTRY()/ENDPROC() and simplify assembly of HP/UX emulation code
[PARISC] convert to use CONFIG_64BIT instead of __LP64__
[PARISC] use CONFIG_64BIT instead of __LP64__
[PARISC] add ASM_EXCEPTIONTABLE_ENTRY() macro
[PARISC] more ENTRY(), ENDPROC(), END() conversions
[PARISC] fix ENTRY() and ENDPROC() for 64bit-parisc
[PARISC] Fixes /proc/cpuinfo cache output on B160L
[PARISC] implement standard ENTRY(), END() and ENDPROC()
[PARISC] kill ENTRY_SYS_CPUS
[PARISC] clean up debugging printks in smp.c
[PARISC] factor syscall_restart code out of do_signal
...
Fix conflict in include/linux/sched.h due to kill_proc_info() being made
publicly available to PARISC again.