Subject: Is Netatalk causing these kernel errors?

From: Basil Hussain <[email-masked]>
Date: Thu, 25 Jan 2001 12:07:26 +0000

Hi all,

Upon rebooting a new server I'm testing, I noticed some strange
error/warning messages from the kernel when Netatalk started up. The error
was:

kmem_grow: Called nonatomically from int - size-32

This was repeated 3 times in succession. Is anything wrong here? Everything
seems to work fine, as Netatalk started up okay and I'm able to connect fine
to all shares. Restarting Netatalk subsequently didn't yield the same
errors.

I'm running netatalk-1.4.99-0.20001108mdk (from Sourceforge RPM). The server
is running RedHat 6.2, but I have just retrofitted the newer kernel
distributed with RedHat 7 (2.2.16-22) - could this be what's playing up? It
seems to be okay otherwise... (In case you're wondering, I'm playing with
the CIPE VPN system, who's kernel module is only available with RH7.)

Anyway, firstly, can anyone tell me if this actually could have been caused
by Netatalk, or is it just a coincidence? Secondly, if to-do with Netatalk,
is it anything to worry about?

Regards,

------------------------------------------------
Basil Hussain ([email-masked])

---

From: Basil Hussain <[email-masked]>
Date: Wed, 31 Jan 2001 10:48:30 +0000

Hi all,

> kmem_grow: Called nonatomically from int - size-32

Okay, I found this small snippet of information in a 2.4 kernel hacking
guide by Paul Russell :

"If you see a kmem_grow: Called nonatomically from int warning message you
called a memory allocation function from interrupt context without
GFP_ATOMIC. You should really fix that. Run, don't walk."
(http://www.linuxhq.com/kernel/v2.4/doc/DocBook/kernel-hacking.tmpl.html)

I'm not a C or a kernel hacker, so I have no idea what that means
specifically. But, it sounds like it's saying that if you're seeing the
error, whatever's causing it has been programmed incorrectly.

I've observed that I only see this error when Netatalk is started on bootup
and I don't get any errors restarting just Netatalk after bootup. So, I have
a theory about who's the culprit here. Bear in mind that I know very little
about how the Linux kernel works, so this may all be crazy talk... :)

I suspect that the Appletalk kernel module is what's giving these errors. It
makes sense to me that the module is only loaded when Netatalk is first
started up. The fact that I've only seen these errors since I upgraded from
a 2.2.14 to a 2.2.16 kernel also makes sense, because that will probably
have given me a newer Appletalk module.

So, I did the following experiment:

# /etc/rc.d/init.d/atalk stop
Shutting down AppleTalk services:                          [  OK  ]
# /sbin/rmmod appletalk
# /sbin/insmod appletalk
Using /lib/modules/2.2.16-22/misc/appletalk.o
# /etc/rc.d/init.d/atalk start
Starting AppleTalk services:                               [  OK  ]

I stopped Netatalk, removed and re-inserted the Appletalk kernel module and
re-started Netatalk. Lo-and-behold, I got the following in my system logs:

Jan 31 10:28:24 secure kernel: kmem_grow: Called nonatomically from int -
size-32
Jan 31 10:28:24 secure last message repeated 2 times

So, it appears it is the kernel Appletalk module! I also grepped for the
version of the module, which turned out to be:

Jan 31 10:28:08 secure kernel: NET4: AppleTalk 0.18 for Linux NET4.0

Does anybody know whether there are any known problems with this version of
the AppleTalk module? Or perhaps where I could look or who I could contact
to find out?

I realise the Appletalk kernel module isn't part of Netatalk, but I don't
know where to proceed to try and get this problem sorted out. I'm hoping
some of you might be able to help.

Regards,