[PATCH] HID: corsair: Add support for the GLAIVE RGB gaming mouse

2018-02-10 Thread Guus Sliepen
This mouse sold by Corsair as the GLAIVE RGB gaming mouse has the same
problem with its HID reports as the Scimitar PRO RGB, so reuse the
same fix for the GLAIVE RGB.

Signed-off-by: Guus Sliepen <g...@sliepen.org>
---
 drivers/hid/hid-corsair.c | 16 ++--
 drivers/hid/hid-ids.h |  1 +
 drivers/hid/hid-quirks.c  |  2 ++
 3 files changed, 13 insertions(+), 6 deletions(-)

diff --git a/drivers/hid/hid-corsair.c b/drivers/hid/hid-corsair.c
index 9ba5d98a1..6c9c8fe1b 100644
--- a/drivers/hid/hid-corsair.c
+++ b/drivers/hid/hid-corsair.c
@@ -673,7 +673,7 @@ static int corsair_input_mapping(struct hid_device *dev,
 }
 
 /*
- * The report descriptor of Corsair Scimitar RGB Pro gaming mouse is
+ * The report descriptor of some of the Corsair gaming mice is
  * non parseable as they define two consecutive Logical Minimum for
  * the Usage Page (Consumer) in rdescs bytes 75 and 77 being 77 0x16
  * that should be obviousy 0x26 for Logical Magimum of 16 bits. This
@@ -681,7 +681,8 @@ static int corsair_input_mapping(struct hid_device *dev,
  * Minimum being larger than Logical Maximum.
  *
  * This driver fixes the report descriptor for:
- * - USB ID b1c:1b3e, sold as Scimitar RGB Pro Gaming mouse
+ * - USB ID 1b1c:1b34, sold as GLAIVE RGB Gaming mouse
+ * - USB ID 1b1c:1b3e, sold as Scimitar RGB Pro Gaming mouse
  */
 
 static __u8 *corsair_mouse_report_fixup(struct hid_device *hdev, __u8 *rdesc,
@@ -691,13 +692,14 @@ static __u8 *corsair_mouse_report_fixup(struct hid_device 
*hdev, __u8 *rdesc,
 
if (intf->cur_altsetting->desc.bInterfaceNumber == 1) {
/*
-* Corsair Scimitar RGB Pro report descriptor is broken and
-* defines two different Logical Minimum for the Consumer
-* Application. The byte 77 should be a 0x26 defining a 16
-* bits integer for the Logical Maximum but it is a 0x16
+* Corsair GLAIVE RGB and Scimitar RGB Pro report descriptor is
+* broken and defines two different Logical Minimum for the
+* Consumer Application. The byte 77 should be a 0x26 defining
+* a 16 bits integer for the Logical Maximum but it is a 0x16
 * instead (Logical Minimum)
 */
switch (hdev->product) {
+   case USB_DEVICE_ID_CORSAIR_GLAIVE_RGB:
case USB_DEVICE_ID_CORSAIR_SCIMITAR_PRO_RGB:
if (*rsize >= 172 && rdesc[75] == 0x15 && rdesc[77] == 
0x16
&& rdesc[78] == 0xff && rdesc[79] == 0x0f) {
@@ -715,6 +717,8 @@ static const struct hid_device_id corsair_devices[] = {
{ HID_USB_DEVICE(USB_VENDOR_ID_CORSAIR, USB_DEVICE_ID_CORSAIR_K90),
.driver_data = CORSAIR_USE_K90_MACRO |
   CORSAIR_USE_K90_BACKLIGHT },
+   { HID_USB_DEVICE(USB_VENDOR_ID_CORSAIR,
+USB_DEVICE_ID_CORSAIR_GLAIVE_RGB) },
{ HID_USB_DEVICE(USB_VENDOR_ID_CORSAIR,
 USB_DEVICE_ID_CORSAIR_SCIMITAR_PRO_RGB) },
{}
diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h
index 43ddcdfbd..a099e5194 100644
--- a/drivers/hid/hid-ids.h
+++ b/drivers/hid/hid-ids.h
@@ -291,6 +291,7 @@
 #define USB_DEVICE_ID_CORSAIR_K70RGB0x1b13
 #define USB_DEVICE_ID_CORSAIR_STRAFE0x1b15
 #define USB_DEVICE_ID_CORSAIR_K65RGB0x1b17
+#define USB_DEVICE_ID_CORSAIR_GLAIVE_RGB0x1b34
 #define USB_DEVICE_ID_CORSAIR_K70RGB_RAPIDFIRE  0x1b38
 #define USB_DEVICE_ID_CORSAIR_K65RGB_RAPIDFIRE  0x1b39
 #define USB_DEVICE_ID_CORSAIR_SCIMITAR_PRO_RGB  0x1b3e
diff --git a/drivers/hid/hid-quirks.c b/drivers/hid/hid-quirks.c
index 5f6035a5c..7203eba3c 100644
--- a/drivers/hid/hid-quirks.c
+++ b/drivers/hid/hid-quirks.c
@@ -62,6 +62,7 @@ static const struct hid_device_id hid_quirks[] = {
{ HID_USB_DEVICE(USB_VENDOR_ID_CORSAIR, USB_DEVICE_ID_CORSAIR_K70R), 
HID_QUIRK_NO_INIT_REPORTS },
{ HID_USB_DEVICE(USB_VENDOR_ID_CORSAIR, USB_DEVICE_ID_CORSAIR_K95RGB), 
HID_QUIRK_NO_INIT_REPORTS | HID_QUIRK_ALWAYS_POLL },
{ HID_USB_DEVICE(USB_VENDOR_ID_CORSAIR, USB_DEVICE_ID_CORSAIR_M65RGB), 
HID_QUIRK_NO_INIT_REPORTS },
+   { HID_USB_DEVICE(USB_VENDOR_ID_CORSAIR, 
USB_DEVICE_ID_CORSAIR_GLAIVE_RGB), HID_QUIRK_NO_INIT_REPORTS | 
HID_QUIRK_ALWAYS_POLL },
{ HID_USB_DEVICE(USB_VENDOR_ID_CORSAIR, 
USB_DEVICE_ID_CORSAIR_SCIMITAR_PRO_RGB), HID_QUIRK_NO_INIT_REPORTS | 
HID_QUIRK_ALWAYS_POLL },
{ HID_USB_DEVICE(USB_VENDOR_ID_CORSAIR, USB_DEVICE_ID_CORSAIR_STRAFE), 
HID_QUIRK_NO_INIT_REPORTS | HID_QUIRK_ALWAYS_POLL },
{ HID_USB_DEVICE(USB_VENDOR_ID_CREATIVELABS, 
USB_DEVICE_ID_CREATIVE_SB_OMNI_SURROUND_51), HID_QUIRK_NOGET },
@@ -317,6 +318,7 @@ static const struct hid_device_id hid_have_special_driver[] 
= {
 #endif
 #if IS_ENABLED(CONFIG_HID_CORSAIR)
{ HID_USB_DEVICE(USB_VENDOR_ID_CORSAIR, USB_DEVICE_ID_CORSAIR_K90)

[PATCH] HID: corsair: Add support for the GLAIVE RGB gaming mouse

2018-02-10 Thread Guus Sliepen
This mouse sold by Corsair as the GLAIVE RGB gaming mouse has the same
problem with its HID reports as the Scimitar PRO RGB, so reuse the
same fix for the GLAIVE RGB.

Signed-off-by: Guus Sliepen 
---
 drivers/hid/hid-corsair.c | 16 ++--
 drivers/hid/hid-ids.h |  1 +
 drivers/hid/hid-quirks.c  |  2 ++
 3 files changed, 13 insertions(+), 6 deletions(-)

diff --git a/drivers/hid/hid-corsair.c b/drivers/hid/hid-corsair.c
index 9ba5d98a1..6c9c8fe1b 100644
--- a/drivers/hid/hid-corsair.c
+++ b/drivers/hid/hid-corsair.c
@@ -673,7 +673,7 @@ static int corsair_input_mapping(struct hid_device *dev,
 }
 
 /*
- * The report descriptor of Corsair Scimitar RGB Pro gaming mouse is
+ * The report descriptor of some of the Corsair gaming mice is
  * non parseable as they define two consecutive Logical Minimum for
  * the Usage Page (Consumer) in rdescs bytes 75 and 77 being 77 0x16
  * that should be obviousy 0x26 for Logical Magimum of 16 bits. This
@@ -681,7 +681,8 @@ static int corsair_input_mapping(struct hid_device *dev,
  * Minimum being larger than Logical Maximum.
  *
  * This driver fixes the report descriptor for:
- * - USB ID b1c:1b3e, sold as Scimitar RGB Pro Gaming mouse
+ * - USB ID 1b1c:1b34, sold as GLAIVE RGB Gaming mouse
+ * - USB ID 1b1c:1b3e, sold as Scimitar RGB Pro Gaming mouse
  */
 
 static __u8 *corsair_mouse_report_fixup(struct hid_device *hdev, __u8 *rdesc,
@@ -691,13 +692,14 @@ static __u8 *corsair_mouse_report_fixup(struct hid_device 
*hdev, __u8 *rdesc,
 
if (intf->cur_altsetting->desc.bInterfaceNumber == 1) {
/*
-* Corsair Scimitar RGB Pro report descriptor is broken and
-* defines two different Logical Minimum for the Consumer
-* Application. The byte 77 should be a 0x26 defining a 16
-* bits integer for the Logical Maximum but it is a 0x16
+* Corsair GLAIVE RGB and Scimitar RGB Pro report descriptor is
+* broken and defines two different Logical Minimum for the
+* Consumer Application. The byte 77 should be a 0x26 defining
+* a 16 bits integer for the Logical Maximum but it is a 0x16
 * instead (Logical Minimum)
 */
switch (hdev->product) {
+   case USB_DEVICE_ID_CORSAIR_GLAIVE_RGB:
case USB_DEVICE_ID_CORSAIR_SCIMITAR_PRO_RGB:
if (*rsize >= 172 && rdesc[75] == 0x15 && rdesc[77] == 
0x16
&& rdesc[78] == 0xff && rdesc[79] == 0x0f) {
@@ -715,6 +717,8 @@ static const struct hid_device_id corsair_devices[] = {
{ HID_USB_DEVICE(USB_VENDOR_ID_CORSAIR, USB_DEVICE_ID_CORSAIR_K90),
.driver_data = CORSAIR_USE_K90_MACRO |
   CORSAIR_USE_K90_BACKLIGHT },
+   { HID_USB_DEVICE(USB_VENDOR_ID_CORSAIR,
+USB_DEVICE_ID_CORSAIR_GLAIVE_RGB) },
{ HID_USB_DEVICE(USB_VENDOR_ID_CORSAIR,
 USB_DEVICE_ID_CORSAIR_SCIMITAR_PRO_RGB) },
{}
diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h
index 43ddcdfbd..a099e5194 100644
--- a/drivers/hid/hid-ids.h
+++ b/drivers/hid/hid-ids.h
@@ -291,6 +291,7 @@
 #define USB_DEVICE_ID_CORSAIR_K70RGB0x1b13
 #define USB_DEVICE_ID_CORSAIR_STRAFE0x1b15
 #define USB_DEVICE_ID_CORSAIR_K65RGB0x1b17
+#define USB_DEVICE_ID_CORSAIR_GLAIVE_RGB0x1b34
 #define USB_DEVICE_ID_CORSAIR_K70RGB_RAPIDFIRE  0x1b38
 #define USB_DEVICE_ID_CORSAIR_K65RGB_RAPIDFIRE  0x1b39
 #define USB_DEVICE_ID_CORSAIR_SCIMITAR_PRO_RGB  0x1b3e
diff --git a/drivers/hid/hid-quirks.c b/drivers/hid/hid-quirks.c
index 5f6035a5c..7203eba3c 100644
--- a/drivers/hid/hid-quirks.c
+++ b/drivers/hid/hid-quirks.c
@@ -62,6 +62,7 @@ static const struct hid_device_id hid_quirks[] = {
{ HID_USB_DEVICE(USB_VENDOR_ID_CORSAIR, USB_DEVICE_ID_CORSAIR_K70R), 
HID_QUIRK_NO_INIT_REPORTS },
{ HID_USB_DEVICE(USB_VENDOR_ID_CORSAIR, USB_DEVICE_ID_CORSAIR_K95RGB), 
HID_QUIRK_NO_INIT_REPORTS | HID_QUIRK_ALWAYS_POLL },
{ HID_USB_DEVICE(USB_VENDOR_ID_CORSAIR, USB_DEVICE_ID_CORSAIR_M65RGB), 
HID_QUIRK_NO_INIT_REPORTS },
+   { HID_USB_DEVICE(USB_VENDOR_ID_CORSAIR, 
USB_DEVICE_ID_CORSAIR_GLAIVE_RGB), HID_QUIRK_NO_INIT_REPORTS | 
HID_QUIRK_ALWAYS_POLL },
{ HID_USB_DEVICE(USB_VENDOR_ID_CORSAIR, 
USB_DEVICE_ID_CORSAIR_SCIMITAR_PRO_RGB), HID_QUIRK_NO_INIT_REPORTS | 
HID_QUIRK_ALWAYS_POLL },
{ HID_USB_DEVICE(USB_VENDOR_ID_CORSAIR, USB_DEVICE_ID_CORSAIR_STRAFE), 
HID_QUIRK_NO_INIT_REPORTS | HID_QUIRK_ALWAYS_POLL },
{ HID_USB_DEVICE(USB_VENDOR_ID_CREATIVELABS, 
USB_DEVICE_ID_CREATIVE_SB_OMNI_SURROUND_51), HID_QUIRK_NOGET },
@@ -317,6 +318,7 @@ static const struct hid_device_id hid_have_special_driver[] 
= {
 #endif
 #if IS_ENABLED(CONFIG_HID_CORSAIR)
{ HID_USB_DEVICE(USB_VENDOR_ID_CORSAIR, USB_DEVICE_ID_CORSAIR_K90) },
+   { HID_USB_DEVICE(USB_VENDOR_I

Looking for ifenslave.c

2001-06-13 Thread Guus Sliepen

Hello,

The Ethernet bonding module is useless without ifenslave.c. I'm making a Debian
package for it, and I have tried to find the "offical" distribution of this
small program. I could not find an authorative source, instead a lot of copies
and patched versions are scattered around the Internet (I maintain a patched
version myself too).

I would like to combine all the useful extra features and patches into this
Debian package, so if you know of a patched version or maintain one yourself,
please send it to me.

Thanks,

-- 
Met vriendelijke groet / with kind regards,
  Guus Sliepen <[EMAIL PROTECTED]>
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/



Looking for ifenslave.c

2001-06-13 Thread Guus Sliepen

Hello,

The Ethernet bonding module is useless without ifenslave.c. I'm making a Debian
package for it, and I have tried to find the offical distribution of this
small program. I could not find an authorative source, instead a lot of copies
and patched versions are scattered around the Internet (I maintain a patched
version myself too).

I would like to combine all the useful extra features and patches into this
Debian package, so if you know of a patched version or maintain one yourself,
please send it to me.

Thanks,

-- 
Met vriendelijke groet / with kind regards,
  Guus Sliepen [EMAIL PROTECTED]
-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/



Sound sequencer (at least with a GUS card) doesn't honor HZ value

2001-05-18 Thread Guus Sliepen

Hello,

I've recently started compiling i386 kernels with HZ (and also CLOCKS_PER_SEC)
set to 1024 instead of 100 for various reasons. All works perfectly, except
when I play mod files with s3mod on my Gravis UltraSound card. The modules are
played 10 times too fast:

[guus@haplo]~>time s3mod /usr/lib/bb/bb.s3m
[...]
98 0 Length  :4min 47sec
GUS (ALPHA support) Playing "/usr/lib/bb/bb.s3m"
Using 498690 of 524254 bytes of GUS RAM
0.814u 0.833s 0:29.95 5.4%  0+0k 0+0io 123pf+0w

Kernel version is plain 2.4.4. I've gone through the s3mod sources and did a
strace on it, but s3mod itself doesn't handle the timing, it only write()'s
stuff to /dev/sequencer, nothing else. This makes me strongly believe the
soundcard/sequencer driver itself is wrong here. A quick grep for 100, HZ and
CLOCKS didn't yield any useful information, so I guess it's not a trivial
problem...

P.S.: The change of HZ and CLOCKS_PER_SEC to 1024 is the only change I made.

-- 
Met vriendelijke groet / with kind regards,
  Guus Sliepen <[EMAIL PROTECTED]>

 PGP signature


Sound sequencer (at least with a GUS card) doesn't honor HZ value

2001-05-18 Thread Guus Sliepen

Hello,

I've recently started compiling i386 kernels with HZ (and also CLOCKS_PER_SEC)
set to 1024 instead of 100 for various reasons. All works perfectly, except
when I play mod files with s3mod on my Gravis UltraSound card. The modules are
played 10 times too fast:

[guus@haplo]~time s3mod /usr/lib/bb/bb.s3m
[...]
98 0 Length  :4min 47sec
GUS (ALPHA support) Playing /usr/lib/bb/bb.s3m
Using 498690 of 524254 bytes of GUS RAM
0.814u 0.833s 0:29.95 5.4%  0+0k 0+0io 123pf+0w

Kernel version is plain 2.4.4. I've gone through the s3mod sources and did a
strace on it, but s3mod itself doesn't handle the timing, it only write()'s
stuff to /dev/sequencer, nothing else. This makes me strongly believe the
soundcard/sequencer driver itself is wrong here. A quick grep for 100, HZ and
CLOCKS didn't yield any useful information, so I guess it's not a trivial
problem...

P.S.: The change of HZ and CLOCKS_PER_SEC to 1024 is the only change I made.

-- 
Met vriendelijke groet / with kind regards,
  Guus Sliepen [EMAIL PROTECTED]

 PGP signature


Re: #define HZ 1024 -- negative effects?

2001-04-28 Thread Guus Sliepen

On Wed, Apr 25, 2001 at 10:02:26PM -0400, Dan Maas wrote:

> > Are there any negative effects of editing include/asm/param.h to change
> > HZ from 100 to 1024? Or any other number? This has been suggested as a
> > way to improve the responsiveness of the GUI on a Linux system.
[...]
> Of course, the appearance of better interactivity could just be a placebo
> effect. Double-blind trials, anyone? =)

I tried HZ=1024 on my i386 kernel, to check two things. One was a timer
routine. The performance of the timer routine depends heavily on the
granularity of the nanosleep() or select() system call. Since those calls
always block at least 1/HZ seconds, the timer precision indeed increased by a
factor 10 when I changed the HZ value from 100 to 1024.

However, another thing I wanted to do was to generate profiling statistics for
freesci. Profiling is done with 1/HZ granularity. Any subroutine in a program
executed in less than 1/HZ cannot be profiled correctly (for example a routine
that executes in 1 nanosecond and one that needs 1/HZ/2 seconds both show up
as taking 1 sample).

Now, you would think that profiling would be a lot better with HZ=1024.
However, the program didn't even run anymore! The reason is that some system
calls are being interupted by SIGPROF every 1/HZ, and return something like
ERESTARTSYS to the libraries. The libraries then try to restart the system
call but a SIGPROF is bound to follow shortly, again interrupting the system
call, and so on...

---
Met vriendelijke groet / with kind regards,
  Guus Sliepen <[EMAIL PROTECTED]>
---
See also: http://tinc.nl.linux.org/
  http://www.kernelbench.org/
---

 PGP signature


Re: [Fwd: [Fwd: Is sendfile all that sexy? (fwd)]]

2001-01-20 Thread Guus Sliepen

On Sat, Jan 20, 2001 at 10:39:36PM +0300, Alexey Kuznetsov wrote:

> Yes. It is cost, which we have to pay. Look into Minshall's draft,
> by the way (draft-minshall-nagle-*), it discusses pros and contras.

What kind of draft is that? I can't find it on the IETF site. Could you
provide me with a link?

---
Met vriendelijke groet / with kind regards,
  Guus Sliepen <[EMAIL PROTECTED]>
---
See also: http://tinc.nl.linux.org/
  http://www.kernelbench.org/
---

 PGP signature


Re: [Fwd: [Fwd: Is sendfile all that sexy? (fwd)]]

2001-01-20 Thread Guus Sliepen

On Sat, Jan 20, 2001 at 10:39:36PM +0300, Alexey Kuznetsov wrote:

 Yes. It is cost, which we have to pay. Look into Minshall's draft,
 by the way (draft-minshall-nagle-*), it discusses pros and contras.

What kind of draft is that? I can't find it on the IETF site. Could you
provide me with a link?

---
Met vriendelijke groet / with kind regards,
  Guus Sliepen [EMAIL PROTECTED]
---
See also: http://tinc.nl.linux.org/
  http://www.kernelbench.org/
---

 PGP signature


Re: (iptables) ip_conntrack bug?

2000-11-15 Thread Guus Sliepen

On Wed, Nov 15, 2000 at 04:34:50PM -0500, safemode wrote:

> On Wed, 15 Nov 2000 16:19:23 Guus Sliepen wrote:
> > On Wed, Nov 15, 2000 at 03:46:03PM -0500, safemode wrote:
> > 
> > > I was DDoS'd today while away and came home to find the firewall unable
> > to
> > > do anything network related (although my connection to irc was still
> > > working oddly).  a quick dmesg showed the problem.
> > > ip_conntrack: maximum limit of 2048 entries exceeded
> > [...]
> > 
> > I have also seen this happen on a box which ran test9. Apparently because
> > of
> > it's long uptime, because the logs should no signs of an attack.

safemode and I discussed this and we tried to find an answer in the kernel
source. However, the chain of called functions is too long to determine where
exactly the problem is. But most likely, because init_conntrack() can fail
(because it cannot free an entry, which is either because netfilter does not
dare to throw out entries with large timeouts (tcp connections have ridiculous
long timeouts btw, almost 2.3 days?!) or because IPS_CONFIRMED is not set), and
this failure is propagating back all the way to the tcp code, so that no new
sockets can be opened.

From our point of view, the conntrack stuff should be totally transparent to the
tcp/ip stack. Since this allows for a DoS attack, might be wise to fix this
before 2.4 comes out...

-------
Met vriendelijke groet / with kind regards,
  Guus Sliepen <[EMAIL PROTECTED]>
---
See also: http://tinc.nl.linux.org/
  http://www.kernelbench.org/
---

 PGP signature


Re: (iptables) ip_conntrack bug?

2000-11-15 Thread Guus Sliepen

On Wed, Nov 15, 2000 at 03:46:03PM -0500, safemode wrote:

> I was DDoS'd today while away and came home to find the firewall unable to
> do anything network related (although my connection to irc was still
> working oddly).  a quick dmesg showed the problem.
> ip_conntrack: maximum limit of 2048 entries exceeded
[...]

I have also seen this happen on a box which ran test9. Apparently because of
it's long uptime, because the logs should no signs of an attack.

I guess conntrack forgets to flush some entries? Or maybe there is no way it can
recover from a full conntrack table? Is it maybe necessary to make the maximum
size a configurable option? Or a userspace conntrack daemon like the arpd?

I also see a lot of messages like this (on all 2.4 test kernels):

NAT: 0 dropping untracked packet c00643f0 1 131.211.122.89 -> 224.0.0.2
NAT: 0 dropping untracked packet c05468e0 1 131.211.122.89 -> 224.0.0.2
NAT: 0 dropping untracked packet c0064760 1 131.211.122.31 -> 224.0.0.2

Turning of multicast on the respective network interface does not stop these
messages, but anyway they seem rather annoying to me :)

---
Met vriendelijke groet / with kind regards,
  Guus Sliepen <[EMAIL PROTECTED]>
---
See also: http://tinc.nl.linux.org/
  http://www.kernelbench.org/
---

 PGP signature


Re: (iptables) ip_conntrack bug?

2000-11-15 Thread Guus Sliepen

On Wed, Nov 15, 2000 at 03:46:03PM -0500, safemode wrote:

 I was DDoS'd today while away and came home to find the firewall unable to
 do anything network related (although my connection to irc was still
 working oddly).  a quick dmesg showed the problem.
 ip_conntrack: maximum limit of 2048 entries exceeded
[...]

I have also seen this happen on a box which ran test9. Apparently because of
it's long uptime, because the logs should no signs of an attack.

I guess conntrack forgets to flush some entries? Or maybe there is no way it can
recover from a full conntrack table? Is it maybe necessary to make the maximum
size a configurable option? Or a userspace conntrack daemon like the arpd?

I also see a lot of messages like this (on all 2.4 test kernels):

NAT: 0 dropping untracked packet c00643f0 1 131.211.122.89 - 224.0.0.2
NAT: 0 dropping untracked packet c05468e0 1 131.211.122.89 - 224.0.0.2
NAT: 0 dropping untracked packet c0064760 1 131.211.122.31 - 224.0.0.2

Turning of multicast on the respective network interface does not stop these
messages, but anyway they seem rather annoying to me :)

---
Met vriendelijke groet / with kind regards,
  Guus Sliepen [EMAIL PROTECTED]
---
See also: http://tinc.nl.linux.org/
  http://www.kernelbench.org/
---

 PGP signature


Re: (iptables) ip_conntrack bug?

2000-11-15 Thread Guus Sliepen

On Wed, Nov 15, 2000 at 04:34:50PM -0500, safemode wrote:

 On Wed, 15 Nov 2000 16:19:23 Guus Sliepen wrote:
  On Wed, Nov 15, 2000 at 03:46:03PM -0500, safemode wrote:
  
   I was DDoS'd today while away and came home to find the firewall unable
  to
   do anything network related (although my connection to irc was still
   working oddly).  a quick dmesg showed the problem.
   ip_conntrack: maximum limit of 2048 entries exceeded
  [...]
  
  I have also seen this happen on a box which ran test9. Apparently because
  of
  it's long uptime, because the logs should no signs of an attack.

safemode and I discussed this and we tried to find an answer in the kernel
source. However, the chain of called functions is too long to determine where
exactly the problem is. But most likely, because init_conntrack() can fail
(because it cannot free an entry, which is either because netfilter does not
dare to throw out entries with large timeouts (tcp connections have ridiculous
long timeouts btw, almost 2.3 days?!) or because IPS_CONFIRMED is not set), and
this failure is propagating back all the way to the tcp code, so that no new
sockets can be opened.

From our point of view, the conntrack stuff should be totally transparent to the
tcp/ip stack. Since this allows for a DoS attack, might be wise to fix this
before 2.4 comes out...

---
Met vriendelijke groet / with kind regards,
  Guus Sliepen [EMAIL PROTECTED]
---
See also: http://tinc.nl.linux.org/
  http://www.kernelbench.org/
---

 PGP signature


Oops with >= 2.4.0-test7 when modprobing gus module

2000-09-09 Thread Guus Sliepen

Hello,

Whenever I modprobe the gus module the kernel gives an oops:

Gravis Ultrasound audio driver Copyright (C) by Hannu Savolainen 1993-1996
 at 0x240 irq 3 dma 1,5
Unable to handle kernel NULL pointer dereference at virtual address


The module is loaded after that, and the soundcard is functioning as it
should. However, the refcount of the module is all wrong and it can't be
removed anymore. The full oops (processed by ksymoops) is attached.

---
Met vriendelijke groet / with kind regards,
  Guus Sliepen <[EMAIL PROTECTED]>
---
See also: http://tinc.nl.linux.org/
  http://www.kernelbench.org/
---


ksymoops 2.3.4 on i586 2.4.0-test8.  Options used
 -V (default)
 -k /proc/ksyms (default)
 -l /proc/modules (default)
 -o /lib/modules/2.4.0-test8/ (default)
 -m /System.map (specified)

Unable to handle kernel NULL pointer dereference at virtual address 
c486321b
*pde = 
Oops: 
CPU:0
EIP:0010:[]
Using defaults from ksymoops -t elf32-i386 -a i386
EFLAGS: 00010212
eax:    ebx: c37c64a0   ecx: c486f8b8   edx: 0040
esi: c11f14a0   edi: c36a1240   ebp: c379fee0   esp: c360df4c
ds: 0018   es: 0018   ss: 0018
Process aumix (pid: 95, stackpage=c360d000)
Stack: c012acd8 c36a1240 c37c64a0 c37c64a0  c3688060 0001 c012ae82 
   c37c64a0 c0129ec1 c37c64a0 c3688060 0009  c0117268 c37c64a0 
   c3688060 c11db6c0 c360c000  bd5c c3688180 c01177ea c3688060 
Call Trace: [] [] [] [] [] 
[] [] 
Code: 8b 00 85 c0 74 4d ff 48 10 8b 04 0a 8b 00 80 48 14 08 eb 3f 

>>EIP; c486321b <[sound]sound_release+2b/84>   <=
Trace; c012acd8 <_fput+2c/c0>
Trace; c012ae82 
Trace; c0129ec1 
Trace; c0117268 
Trace; c01177ea 
Trace; c0117e76 
Trace; c0108d63 
Code;  c486321b <[sound]sound_release+2b/84>
 <_EIP>:
Code;  c486321b <[sound]sound_release+2b/84>   <=
   0:   8b 00 mov(%eax),%eax   <=
Code;  c486321d <[sound]sound_release+2d/84>
   2:   85 c0 test   %eax,%eax
Code;  c486321f <[sound]sound_release+2f/84>
   4:   74 4d je 53 <_EIP+0x53> c486326e 
<[sound]sound_release+7e/84>
Code;  c4863221 <[sound]sound_release+31/84>
   6:   ff 48 10  decl   0x10(%eax)
Code;  c4863224 <[sound]sound_release+34/84>
   9:   8b 04 0a  mov(%edx,%ecx,1),%eax
Code;  c4863227 <[sound]sound_release+37/84>
   c:   8b 00 mov(%eax),%eax
Code;  c4863229 <[sound]sound_release+39/84>
   e:   80 48 14 08   orb$0x8,0x14(%eax)
Code;  c486322d <[sound]sound_release+3d/84>
  12:   eb 3f jmp53 <_EIP+0x53> c486326e 
<[sound]sound_release+7e/84>



Oops with = 2.4.0-test7 when modprobing gus module

2000-09-09 Thread Guus Sliepen

Hello,

Whenever I modprobe the gus module the kernel gives an oops:

Gravis Ultrasound audio driver Copyright (C) by Hannu Savolainen 1993-1996
Gravis UltraSound 3.7 (512k) at 0x240 irq 3 dma 1,5
Unable to handle kernel NULL pointer dereference at virtual address


The module is loaded after that, and the soundcard is functioning as it
should. However, the refcount of the module is all wrong and it can't be
removed anymore. The full oops (processed by ksymoops) is attached.

---
Met vriendelijke groet / with kind regards,
  Guus Sliepen [EMAIL PROTECTED]
---
See also: http://tinc.nl.linux.org/
  http://www.kernelbench.org/
---


ksymoops 2.3.4 on i586 2.4.0-test8.  Options used
 -V (default)
 -k /proc/ksyms (default)
 -l /proc/modules (default)
 -o /lib/modules/2.4.0-test8/ (default)
 -m /System.map (specified)

Unable to handle kernel NULL pointer dereference at virtual address 
c486321b
*pde = 
Oops: 
CPU:0
EIP:0010:[c486321b]
Using defaults from ksymoops -t elf32-i386 -a i386
EFLAGS: 00010212
eax:    ebx: c37c64a0   ecx: c486f8b8   edx: 0040
esi: c11f14a0   edi: c36a1240   ebp: c379fee0   esp: c360df4c
ds: 0018   es: 0018   ss: 0018
Process aumix (pid: 95, stackpage=c360d000)
Stack: c012acd8 c36a1240 c37c64a0 c37c64a0  c3688060 0001 c012ae82 
   c37c64a0 c0129ec1 c37c64a0 c3688060 0009  c0117268 c37c64a0 
   c3688060 c11db6c0 c360c000  bd5c c3688180 c01177ea c3688060 
Call Trace: [c012acd8] [c012ae82] [c0129ec1] [c0117268] [c01177ea] 
[c0117e76] [c0108d63] 
Code: 8b 00 85 c0 74 4d ff 48 10 8b 04 0a 8b 00 80 48 14 08 eb 3f 

EIP; c486321b [sound]sound_release+2b/84   =
Trace; c012acd8 _fput+2c/c0
Trace; c012ae82 fput+12/18
Trace; c0129ec1 filp_close+51/5c
Trace; c0117268 put_files_struct+54/b8
Trace; c01177ea do_exit+c2/1fc
Trace; c0117e76 sys_exit+e/10
Trace; c0108d63 system_call+33/40
Code;  c486321b [sound]sound_release+2b/84
 _EIP:
Code;  c486321b [sound]sound_release+2b/84   =
   0:   8b 00 mov(%eax),%eax   =
Code;  c486321d [sound]sound_release+2d/84
   2:   85 c0 test   %eax,%eax
Code;  c486321f [sound]sound_release+2f/84
   4:   74 4d je 53 _EIP+0x53 c486326e 
[sound]sound_release+7e/84
Code;  c4863221 [sound]sound_release+31/84
   6:   ff 48 10  decl   0x10(%eax)
Code;  c4863224 [sound]sound_release+34/84
   9:   8b 04 0a  mov(%edx,%ecx,1),%eax
Code;  c4863227 [sound]sound_release+37/84
   c:   8b 00 mov(%eax),%eax
Code;  c4863229 [sound]sound_release+39/84
   e:   80 48 14 08   orb$0x8,0x14(%eax)
Code;  c486322d [sound]sound_release+3d/84
  12:   eb 3f jmp53 _EIP+0x53 c486326e 
[sound]sound_release+7e/84