David Miller <[EMAIL PROTECTED]> writes: >> Ok, I've got it, so we have to do the same with the following: >> quote from inet_hashtables.c and inet6_hashtables.c. I'll prepare the >> patch. >> >> And just a curious, does the /* Treat low > high as high == low */ >> idea will keep after the sysctl will be patched? > > I'm beginning to think that we should do the sysctl validation > in this patch too, instead of duplicating this grotty check > in all of these port selection functions. Yep, that's exactly I'm talking about. I'm sure that [...] % (high - low) [...] erroneous from the begining, because in such places we want to have 1 in denominator, for the cases when we have only one port. Because 34000 34000 in sysctl's ip_local_port_range means 1(one) port, not 0(zero).
So it seems to me that we have to fix mentioned denominators in kernel/net to have 1, that will be correct logically. And do the MAX<MIN check in sysctl code. From this point of view, it's best idea to have two patches: one for the kernel/net denominators and another one for the sysctl.c's function dointvec_minmax(). Because they can live independently. And the patch for the kernel/net will do the work at least because we prevent kernel trap at all. Dave, am I right? -- Anton Arapov, <[EMAIL PROTECTED]> Kernel Development, Red Hat GPG Key ID: 0x6FA8C812
pgp0HegHwE2UE.pgp
Description: PGP signature