Re: activeconns * weight overflowing 32-bit int

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



	Hello,

On Thu, 23 May 2013, Simon Kirby wrote:

> Hello!
> 
> Yes, see: http://0x.ca/sim/ref/3.9-ipvs/
> 
> The case of just (__u64) on i386 looks not very good, but making the
> weight also unsigned (__u32) seems to improve things. I set up a test

	Hm, only sizeof(long int) should differ between
32-bit and 64-bit platforms, atomic_t is always int, int
is returned from atomic_read and int is always 4 bytes.

> harness (ipvs.c) and disassembled i386 and amd64 compiler outputs for
> both. The only reason I haven't submitted it yet is that I haven't yet
> confirmed that it fixes our problem in production, though it did seem to
> work in testing. Will follow-up shortly.

	Last time I also checked the assembler output from x86-32
and it looked good. I used 'make net/netfilter/ipvs/ip_vs_wlc.s'
to generate asm output, note the 's' extension.

	May be problem in your ipvs.c file comes from the
fact that __u64 is unsigned long long for 32-bit platforms.
I changed the code to use 'unsigned long' as follows:

#if 0
typedef unsigned long long __u64;
#else
typedef unsigned long __u64;
#endif

	and the x86-32 platform works correctly.
x86-64 works for both cases: 'unsigned long long' and
'unsigned long' but x86-32 generates many mul operations
for the 'unsigned long long' case which is not used in
the kernel. That is why I didn't noticed such problem.

	So, I think we should be safe by adding
(__u64) without any (__u32), next days I'll check again
the asm output. May be (__u32) before weight ensures
32x32 multiply but it should not be needed.

Regards

--
Julian Anastasov <ja@xxxxxx>
--
To unsubscribe from this list: send the line "unsubscribe lvs-devel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Filesystem Devel]     [Linux NFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux SCSI]     [X.Org]

  Powered by Linux