on Mon, 13 Dec 2010 06:48:06AM +0900 Simon Horman (horms@xxxxxxxxxxxx) wrote:
> [ CCed Hans Schillstrom and Julian Anastasov ]
>
> On Sun, Dec 12, 2010 at 07:42:29PM +0800, Tinggong Wang wrote:
> > Signed-off-by: Tinggong Wang <wangtinggong@xxxxxxxxx>
> > ---
> > net/netfilter/ipvs/ip_vs_sync.c | 13 ++++++++-----
> > 1 files changed, 8 insertions(+), 5 deletions(-)
> >
> > diff --git a/net/netfilter/ipvs/ip_vs_sync.c
> > b/net/netfilter/ipvs/ip_vs_sync.c
> > index 7632a17..2b6b0cb 100644
> > --- a/net/netfilter/ipvs/ip_vs_sync.c
> > +++ b/net/netfilter/ipvs/ip_vs_sync.c
> > @@ -315,11 +315,6 @@ static void ip_vs_process_message(const char *buffer,
> > const size_t buflen)
> > char *p;
> > int i;
> >
> > - if (buflen < SYNC_MESG_HEADER_LEN) {
> > - IP_VS_ERR_RL("sync message header too short\n");
> > - return;
> > - }
> > -
> > /* Convert size back to host byte order */
> > m->size = ntohs(m->size);
> >
> > @@ -823,6 +818,14 @@ static int sync_thread_backup(void *data)
> > break;
> > }
> >
> > + /* throw invalid data before local_bh_disable,
> > + * so performance won't be downgraded by it
> > + */
> > + if (len < SYNC_MESG_HEADER_LEN) {
> > + IP_VS_ERR_RL("sync message header too short\n");
> > + continue;
> > + }
> > +
> > /* disable bottom half, because it accesses the data
> > shared by softirq while getting/creating conns */
> > local_bh_disable();
> > --
> > 1.7.2.3
> >
>
> Could you explain the motivation for this change?
in my opinion, before local_bh_disable, should ensure packets are look
like more resonable.
local_bh_disable will disable all bottom-half processing on local cpu,
if the multicast group flood of packets containing bad sync message,
local cpu will be busy doing local_bh_disable and local_bh_enable.
if the backup pc has only one cpu, all other tasks will be pending until
the flood finished.
--
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
|