lkml.org 
[lkml]   [1998]   [Oct]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
From
SubjectRe: Serious locking bug in Linux NFS
Date
In article <cistron.m0zUMOE-000393C@ocean.lucon.org>,
H.J. Lu <hjl@lucon.org> wrote:
>> 3) I got this message while starting statd:
>>
>> Oct 16 13:50:15 linuxserver ./statd[23846]: address mismatch: expected
>> 240.92.123.21, got 240.92.123.21
>
>Here is the relevant code:
>
> if (lp->addr.s_addr != sin->sin_addr.s_addr)
> dprintf(L_WARNING, "address mismatch: "
> "expected %s, got %s\n",
> inet_ntoa(lp->addr),
> inet_ntoa(sin->sin_addr));
>
>I don't see how it can happen besides a bad compiler/HW. It looks
>like you may have a compiler/HW.

No, it's just that you cannot use inet_ntoa twice in a call to
printf. inet_ntoa returns data in a static buffer. If you call
it twice, the data from the first time gets overwritten.

You should do something like this:

char tmp[16];

strcpy(tmp, inet_ntoa(lp->addr));
dprintf(L_WARNING, "address mismatch: "
"expected %s, got %s\n",
tmp,
inet_ntoa(sin->sin_addr));

Ofcourse inet_ntoa should have been designed so that it took a
pointer to some storage space in which to put the result in
the first place, but it's too late to change that I guess ..

Mike.
--
"Did I ever tell you about the illusion of free will?"
-- Sheriff Lucas Buck, ultimate BOFH.

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2005-03-22 13:45    [W:0.340 / U:1.440 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site