Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

[NETFILTER]: ipt_recent: last_pkts is an array of "unsigned long" not "u_int32_t"

This fixes various crashes on 64-bit when using this module.

Based upon a patch by Juergen Kreileder <jk@blackdown.de>.

Signed-off-by: David S. Miller <davem@davemloft.net>
ACKed-by: Patrick McHardy <kaber@trash.net>

+5 -5
+5 -5
net/ipv4/netfilter/ipt_recent.c
··· 223 223 curr_table->table[count].last_seen = 0; 224 224 curr_table->table[count].addr = 0; 225 225 curr_table->table[count].ttl = 0; 226 - memset(curr_table->table[count].last_pkts,0,ip_pkt_list_tot*sizeof(u_int32_t)); 226 + memset(curr_table->table[count].last_pkts,0,ip_pkt_list_tot*sizeof(unsigned long)); 227 227 curr_table->table[count].oldest_pkt = 0; 228 228 curr_table->table[count].time_pos = 0; 229 229 curr_table->time_info[count].position = count; ··· 502 502 location = time_info[curr_table->time_pos].position; 503 503 hash_table[r_list[location].hash_entry] = -1; 504 504 hash_table[hash_result] = location; 505 - memset(r_list[location].last_pkts,0,ip_pkt_list_tot*sizeof(u_int32_t)); 505 + memset(r_list[location].last_pkts,0,ip_pkt_list_tot*sizeof(unsigned long)); 506 506 r_list[location].time_pos = curr_table->time_pos; 507 507 r_list[location].addr = addr; 508 508 r_list[location].ttl = ttl; ··· 631 631 r_list[location].last_seen = 0; 632 632 r_list[location].addr = 0; 633 633 r_list[location].ttl = 0; 634 - memset(r_list[location].last_pkts,0,ip_pkt_list_tot*sizeof(u_int32_t)); 634 + memset(r_list[location].last_pkts,0,ip_pkt_list_tot*sizeof(unsigned long)); 635 635 r_list[location].oldest_pkt = 0; 636 636 ans = !info->invert; 637 637 } ··· 734 734 memset(curr_table->table,0,sizeof(struct recent_ip_list)*ip_list_tot); 735 735 #ifdef DEBUG 736 736 if(debug) printk(KERN_INFO RECENT_NAME ": checkentry: Allocating %d for pkt_list.\n", 737 - sizeof(u_int32_t)*ip_pkt_list_tot*ip_list_tot); 737 + sizeof(unsigned long)*ip_pkt_list_tot*ip_list_tot); 738 738 #endif 739 739 740 - hold = vmalloc(sizeof(u_int32_t)*ip_pkt_list_tot*ip_list_tot); 740 + hold = vmalloc(sizeof(unsigned long)*ip_pkt_list_tot*ip_list_tot); 741 741 #ifdef DEBUG 742 742 if(debug) printk(KERN_INFO RECENT_NAME ": checkentry: After pkt_list allocation.\n"); 743 743 #endif