Re: [Bugme-new] [Bug 8808] New: Large file transfer causes kernel panic showing b44_poll
On Wed, 2007-07-25 at 11:54 -0700, Andrew Morton wrote: > On Wed, 25 Jul 2007 04:29:33 -0700 (PDT) > [EMAIL PROTECTED] wrote: > > > http://bugzilla.kernel.org/show_bug.cgi?id=8808 > > > >Summary: Large file transfer causes kernel panic showing b44_poll > >Product: Drivers > >Version: 2.5 > > KernelVersion: 2.6.22.1 > > Platform: All > > OS/Version: Linux > > Tree: Mainline > > Status: NEW > > Severity: blocking > > Priority: P1 > > Component: Network > > AssignedTo: [EMAIL PROTECTED] > > ReportedBy: [EMAIL PROTECTED] > > > > > > Most recent kernel where this bug did not occur: / > > Distribution: ttylinux > > Hardware Environment: Dell Inspiron 1300 > > Problem Description: > > > > A large file transfer (6.5GB) (tried http with wget and plain netcat) > > causes a > > kernel panic after more than several GB have been transferred. However, > > kernel > > panic does not occur consistently. That is, it has occurred after 1.2GB, > > 1.8GB, > > 2.3GB and even 3.4GB transferred. Transfer never finished though. > > I could not repro the problem, but please give this patch a try: diff -rup a/b44.c b/b44.c --- a/b44.c 2007-07-31 15:31:08.0 -0700 +++ b/b44.c 2007-08-01 08:03:08.0 -0700 @@ -792,15 +792,15 @@ static int b44_rx(struct b44 *bp, int bu goto next_pkt; } - if (len == 0) { + if (len < 5) { int i = 0; do { udelay(2); barrier(); len = le16_to_cpu(rh->len); - } while (len == 0 && i++ < 5); - if (len == 0) + } while (len < 5 && i++ < 5); + if (len < 5) goto drop_it; } - To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [Bugme-new] [Bug 8808] New: Large file transfer causes kernel panic showing b44_poll
On Wed, 25 Jul 2007 04:29:33 -0700 (PDT) [EMAIL PROTECTED] wrote: > http://bugzilla.kernel.org/show_bug.cgi?id=8808 > >Summary: Large file transfer causes kernel panic showing b44_poll >Product: Drivers >Version: 2.5 > KernelVersion: 2.6.22.1 > Platform: All > OS/Version: Linux > Tree: Mainline > Status: NEW > Severity: blocking > Priority: P1 > Component: Network > AssignedTo: [EMAIL PROTECTED] > ReportedBy: [EMAIL PROTECTED] > > > Most recent kernel where this bug did not occur: / > Distribution: ttylinux > Hardware Environment: Dell Inspiron 1300 > Problem Description: > > A large file transfer (6.5GB) (tried http with wget and plain netcat) causes a > kernel panic after more than several GB have been transferred. However, kernel > panic does not occur consistently. That is, it has occurred after 1.2GB, > 1.8GB, > 2.3GB and even 3.4GB transferred. Transfer never finished though. > > Call trace: > [] b44_poll+0x220/0x459 > [] b44_poll+0x220/0x459 > [] net_rx_action+0x52/0x110 > [] __do_softirq+0x35/0x75 > [] do_softirq+0x22/0x26 > [] do_IRQ+0x55/0x6a > [] common_interrupt+0x23/0x28 > [] acpi_processor_idle+0x1dd/0x35e > [] cpu_idle+0x3c/0x51 > [] start_kernel+0x24a/0x252 > [] unknown_bootoption+0x0/0x205 > > Code: lots of numbers > EIP: [] skb_over_panic+0x59/0x5d SS:ESP 0068:c04a5ed8 > Kernel panic - not syncing: Fatal exception in interrupt > > Steps to reproduce: > Network boot ttylinux (standard filesys with dhcp enabled) with custom kernel > (see below for config) compiled as bzImage on Dell Inspiron 1300 using > /dev/ram0 as root filesystem. Mount hdd ext3 and attempt to download 6.5GB > image file from local server. Both netcat and wget attempts fail as described > above. > > Kernel config: > > # > # Automatically generated make config: don't edit > # Linux kernel version: 2.6.22.1 > # Wed Jul 25 14:53:11 2007 > # > CONFIG_X86_32=y > CONFIG_GENERIC_TIME=y > CONFIG_CLOCKSOURCE_WATCHDOG=y > CONFIG_GENERIC_CLOCKEVENTS=y > CONFIG_LOCKDEP_SUPPORT=y > CONFIG_STACKTRACE_SUPPORT=y > CONFIG_SEMAPHORE_SLEEPERS=y > CONFIG_X86=y > CONFIG_MMU=y > CONFIG_ZONE_DMA=y > CONFIG_QUICKLIST=y > CONFIG_GENERIC_ISA_DMA=y > CONFIG_GENERIC_IOMAP=y > CONFIG_GENERIC_BUG=y > CONFIG_GENERIC_HWEIGHT=y > CONFIG_ARCH_MAY_HAVE_PC_FDC=y > CONFIG_DMI=y > CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" > > # > # Code maturity level options > # > CONFIG_EXPERIMENTAL=y > CONFIG_BROKEN_ON_SMP=y > CONFIG_INIT_ENV_ARG_LIMIT=32 > > # > # General setup > # > CONFIG_LOCALVERSION="" > # CONFIG_LOCALVERSION_AUTO is not set > CONFIG_SWAP=y > CONFIG_SYSVIPC=y > # CONFIG_IPC_NS is not set > CONFIG_SYSVIPC_SYSCTL=y > # CONFIG_POSIX_MQUEUE is not set > # CONFIG_BSD_PROCESS_ACCT is not set > # CONFIG_TASKSTATS is not set > # CONFIG_UTS_NS is not set > # CONFIG_AUDIT is not set > CONFIG_IKCONFIG=y > CONFIG_IKCONFIG_PROC=y > CONFIG_LOG_BUF_SHIFT=14 > CONFIG_SYSFS_DEPRECATED=y > # CONFIG_RELAY is not set > CONFIG_BLK_DEV_INITRD=y > CONFIG_INITRAMFS_SOURCE="" > CONFIG_CC_OPTIMIZE_FOR_SIZE=y > CONFIG_SYSCTL=y > # CONFIG_EMBEDDED is not set > CONFIG_UID16=y > CONFIG_SYSCTL_SYSCALL=y > CONFIG_KALLSYMS=y > # CONFIG_KALLSYMS_ALL is not set > # CONFIG_KALLSYMS_EXTRA_PASS is not set > CONFIG_HOTPLUG=y > CONFIG_PRINTK=y > CONFIG_BUG=y > CONFIG_ELF_CORE=y > CONFIG_BASE_FULL=y > CONFIG_FUTEX=y > CONFIG_ANON_INODES=y > CONFIG_EPOLL=y > CONFIG_SIGNALFD=y > CONFIG_TIMERFD=y > CONFIG_EVENTFD=y > CONFIG_SHMEM=y > CONFIG_VM_EVENT_COUNTERS=y > CONFIG_SLAB=y > # CONFIG_SLUB is not set > # CONFIG_SLOB is not set > CONFIG_RT_MUTEXES=y > # CONFIG_TINY_SHMEM is not set > CONFIG_BASE_SMALL=0 > > # > # Loadable module support > # > # CONFIG_MODULES is not set > > # > # Block layer > # > CONFIG_BLOCK=y > # CONFIG_LBD is not set > # CONFIG_BLK_DEV_IO_TRACE is not set > # CONFIG_LSF is not set > > # > # IO Schedulers > # > CONFIG_IOSCHED_NOOP=y > # CONFIG_IOSCHED_AS is not set > CONFIG_IOSCHED_DEADLINE=y > # CONFIG_IOSCHED_CFQ is not set > # CONFIG_DEFAULT_AS is not set > CONFIG_DEFAULT_DEADLINE=y > # CONFIG_DEFAULT_CFQ is not set > # CONFIG_DEFAULT_NOOP is not set > CONFIG_DEFAULT_IOSCHED="deadline" > > # > # Processor type and features > # > # CONFIG_TICK_ONESHOT is not set > # CONFIG_NO_HZ is not set > # CONFIG_HIGH_RES_TIMERS is not set > # CONFIG_SMP is not set > CONFIG_X86_PC=y > # CONFIG_X86_ELAN is not set > # CONFIG_X86_VOYAGER is not set > # CONFIG_X86_NUMAQ is not set > # CONFIG_X86_SUMMIT is not set > # CONFIG_X86_BIGSMP is not set > # CONFIG_X86_VISWS is not set > # CONFIG_X86_GENERICARCH is not set > # CONFIG_X86_ES7000 is not set > # CONFIG_PARAVIRT is not set > CONFIG_M386=y > # CONFIG_M486 is not set > # CONFIG_M586 is not set > # CONFIG_M586TSC is not set > # CONFIG_M586MMX is not set > # CONFIG_M686 is not set > # CONFIG_MPENTIUMII is not set > # CONFIG_MPENTIUMIII is not set > # CONFIG_MPENTIUMM is