<feed xmlns='http://www.w3.org/2005/Atom'>
<title>BMC/Intel-BMC/linux.git/net/batman-adv, branch dev</title>
<subtitle>Intel OpenBMC Linux kernel source tree (mirror)</subtitle>
<id>https://git.radix-linux.su/BMC/Intel-BMC/linux.git/atom?h=dev</id>
<link rel='self' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/atom?h=dev'/>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/'/>
<updated>2015-08-19T02:08:23+00:00</updated>
<entry>
<title>batman-adv: Fix memory leak on tt add with invalid vlan</title>
<updated>2015-08-19T02:08:23+00:00</updated>
<author>
<name>Sven Eckelmann</name>
<email>sven@narfation.org</email>
</author>
<published>2015-08-18T11:37:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/commit/?id=fd7dec25a18f495e50d2040398fd263836ff3b28'/>
<id>urn:sha1:fd7dec25a18f495e50d2040398fd263836ff3b28</id>
<content type='text'>
The object tt_local is allocated with kmalloc and not initialized when the
function batadv_tt_local_add checks for the vlan. But this function can
only cleanup the object when the (not yet initialized) reference counter of
the object is 1. This is unlikely and thus the object would leak when the
vlan could not be found.

Instead the uninitialized object tt_local has to be freed manually and the
pointer has to set to NULL to avoid calling the function which would try to
decrement the reference counter of the not existing object.

CID: 1316518
Fixes: 354136bcc3c4 ("batman-adv: fix kernel crash due to missing NULL checks")
Signed-off-by: Sven Eckelmann &lt;sven@narfation.org&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>batman-adv: initialize up/down values when adding a gateway</title>
<updated>2015-08-04T22:31:47+00:00</updated>
<author>
<name>Simon Wunderlich</name>
<email>simon@open-mesh.com</email>
</author>
<published>2015-06-24T12:50:19+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/commit/?id=27a4d5efd417b6ef3190e9af357715532d4617a3'/>
<id>urn:sha1:27a4d5efd417b6ef3190e9af357715532d4617a3</id>
<content type='text'>
Without this initialization, gateways which actually announce up/down
bandwidth of 0/0 could be added. If these nodes get purged via
_batadv_purge_orig() later, the gw_node structure does not get removed
since batadv_gw_node_delete() updates the gw_node with up/down
bandwidth of 0/0, and the updating function then discards the change
and does not free gw_node.

This results in leaking the gw_node structures, which references other
structures: gw_node -&gt; orig_node -&gt; orig_node_ifinfo -&gt; hardif. When
removing the interface later, the open reference on the hardif may cause
hangs with the infamous "unregister_netdevice: waiting for mesh1 to
become free. Usage count = 1" message.

Signed-off-by: Simon Wunderlich &lt;simon@open-mesh.com&gt;
Signed-off-by: Marek Lindner &lt;mareklindner@neomailbox.ch&gt;
Signed-off-by: Antonio Quartulli &lt;antonio@meshcoding.com&gt;
</content>
</entry>
<entry>
<title>batman-adv: protect tt_local_entry from concurrent delete events</title>
<updated>2015-08-04T22:31:47+00:00</updated>
<author>
<name>Marek Lindner</name>
<email>mareklindner@neomailbox.ch</email>
</author>
<published>2015-06-17T12:01:36+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/commit/?id=ef72706a0543d0c3a5ab29bd6378fdfb368118d9'/>
<id>urn:sha1:ef72706a0543d0c3a5ab29bd6378fdfb368118d9</id>
<content type='text'>
The tt_local_entry deletion performed in batadv_tt_local_remove() was neither
protecting against simultaneous deletes nor checking whether the element was
still part of the list before calling hlist_del_rcu().

Replacing the hlist_del_rcu() call with batadv_hash_remove() provides adequate
protection via hash spinlocks as well as an is-element-still-in-hash check to
avoid 'blind' hash removal.

Fixes: 068ee6e204e1 ("batman-adv: roaming handling mechanism redesign")
Reported-by: alfonsname@web.de
Signed-off-by: Marek Lindner &lt;mareklindner@neomailbox.ch&gt;
Signed-off-by: Antonio Quartulli &lt;antonio@meshcoding.com&gt;
</content>
</entry>
<entry>
<title>batman-adv: fix kernel crash due to missing NULL checks</title>
<updated>2015-08-04T22:31:46+00:00</updated>
<author>
<name>Marek Lindner</name>
<email>mareklindner@neomailbox.ch</email>
</author>
<published>2015-06-09T13:24:36+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/commit/?id=354136bcc3c4f40a2813bba8f57ca5267d812d15'/>
<id>urn:sha1:354136bcc3c4f40a2813bba8f57ca5267d812d15</id>
<content type='text'>
batadv_softif_vlan_get() may return NULL which has to be verified
by the caller.

Fixes: 35df3b298fc8 ("batman-adv: fix TT VLAN inconsistency on VLAN re-add")
Reported-by: Ryan Thompson &lt;ryan@eero.com&gt;
Signed-off-by: Marek Lindner &lt;mareklindner@neomailbox.ch&gt;
Signed-off-by: Antonio Quartulli &lt;antonio@meshcoding.com&gt;
</content>
</entry>
<entry>
<title>batman-adv: avoid DAT to mess up LAN state</title>
<updated>2015-08-04T22:31:46+00:00</updated>
<author>
<name>Antonio Quartulli</name>
<email>antonio@meshcoding.com</email>
</author>
<published>2015-06-16T19:06:24+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/commit/?id=f202a666e933f3c7557126d63833a6a3b577ac15'/>
<id>urn:sha1:f202a666e933f3c7557126d63833a6a3b577ac15</id>
<content type='text'>
When a node running DAT receives an ARP request from the LAN for the
first time, it is likely that this node will request the ARP entry
through the distributed ARP table (DAT) in the mesh.

Once a DAT reply is received the asking node must check if the MAC
address for which the IP address has been asked is local. If it is, the
node must drop the ARP reply bceause the client should have replied on
its own locally.

Forwarding this reply means fooling any L2 bridge (e.g. Ethernet
switches) lying between the batman-adv node and the LAN. This happens
because the L2 bridge will think that the client sending the ARP reply
lies somewhere in the mesh, while this node is sitting in the same LAN.

Reported-by: Simon Wunderlich &lt;sw@simonwunderlich.de&gt;
Signed-off-by: Marek Lindner &lt;mareklindner@neomailbox.ch&gt;
Signed-off-by: Antonio Quartulli &lt;antonio@meshcoding.com&gt;
</content>
</entry>
<entry>
<title>batman-adv: change the MAC of each VLAN upon ndo_set_mac_address</title>
<updated>2015-06-07T15:07:20+00:00</updated>
<author>
<name>Antonio Quartulli</name>
<email>antonio@open-mesh.com</email>
</author>
<published>2014-03-31T11:48:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/commit/?id=94d1dd87316fdb7a403a2750e13ec839fd2fadea'/>
<id>urn:sha1:94d1dd87316fdb7a403a2750e13ec839fd2fadea</id>
<content type='text'>
The MAC address of the soft-interface is used to initialise
the "non-purge" TT entry of each existing VLAN. Therefore
when the user invokes ndo_set_mac_address() all the
"non-purge" TT entries have to be updated, not only the one
belonging to the non-tagged network.

Signed-off-by: Antonio Quartulli &lt;antonio@open-mesh.com&gt;
Signed-off-by: Marek Lindner &lt;mareklindner@neomailbox.ch&gt;
</content>
</entry>
<entry>
<title>batman-adv: Remove unused post-VLAN ethhdr in batadv_gw_dhcp_recipient_get</title>
<updated>2015-06-07T15:07:20+00:00</updated>
<author>
<name>Sven Eckelmann</name>
<email>sven@narfation.org</email>
</author>
<published>2015-04-23T16:22:25+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/commit/?id=7dac6d9391b89fd85bb5eddd18506ae759c9a57b'/>
<id>urn:sha1:7dac6d9391b89fd85bb5eddd18506ae759c9a57b</id>
<content type='text'>
Signed-off-by: Sven Eckelmann &lt;sven@narfation.org&gt;
Signed-off-by: Marek Lindner &lt;mareklindner@neomailbox.ch&gt;
</content>
</entry>
<entry>
<title>batman-adv: Clarify calculation precedence for '&amp;' and '?'</title>
<updated>2015-06-07T15:07:19+00:00</updated>
<author>
<name>Sven Eckelmann</name>
<email>sven@narfation.org</email>
</author>
<published>2015-04-23T16:22:24+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/commit/?id=a2f2b6cd41f5b4f8b5b7914e4e52e4954f631dd2'/>
<id>urn:sha1:a2f2b6cd41f5b4f8b5b7914e4e52e4954f631dd2</id>
<content type='text'>
Signed-off-by: Sven Eckelmann &lt;sven@narfation.org&gt;
Signed-off-by: Marek Lindner &lt;mareklindner@neomailbox.ch&gt;
</content>
</entry>
<entry>
<title>batman-adv: Add required includes to all files</title>
<updated>2015-06-07T15:07:19+00:00</updated>
<author>
<name>Sven Eckelmann</name>
<email>sven@narfation.org</email>
</author>
<published>2015-04-17T17:40:28+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/commit/?id=1e2c2a4fe4a52cc55a78727778119f9a74283b8a'/>
<id>urn:sha1:1e2c2a4fe4a52cc55a78727778119f9a74283b8a</id>
<content type='text'>
The header files could not be build indepdent from each other. This is
happened because headers didn't include the files for things they've used.
This was problematic because the success of a build depended on the
knowledge about the right order of local includes.

Also source files were not including everything they've used explicitly.
Instead they required that transitive includes are always stable. This is
problematic because some transitive includes are not obvious, depend on
config settings and may not be stable in the future.

The order for include blocks are:

 * primary headers (main.h and the *.h file of a *.c file)
 * global linux headers
 * required local headers
 * extra forward declarations for pointers in function/struct declarations

The only exceptions are linux/bitops.h and linux/if_ether.h in packet.h.
This header file is shared with userspace applications like batctl and must
therefore build together with userspace applications. The header
linux/bitops.h is not part of the uapi headers and linux/if_ether.h
conflicts with the musl implementation of netinet/if_ether.h. The
maintainers rejected the use of __KERNEL__ preprocessor checks and thus
these two headers are only in main.h. All files using packet.h first have
to include main.h to work correctly.

Reported-by: Markus Pargmann &lt;mpa@pengutronix.de&gt;
Signed-off-by: Sven Eckelmann &lt;sven@narfation.org&gt;
Signed-off-by: Marek Lindner &lt;mareklindner@neomailbox.ch&gt;
</content>
</entry>
<entry>
<title>batman-adv: add bat_neigh_free API</title>
<updated>2015-06-07T15:07:18+00:00</updated>
<author>
<name>Antonio Quartulli</name>
<email>antonio@open-mesh.com</email>
</author>
<published>2015-02-28T16:50:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/commit/?id=bcef1f3c49daee2829cf58e30310427c63038cff'/>
<id>urn:sha1:bcef1f3c49daee2829cf58e30310427c63038cff</id>
<content type='text'>
This API has to be used to let any routing protocol free
neighbor specific allocated resources

Signed-off-by: Antonio Quartulli &lt;antonio@open-mesh.com&gt;
Signed-off-by: Marek Lindner &lt;mareklindner@neomailbox.ch&gt;
</content>
</entry>
</feed>
