summaryrefslogtreecommitdiffstats
path: root/net/batman-adv/types.h
diff options
context:
space:
mode:
authorLinus Lüssing2015-06-16 17:10:24 +0200
committerAntonio Quartulli2015-08-14 22:50:43 +0200
commitac4eebd48461ec993e7cb614d5afe7df8c72e6b7 (patch)
treea4730b7efd5982fb76a605f95da22ced4a096043 /net/batman-adv/types.h
parentbatman-adv: Make NC capability changes atomic (diff)
downloadkernel-qcow2-linux-ac4eebd48461ec993e7cb614d5afe7df8c72e6b7.tar.gz
kernel-qcow2-linux-ac4eebd48461ec993e7cb614d5afe7df8c72e6b7.tar.xz
kernel-qcow2-linux-ac4eebd48461ec993e7cb614d5afe7df8c72e6b7.zip
batman-adv: Make TT capability changes atomic
Bitwise OR/AND assignments in C aren't guaranteed to be atomic. One OGM handler might undo the set/clear of a specific bit from another handler run in between. Fix this by using the atomic set_bit()/clear_bit()/test_bit() functions. Fixes: e17931d1a61d ("batman-adv: introduce capability initialization bitfield") Signed-off-by: Linus Lüssing <linus.luessing@c0d3.blue> Signed-off-by: Marek Lindner <mareklindner@neomailbox.ch> Signed-off-by: Antonio Quartulli <antonio@meshcoding.com>
Diffstat (limited to 'net/batman-adv/types.h')
-rw-r--r--net/batman-adv/types.h4
1 files changed, 2 insertions, 2 deletions
diff --git a/net/batman-adv/types.h b/net/batman-adv/types.h
index ed4aec5cb8cc..6f801efc3ae2 100644
--- a/net/batman-adv/types.h
+++ b/net/batman-adv/types.h
@@ -274,7 +274,7 @@ struct batadv_orig_node {
struct hlist_node mcast_want_all_ipv6_node;
#endif
unsigned long capabilities;
- uint8_t capa_initialized;
+ unsigned long capa_initialized;
atomic_t last_ttvn;
unsigned char *tt_buff;
int16_t tt_buff_len;
@@ -315,7 +315,7 @@ struct batadv_orig_node {
enum batadv_orig_capabilities {
BATADV_ORIG_CAPA_HAS_DAT,
BATADV_ORIG_CAPA_HAS_NC,
- BATADV_ORIG_CAPA_HAS_TT = BIT(2),
+ BATADV_ORIG_CAPA_HAS_TT,
BATADV_ORIG_CAPA_HAS_MCAST = BIT(3),
};