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
--
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
|