ARP: Error Message in if_ether.c "arprequest: cannot find matching address"

Gleb Smirnoff glebius at FreeBSD.org
Mon Apr 22 09:58:02 UTC 2013


On Wed, Apr 17, 2013 at 08:46:42AM -0400, Juan Mojica wrote:
J> We manage to hit the following message with some regularity.
J> 
J> arprequest: cannot find matching address
J> 
J> The code shows a printf:
J> 
J> printf("%s: cannot find matching address\n", __func__);
J> 
J> 
J> Any reason this is a printf and not a
J> 
J> log(LOG_ERR,
J> 
J> The only things I can come up with are:
J> 
J> a) it is a really severe and should be printed out, which if that is the
J> case why isn't there an assert there?
J> b) whoops, that should probably be a log(LOG_ERR,
J> On our end we need to figure out exactly why we're intermittently hitting
J> this patch of code.

Can you please try this patch? Let's see what's going on.

printf()ing in kernel is especially unsafe when the event can be triggered
remotely. The arprequest() is called on output path of a packet, however
I'm not sure that it can't be triggered by incoming packet.

-- 
Totus tuus, Glebius.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: if_ether.c.diff
Type: text/x-diff
Size: 482 bytes
Desc: not available
URL: <http://lists.freebsd.org/pipermail/freebsd-net/attachments/20130422/b615557b/attachment.diff>


More information about the freebsd-net mailing list