aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--net/batman-adv/bat_debugfs.c26
-rw-r--r--net/batman-adv/bat_sysfs.c114
-rw-r--r--net/batman-adv/gateway_client.c12
-rw-r--r--net/batman-adv/vis.c16
4 files changed, 87 insertions, 81 deletions
diff --git a/net/batman-adv/bat_debugfs.c b/net/batman-adv/bat_debugfs.c
index ca6aee4bf941..ce84a616fddf 100644
--- a/net/batman-adv/bat_debugfs.c
+++ b/net/batman-adv/bat_debugfs.c
@@ -35,14 +35,14 @@
35static struct dentry *batadv_debugfs; 35static struct dentry *batadv_debugfs;
36 36
37#ifdef CONFIG_BATMAN_ADV_DEBUG 37#ifdef CONFIG_BATMAN_ADV_DEBUG
38#define LOG_BUFF_MASK (batadv_log_buff_len - 1) 38#define BATADV_LOG_BUFF_MASK (batadv_log_buff_len - 1)
39#define LOG_BUFF(idx) (debug_log->log_buff[(idx) & LOG_BUFF_MASK]) 39#define BATADV_LOG_BUFF(idx) (debug_log->log_buff[(idx) & BATADV_LOG_BUFF_MASK])
40 40
41static int batadv_log_buff_len = LOG_BUF_LEN; 41static int batadv_log_buff_len = LOG_BUF_LEN;
42 42
43static void batadv_emit_log_char(struct debug_log *debug_log, char c) 43static void batadv_emit_log_char(struct debug_log *debug_log, char c)
44{ 44{
45 LOG_BUFF(debug_log->log_end) = c; 45 BATADV_LOG_BUFF(debug_log->log_end) = c;
46 debug_log->log_end++; 46 debug_log->log_end++;
47 47
48 if (debug_log->log_end - debug_log->log_start > batadv_log_buff_len) 48 if (debug_log->log_end - debug_log->log_start > batadv_log_buff_len)
@@ -133,7 +133,7 @@ static ssize_t batadv_log_read(struct file *file, char __user *buf,
133 133
134 while ((!error) && (i < count) && 134 while ((!error) && (i < count) &&
135 (debug_log->log_start != debug_log->log_end)) { 135 (debug_log->log_start != debug_log->log_end)) {
136 c = LOG_BUFF(debug_log->log_start); 136 c = BATADV_LOG_BUFF(debug_log->log_start);
137 137
138 debug_log->log_start++; 138 debug_log->log_start++;
139 139
@@ -270,7 +270,7 @@ struct bat_debuginfo {
270 const struct file_operations fops; 270 const struct file_operations fops;
271}; 271};
272 272
273#define BAT_DEBUGINFO(_name, _mode, _open) \ 273#define BATADV_DEBUGINFO(_name, _mode, _open) \
274struct bat_debuginfo batadv_debuginfo_##_name = { \ 274struct bat_debuginfo batadv_debuginfo_##_name = { \
275 .attr = { .name = __stringify(_name), \ 275 .attr = { .name = __stringify(_name), \
276 .mode = _mode, }, \ 276 .mode = _mode, }, \
@@ -282,15 +282,17 @@ struct bat_debuginfo batadv_debuginfo_##_name = { \
282 } \ 282 } \
283}; 283};
284 284
285static BAT_DEBUGINFO(routing_algos, S_IRUGO, batadv_algorithms_open); 285static BATADV_DEBUGINFO(routing_algos, S_IRUGO, batadv_algorithms_open);
286static BAT_DEBUGINFO(originators, S_IRUGO, batadv_originators_open); 286static BATADV_DEBUGINFO(originators, S_IRUGO, batadv_originators_open);
287static BAT_DEBUGINFO(gateways, S_IRUGO, batadv_gateways_open); 287static BATADV_DEBUGINFO(gateways, S_IRUGO, batadv_gateways_open);
288static BAT_DEBUGINFO(transtable_global, S_IRUGO, batadv_transtable_global_open); 288static BATADV_DEBUGINFO(transtable_global, S_IRUGO,
289 batadv_transtable_global_open);
289#ifdef CONFIG_BATMAN_ADV_BLA 290#ifdef CONFIG_BATMAN_ADV_BLA
290static BAT_DEBUGINFO(bla_claim_table, S_IRUGO, batadv_bla_claim_table_open); 291static BATADV_DEBUGINFO(bla_claim_table, S_IRUGO, batadv_bla_claim_table_open);
291#endif 292#endif
292static BAT_DEBUGINFO(transtable_local, S_IRUGO, batadv_transtable_local_open); 293static BATADV_DEBUGINFO(transtable_local, S_IRUGO,
293static BAT_DEBUGINFO(vis_data, S_IRUGO, batadv_vis_data_open); 294 batadv_transtable_local_open);
295static BATADV_DEBUGINFO(vis_data, S_IRUGO, batadv_vis_data_open);
294 296
295static struct bat_debuginfo *batadv_mesh_debuginfos[] = { 297static struct bat_debuginfo *batadv_mesh_debuginfos[] = {
296 &batadv_debuginfo_originators, 298 &batadv_debuginfo_originators,
diff --git a/net/batman-adv/bat_sysfs.c b/net/batman-adv/bat_sysfs.c
index 54429a222bd6..3862fe18a033 100644
--- a/net/batman-adv/bat_sysfs.c
+++ b/net/batman-adv/bat_sysfs.c
@@ -38,9 +38,9 @@ static struct bat_priv *batadv_kobj_to_batpriv(struct kobject *obj)
38 return netdev_priv(net_dev); 38 return netdev_priv(net_dev);
39} 39}
40 40
41#define UEV_TYPE_VAR "BATTYPE=" 41#define BATADV_UEV_TYPE_VAR "BATTYPE="
42#define UEV_ACTION_VAR "BATACTION=" 42#define BATADV_UEV_ACTION_VAR "BATACTION="
43#define UEV_DATA_VAR "BATDATA=" 43#define BATADV_UEV_DATA_VAR "BATDATA="
44 44
45static char *batadv_uev_action_str[] = { 45static char *batadv_uev_action_str[] = {
46 "add", 46 "add",
@@ -53,15 +53,15 @@ static char *batadv_uev_type_str[] = {
53}; 53};
54 54
55/* Use this, if you have customized show and store functions */ 55/* Use this, if you have customized show and store functions */
56#define BAT_ATTR(_name, _mode, _show, _store) \ 56#define BATADV_ATTR(_name, _mode, _show, _store) \
57struct bat_attribute batadv_attr_##_name = { \ 57struct bat_attribute batadv_attr_##_name = { \
58 .attr = {.name = __stringify(_name), \ 58 .attr = {.name = __stringify(_name), \
59 .mode = _mode }, \ 59 .mode = _mode }, \
60 .show = _show, \ 60 .show = _show, \
61 .store = _store, \ 61 .store = _store, \
62}; 62};
63 63
64#define BAT_ATTR_SIF_STORE_BOOL(_name, _post_func) \ 64#define BATADV_ATTR_SIF_STORE_BOOL(_name, _post_func) \
65ssize_t batadv_store_##_name(struct kobject *kobj, \ 65ssize_t batadv_store_##_name(struct kobject *kobj, \
66 struct attribute *attr, char *buff, \ 66 struct attribute *attr, char *buff, \
67 size_t count) \ 67 size_t count) \
@@ -72,7 +72,7 @@ ssize_t batadv_store_##_name(struct kobject *kobj, \
72 &bat_priv->_name, net_dev); \ 72 &bat_priv->_name, net_dev); \
73} 73}
74 74
75#define BAT_ATTR_SIF_SHOW_BOOL(_name) \ 75#define BATADV_ATTR_SIF_SHOW_BOOL(_name) \
76ssize_t batadv_show_##_name(struct kobject *kobj, \ 76ssize_t batadv_show_##_name(struct kobject *kobj, \
77 struct attribute *attr, char *buff) \ 77 struct attribute *attr, char *buff) \
78{ \ 78{ \
@@ -85,14 +85,14 @@ ssize_t batadv_show_##_name(struct kobject *kobj, \
85/* Use this, if you are going to turn a [name] in the soft-interface 85/* Use this, if you are going to turn a [name] in the soft-interface
86 * (bat_priv) on or off 86 * (bat_priv) on or off
87 */ 87 */
88#define BAT_ATTR_SIF_BOOL(_name, _mode, _post_func) \ 88#define BATADV_ATTR_SIF_BOOL(_name, _mode, _post_func) \
89 static BAT_ATTR_SIF_STORE_BOOL(_name, _post_func) \ 89 static BATADV_ATTR_SIF_STORE_BOOL(_name, _post_func) \
90 static BAT_ATTR_SIF_SHOW_BOOL(_name) \ 90 static BATADV_ATTR_SIF_SHOW_BOOL(_name) \
91 static BAT_ATTR(_name, _mode, batadv_show_##_name, \ 91 static BATADV_ATTR(_name, _mode, batadv_show_##_name, \
92 batadv_store_##_name) 92 batadv_store_##_name)
93 93
94 94
95#define BAT_ATTR_SIF_STORE_UINT(_name, _min, _max, _post_func) \ 95#define BATADV_ATTR_SIF_STORE_UINT(_name, _min, _max, _post_func) \
96ssize_t batadv_store_##_name(struct kobject *kobj, \ 96ssize_t batadv_store_##_name(struct kobject *kobj, \
97 struct attribute *attr, char *buff, \ 97 struct attribute *attr, char *buff, \
98 size_t count) \ 98 size_t count) \
@@ -104,7 +104,7 @@ ssize_t batadv_store_##_name(struct kobject *kobj, \
104 &bat_priv->_name, net_dev); \ 104 &bat_priv->_name, net_dev); \
105} 105}
106 106
107#define BAT_ATTR_SIF_SHOW_UINT(_name) \ 107#define BATADV_ATTR_SIF_SHOW_UINT(_name) \
108ssize_t batadv_show_##_name(struct kobject *kobj, \ 108ssize_t batadv_show_##_name(struct kobject *kobj, \
109 struct attribute *attr, char *buff) \ 109 struct attribute *attr, char *buff) \
110{ \ 110{ \
@@ -115,14 +115,14 @@ ssize_t batadv_show_##_name(struct kobject *kobj, \
115/* Use this, if you are going to set [name] in the soft-interface 115/* Use this, if you are going to set [name] in the soft-interface
116 * (bat_priv) to an unsigned integer value 116 * (bat_priv) to an unsigned integer value
117 */ 117 */
118#define BAT_ATTR_SIF_UINT(_name, _mode, _min, _max, _post_func) \ 118#define BATADV_ATTR_SIF_UINT(_name, _mode, _min, _max, _post_func) \
119 static BAT_ATTR_SIF_STORE_UINT(_name, _min, _max, _post_func) \ 119 static BATADV_ATTR_SIF_STORE_UINT(_name, _min, _max, _post_func)\
120 static BAT_ATTR_SIF_SHOW_UINT(_name) \ 120 static BATADV_ATTR_SIF_SHOW_UINT(_name) \
121 static BAT_ATTR(_name, _mode, batadv_show_##_name, \ 121 static BATADV_ATTR(_name, _mode, batadv_show_##_name, \
122 batadv_store_##_name) 122 batadv_store_##_name)
123 123
124 124
125#define BAT_ATTR_HIF_STORE_UINT(_name, _min, _max, _post_func) \ 125#define BATADV_ATTR_HIF_STORE_UINT(_name, _min, _max, _post_func) \
126ssize_t batadv_store_##_name(struct kobject *kobj, \ 126ssize_t batadv_store_##_name(struct kobject *kobj, \
127 struct attribute *attr, char *buff, \ 127 struct attribute *attr, char *buff, \
128 size_t count) \ 128 size_t count) \
@@ -143,7 +143,7 @@ ssize_t batadv_store_##_name(struct kobject *kobj, \
143 return length; \ 143 return length; \
144} 144}
145 145
146#define BAT_ATTR_HIF_SHOW_UINT(_name) \ 146#define BATADV_ATTR_HIF_SHOW_UINT(_name) \
147ssize_t batadv_show_##_name(struct kobject *kobj, \ 147ssize_t batadv_show_##_name(struct kobject *kobj, \
148 struct attribute *attr, char *buff) \ 148 struct attribute *attr, char *buff) \
149{ \ 149{ \
@@ -164,11 +164,11 @@ ssize_t batadv_show_##_name(struct kobject *kobj, \
164/* Use this, if you are going to set [name] in hard_iface to an 164/* Use this, if you are going to set [name] in hard_iface to an
165 * unsigned integer value 165 * unsigned integer value
166 */ 166 */
167#define BAT_ATTR_HIF_UINT(_name, _mode, _min, _max, _post_func) \ 167#define BATADV_ATTR_HIF_UINT(_name, _mode, _min, _max, _post_func) \
168 static BAT_ATTR_HIF_STORE_UINT(_name, _min, _max, _post_func) \ 168 static BATADV_ATTR_HIF_STORE_UINT(_name, _min, _max, _post_func)\
169 static BAT_ATTR_HIF_SHOW_UINT(_name) \ 169 static BATADV_ATTR_HIF_SHOW_UINT(_name) \
170 static BAT_ATTR(_name, _mode, batadv_show_##_name, \ 170 static BATADV_ATTR(_name, _mode, batadv_show_##_name, \
171 batadv_store_##_name) 171 batadv_store_##_name)
172 172
173 173
174static int batadv_store_bool_attr(char *buff, size_t count, 174static int batadv_store_bool_attr(char *buff, size_t count,
@@ -454,26 +454,27 @@ static ssize_t batadv_store_gw_bwidth(struct kobject *kobj,
454 return batadv_gw_bandwidth_set(net_dev, buff, count); 454 return batadv_gw_bandwidth_set(net_dev, buff, count);
455} 455}
456 456
457BAT_ATTR_SIF_BOOL(aggregated_ogms, S_IRUGO | S_IWUSR, NULL); 457BATADV_ATTR_SIF_BOOL(aggregated_ogms, S_IRUGO | S_IWUSR, NULL);
458BAT_ATTR_SIF_BOOL(bonding, S_IRUGO | S_IWUSR, NULL); 458BATADV_ATTR_SIF_BOOL(bonding, S_IRUGO | S_IWUSR, NULL);
459#ifdef CONFIG_BATMAN_ADV_BLA 459#ifdef CONFIG_BATMAN_ADV_BLA
460BAT_ATTR_SIF_BOOL(bridge_loop_avoidance, S_IRUGO | S_IWUSR, NULL); 460BATADV_ATTR_SIF_BOOL(bridge_loop_avoidance, S_IRUGO | S_IWUSR, NULL);
461#endif 461#endif
462BAT_ATTR_SIF_BOOL(fragmentation, S_IRUGO | S_IWUSR, batadv_update_min_mtu); 462BATADV_ATTR_SIF_BOOL(fragmentation, S_IRUGO | S_IWUSR, batadv_update_min_mtu);
463BAT_ATTR_SIF_BOOL(ap_isolation, S_IRUGO | S_IWUSR, NULL); 463BATADV_ATTR_SIF_BOOL(ap_isolation, S_IRUGO | S_IWUSR, NULL);
464static BAT_ATTR(vis_mode, S_IRUGO | S_IWUSR, batadv_show_vis_mode, 464static BATADV_ATTR(vis_mode, S_IRUGO | S_IWUSR, batadv_show_vis_mode,
465 batadv_store_vis_mode); 465 batadv_store_vis_mode);
466static BAT_ATTR(routing_algo, S_IRUGO, batadv_show_bat_algo, NULL); 466static BATADV_ATTR(routing_algo, S_IRUGO, batadv_show_bat_algo, NULL);
467static BAT_ATTR(gw_mode, S_IRUGO | S_IWUSR, batadv_show_gw_mode, 467static BATADV_ATTR(gw_mode, S_IRUGO | S_IWUSR, batadv_show_gw_mode,
468 batadv_store_gw_mode); 468 batadv_store_gw_mode);
469BAT_ATTR_SIF_UINT(orig_interval, S_IRUGO | S_IWUSR, 2 * JITTER, INT_MAX, NULL); 469BATADV_ATTR_SIF_UINT(orig_interval, S_IRUGO | S_IWUSR, 2 * JITTER, INT_MAX,
470BAT_ATTR_SIF_UINT(hop_penalty, S_IRUGO | S_IWUSR, 0, TQ_MAX_VALUE, NULL); 470 NULL);
471BAT_ATTR_SIF_UINT(gw_sel_class, S_IRUGO | S_IWUSR, 1, TQ_MAX_VALUE, 471BATADV_ATTR_SIF_UINT(hop_penalty, S_IRUGO | S_IWUSR, 0, TQ_MAX_VALUE, NULL);
472 batadv_post_gw_deselect); 472BATADV_ATTR_SIF_UINT(gw_sel_class, S_IRUGO | S_IWUSR, 1, TQ_MAX_VALUE,
473static BAT_ATTR(gw_bandwidth, S_IRUGO | S_IWUSR, batadv_show_gw_bwidth, 473 batadv_post_gw_deselect);
474 batadv_store_gw_bwidth); 474static BATADV_ATTR(gw_bandwidth, S_IRUGO | S_IWUSR, batadv_show_gw_bwidth,
475 batadv_store_gw_bwidth);
475#ifdef CONFIG_BATMAN_ADV_DEBUG 476#ifdef CONFIG_BATMAN_ADV_DEBUG
476BAT_ATTR_SIF_UINT(log_level, S_IRUGO | S_IWUSR, 0, DBG_ALL, NULL); 477BATADV_ATTR_SIF_UINT(log_level, S_IRUGO | S_IWUSR, 0, DBG_ALL, NULL);
477#endif 478#endif
478 479
479static struct bat_attribute *batadv_mesh_attrs[] = { 480static struct bat_attribute *batadv_mesh_attrs[] = {
@@ -656,9 +657,9 @@ static ssize_t batadv_show_iface_status(struct kobject *kobj,
656 return length; 657 return length;
657} 658}
658 659
659static BAT_ATTR(mesh_iface, S_IRUGO | S_IWUSR, 660static BATADV_ATTR(mesh_iface, S_IRUGO | S_IWUSR, batadv_show_mesh_iface,
660 batadv_show_mesh_iface, batadv_store_mesh_iface); 661 batadv_store_mesh_iface);
661static BAT_ATTR(iface_status, S_IRUGO, batadv_show_iface_status, NULL); 662static BATADV_ATTR(iface_status, S_IRUGO, batadv_show_iface_status, NULL);
662 663
663static struct bat_attribute *batadv_batman_attrs[] = { 664static struct bat_attribute *batadv_batman_attrs[] = {
664 &batadv_attr_mesh_iface, 665 &batadv_attr_mesh_iface,
@@ -720,31 +721,32 @@ int batadv_throw_uevent(struct bat_priv *bat_priv, enum uev_type type,
720 721
721 bat_kobj = &primary_if->soft_iface->dev.kobj; 722 bat_kobj = &primary_if->soft_iface->dev.kobj;
722 723
723 uevent_env[0] = kmalloc(strlen(UEV_TYPE_VAR) + 724 uevent_env[0] = kmalloc(strlen(BATADV_UEV_TYPE_VAR) +
724 strlen(batadv_uev_type_str[type]) + 1, 725 strlen(batadv_uev_type_str[type]) + 1,
725 GFP_ATOMIC); 726 GFP_ATOMIC);
726 if (!uevent_env[0]) 727 if (!uevent_env[0])
727 goto out; 728 goto out;
728 729
729 sprintf(uevent_env[0], "%s%s", UEV_TYPE_VAR, batadv_uev_type_str[type]); 730 sprintf(uevent_env[0], "%s%s", BATADV_UEV_TYPE_VAR,
731 batadv_uev_type_str[type]);
730 732
731 uevent_env[1] = kmalloc(strlen(UEV_ACTION_VAR) + 733 uevent_env[1] = kmalloc(strlen(BATADV_UEV_ACTION_VAR) +
732 strlen(batadv_uev_action_str[action]) + 1, 734 strlen(batadv_uev_action_str[action]) + 1,
733 GFP_ATOMIC); 735 GFP_ATOMIC);
734 if (!uevent_env[1]) 736 if (!uevent_env[1])
735 goto out; 737 goto out;
736 738
737 sprintf(uevent_env[1], "%s%s", UEV_ACTION_VAR, 739 sprintf(uevent_env[1], "%s%s", BATADV_UEV_ACTION_VAR,
738 batadv_uev_action_str[action]); 740 batadv_uev_action_str[action]);
739 741
740 /* If the event is DEL, ignore the data field */ 742 /* If the event is DEL, ignore the data field */
741 if (action != UEV_DEL) { 743 if (action != UEV_DEL) {
742 uevent_env[2] = kmalloc(strlen(UEV_DATA_VAR) + 744 uevent_env[2] = kmalloc(strlen(BATADV_UEV_DATA_VAR) +
743 strlen(data) + 1, GFP_ATOMIC); 745 strlen(data) + 1, GFP_ATOMIC);
744 if (!uevent_env[2]) 746 if (!uevent_env[2])
745 goto out; 747 goto out;
746 748
747 sprintf(uevent_env[2], "%s%s", UEV_DATA_VAR, data); 749 sprintf(uevent_env[2], "%s%s", BATADV_UEV_DATA_VAR, data);
748 } 750 }
749 751
750 ret = kobject_uevent_env(bat_kobj, KOBJ_CHANGE, uevent_env); 752 ret = kobject_uevent_env(bat_kobj, KOBJ_CHANGE, uevent_env);
diff --git a/net/batman-adv/gateway_client.c b/net/batman-adv/gateway_client.c
index f43eb57b8a69..3916e90ff6ed 100644
--- a/net/batman-adv/gateway_client.c
+++ b/net/batman-adv/gateway_client.c
@@ -33,8 +33,8 @@
33/* This is the offset of the options field in a dhcp packet starting at 33/* This is the offset of the options field in a dhcp packet starting at
34 * the beginning of the dhcp header 34 * the beginning of the dhcp header
35 */ 35 */
36#define DHCP_OPTIONS_OFFSET 240 36#define BATADV_DHCP_OPTIONS_OFFSET 240
37#define DHCP_REQUEST 3 37#define BATADV_DHCP_REQUEST 3
38 38
39static void batadv_gw_node_free_ref(struct gw_node *gw_node) 39static void batadv_gw_node_free_ref(struct gw_node *gw_node)
40{ 40{
@@ -521,11 +521,11 @@ static bool batadv_is_type_dhcprequest(struct sk_buff *skb, int header_len)
521 521
522 pkt_len = skb_headlen(skb); 522 pkt_len = skb_headlen(skb);
523 523
524 if (pkt_len < header_len + DHCP_OPTIONS_OFFSET + 1) 524 if (pkt_len < header_len + BATADV_DHCP_OPTIONS_OFFSET + 1)
525 goto out; 525 goto out;
526 526
527 p = skb->data + header_len + DHCP_OPTIONS_OFFSET; 527 p = skb->data + header_len + BATADV_DHCP_OPTIONS_OFFSET;
528 pkt_len -= header_len + DHCP_OPTIONS_OFFSET + 1; 528 pkt_len -= header_len + BATADV_DHCP_OPTIONS_OFFSET + 1;
529 529
530 /* Access the dhcp option lists. Each entry is made up by: 530 /* Access the dhcp option lists. Each entry is made up by:
531 * - octet 1: option type 531 * - octet 1: option type
@@ -543,7 +543,7 @@ static bool batadv_is_type_dhcprequest(struct sk_buff *skb, int header_len)
543 p += 2; 543 p += 2;
544 544
545 /* check if the message type is what we need */ 545 /* check if the message type is what we need */
546 if (*p == DHCP_REQUEST) 546 if (*p == BATADV_DHCP_REQUEST)
547 ret = true; 547 ret = true;
548 break; 548 break;
549 } else if (*p == 0) { 549 } else if (*p == 0) {
diff --git a/net/batman-adv/vis.c b/net/batman-adv/vis.c
index 3095c41a67ad..7dc750670c34 100644
--- a/net/batman-adv/vis.c
+++ b/net/batman-adv/vis.c
@@ -26,7 +26,7 @@
26#include "hash.h" 26#include "hash.h"
27#include "originator.h" 27#include "originator.h"
28 28
29#define MAX_VIS_PACKET_SIZE 1000 29#define BATADV_MAX_VIS_PACKET_SIZE 1000
30 30
31static void batadv_start_vis_timer(struct bat_priv *bat_priv); 31static void batadv_start_vis_timer(struct bat_priv *bat_priv);
32 32
@@ -544,10 +544,12 @@ static int batadv_find_best_vis_server(struct bat_priv *bat_priv,
544static bool batadv_vis_packet_full(const struct vis_info *info) 544static bool batadv_vis_packet_full(const struct vis_info *info)
545{ 545{
546 const struct vis_packet *packet; 546 const struct vis_packet *packet;
547 size_t num_items;
548
547 packet = (struct vis_packet *)info->skb_packet->data; 549 packet = (struct vis_packet *)info->skb_packet->data;
550 num_items = BATADV_MAX_VIS_PACKET_SIZE / sizeof(struct vis_info_entry);
548 551
549 if (MAX_VIS_PACKET_SIZE / sizeof(struct vis_info_entry) 552 if (num_items < packet->entries + 1)
550 < packet->entries + 1)
551 return true; 553 return true;
552 return false; 554 return false;
553} 555}
@@ -838,6 +840,7 @@ int batadv_vis_init(struct bat_priv *bat_priv)
838{ 840{
839 struct vis_packet *packet; 841 struct vis_packet *packet;
840 int hash_added; 842 int hash_added;
843 unsigned int len;
841 844
842 if (bat_priv->vis_hash) 845 if (bat_priv->vis_hash)
843 return 0; 846 return 0;
@@ -850,13 +853,12 @@ int batadv_vis_init(struct bat_priv *bat_priv)
850 goto err; 853 goto err;
851 } 854 }
852 855
853 bat_priv->my_vis_info = kmalloc(MAX_VIS_PACKET_SIZE, GFP_ATOMIC); 856 bat_priv->my_vis_info = kmalloc(BATADV_MAX_VIS_PACKET_SIZE, GFP_ATOMIC);
854 if (!bat_priv->my_vis_info) 857 if (!bat_priv->my_vis_info)
855 goto err; 858 goto err;
856 859
857 bat_priv->my_vis_info->skb_packet = dev_alloc_skb(sizeof(*packet) + 860 len = sizeof(*packet) + BATADV_MAX_VIS_PACKET_SIZE + ETH_HLEN;
858 MAX_VIS_PACKET_SIZE + 861 bat_priv->my_vis_info->skb_packet = dev_alloc_skb(len);
859 ETH_HLEN);
860 if (!bat_priv->my_vis_info->skb_packet) 862 if (!bat_priv->my_vis_info->skb_packet)
861 goto free_info; 863 goto free_info;
862 864