18 Oct, 2016
1 commit
-
Remove the unused but set variable master_dev in check_local_dest to fix
the following GCC warning when building with 'W=1':net/hsr/hsr_forward.c: In function ‘check_local_dest’:
net/hsr/hsr_forward.c:303:21: warning: variable ‘master_dev’ set but not used [-Wunused-but-set-variable]Signed-off-by: Tobias Klauser
Signed-off-by: David S. Miller
17 May, 2016
1 commit
-
The function setup_timer combines the initialization of a timer with the
initialization of the timer's function and data fields. The mulitiline
code for timer initialization is now replaced with function setup_timer.Also, quoting the mod_timer() function comment:
-> mod_timer() is a more efficient way to update the expire field of an
active timer (if the timer is inactive it will be activated).Use setup_timer() and mod_timer() to setup and arm a timer, making the
code compact and aid readablity.Signed-off-by: Muhammad Falak R Wani
Signed-off-by: David S. Miller
22 Apr, 2016
1 commit
-
Removed .type field from NLA to do proper length checking.
Reported by Daniel Borkmann and Julia Lawall.Signed-off-by: Peter Heise
Signed-off-by: David S. Miller
16 Apr, 2016
1 commit
-
This patch adds support for the newer version 1 of the HSR
networking standard. Version 0 is still default and the new
version has to be selected via iproute2.Main changes are in the supervision frame handling and its
ethertype field.Signed-off-by: Peter Heise
Signed-off-by: David S. Miller
24 Nov, 2015
1 commit
-
WARN_ON_ONCE() takes a condition, it doesn't take an error message. I
have converted this to WARN() instead.Signed-off-by: Dan Carpenter
Signed-off-by: David S. Miller
19 Aug, 2015
1 commit
-
Signed-off-by: Phil Sutter
Cc: Arvid Brodin
Signed-off-by: David S. Miller
02 Mar, 2015
1 commit
-
To repeat:
$ sudo ip link del hsr0
BUG: unable to handle kernel NULL pointer dereference at 0000000000000018
IP: [] hsr_del_port+0x15/0xa0
etc...Bug description:
As part of the hsr master device destruction, hsr_del_port() is called for each of
the hsr ports. At each such call, the master device is updated regarding features
and mtu. When the master device is freed before the slave interfaces, master will
be NULL in hsr_del_port(), which led to a NULL pointer dereference.Additionally, dev_put() was called on the master device itself in hsr_del_port(),
causing a refcnt error.A third bug in the same code path was that the rtnl lock was not taken before
hsr_del_port() was called as part of hsr_dev_destroy().The reporter (Nicolas Dichtel) also said: "hsr_netdev_notify() supposes that the
port will always be available when the notification is for an hsr interface. It's
wrong. For example, netdev_wait_allrefs() may resend NETDEV_UNREGISTER.". As a
precaution against this, a check for port == NULL was added in hsr_dev_notify().Reported-by: Nicolas Dichtel
Fixes: 51f3c605318b056a ("net/hsr: Move slave init to hsr_slave.c.")
Signed-off-by: Arvid Brodin
Signed-off-by: David S. Miller
12 Jul, 2014
1 commit
-
MacAddressB is an array (unsigned char MacAddressB[ETH_ALEN]) and is allocated
as a part of *node_dst (which is a struct hsr_node). So the condition is always
false.Detected by Dan Carpenter.
Signed-off-by: Arvid Brodin
Signed-off-by: David S. Miller
09 Jul, 2014
10 commits
-
If none of the slave interfaces are specified, struct nlattr *data[] may
be NULL. Make sure to check for that.While I'm at it, fix the horrible error messages displayed when only one
of the slave interfaces isn't specified.Signed-off-by: Arvid Brodin
Signed-off-by: David S. Miller -
This patch removes the separate paths for frames coming from the outside, and
frames sent from the HSR device, and instead makes all frames go through
hsr_forward_skb() in hsr_forward.c. This greatly improves code readability and
also opens up the possibility for future support of the HSR Interlink device
that is the basis for HSR RedBoxes and HSR QuadBoxes, as well as VLAN
compatibility.Other improvements:
* A reduction in the number of times an skb is copied on machines without
HAVE_EFFICIENT_UNALIGNED_ACCESS, which improves throughput somewhat.
* Headers are now created using the standard eth_header(), and using the
standard hard_header_len.
* Each HSR slave now gets its own private skb, so slave-specific fields can be
correctly set.Signed-off-by: Arvid Brodin
Signed-off-by: David S. Miller -
Signed-off-by: Arvid Brodin
Signed-off-by: David S. Miller -
Signed-off-by: Arvid Brodin
Signed-off-by: David S. Miller -
Signed-off-by: Arvid Brodin
Signed-off-by: David S. Miller -
Also try to prevent some possible slave dereference race conditions. This is
finalized in the next patch, which abandons the slave array in favour of
a list_head list and list RCU.Signed-off-by: Arvid Brodin
Signed-off-by: David S. Miller -
Signed-off-by: Arvid Brodin
Signed-off-by: David S. Miller -
Signed-off-by: Arvid Brodin
Signed-off-by: David S. Miller -
Also move the frame receive handler to hsr_slave.c.
Signed-off-by: Arvid Brodin
Signed-off-by: David S. Miller -
Signed-off-by: Arvid Brodin
Signed-off-by: David S. Miller
28 Mar, 2014
1 commit
-
Use del_timer_sync to ensure that the timer is stopped on all CPUs before
the driver exists.This change was suggested by Thomas Gleixner.
The semantic patch that makes this change is as follows:
(http://coccinelle.lip6.fr/)//
@r@
declarer name module_exit;
identifier ex;
@@module_exit(ex);
@@
identifier r.ex;
@@ex(...) {
}
//Signed-off-by: Julia Lawall
Signed-off-by: David S. Miller
06 Mar, 2014
1 commit
-
Conflicts:
drivers/net/wireless/ath/ath9k/recv.c
drivers/net/wireless/mwifiex/pcie.c
net/ipv6/sit.cThe SIT driver conflict consists of a bug fix being done by hand
in 'net' (missing u64_stats_init()) whilst in 'net-next' a helper
was created (netdev_alloc_pcpu_stats()) which takes care of this.The two wireless conflicts were overlapping changes.
Signed-off-by: David S. Miller
04 Mar, 2014
1 commit
-
This is a sanity check and we never pass invalid values so this patch
doesn't change anything. However the node->time_in[] array has
HSR_MAX_SLAVE (2) elements and not HSR_MAX_DEV (3).Signed-off-by: Dan Carpenter
Signed-off-by: David S. Miller
19 Feb, 2014
1 commit
-
It's slightly smaller/faster for some architectures.
Make sure def_multicast_addr is __aligned(2)Signed-off-by: Joe Perches
Signed-off-by: David S. Miller
18 Dec, 2013
1 commit
-
The callback function of call_rcu() just calls a kfree(), so we
can use kfree_rcu() instead of call_rcu() + callback function.Signed-off-by: Wei Yongjun
Acked-by: Arvid Brodin
Signed-off-by: David S. Miller
01 Dec, 2013
2 commits
-
This implements the rtnl_link_ops fill_info routine for HSR.
Signed-off-by: Arvid Brodin
Signed-off-by: David S. Miller -
Signed-off-by: Arvid Brodin
Signed-off-by: David S. Miller
20 Nov, 2013
4 commits
-
Register generic netlink multicast groups as an array with
the family and give them contiguous group IDs. Then instead
of passing the global group ID to the various functions that
send messages, pass the ID relative to the family - for most
families that's just 0 because the only have one group.This avoids the list_head and ID in each group, adding a new
field for the mcast group ID offset to the family.At the same time, this allows us to prevent abusing groups
again like the quota and dropmon code did, since we can now
check that a family only uses a group it owns.Signed-off-by: Johannes Berg
Signed-off-by: David S. Miller -
This doesn't really change anything, but prepares for the
next patch that will change the APIs to pass the group ID
within the family, rather than the global group ID.Signed-off-by: Johannes Berg
Signed-off-by: David S. Miller -
There's no need to unregister the multicast group if the
generic netlink family is registered immediately after.Signed-off-by: Johannes Berg
Signed-off-by: David S. Miller -
As suggested by David Miller, make genl_register_family_with_ops()
a macro and pass only the array, evaluating ARRAY_SIZE() in the
macro, this is a little safer.The openvswitch has some indirection, assing ops/n_ops directly in
that code. This might ultimately just assign the pointers in the
family initializations, saving the struct genl_family_and_ops and
code (once mcast groups are handled differently.)Signed-off-by: Johannes Berg
Signed-off-by: David S. Miller
15 Nov, 2013
3 commits
-
If 'hsr_get_node_data()' returns error, going directly to 'fail' label
doesn't free the memory pointed by 'skb_out'.Signed-off-by: Geyslan G. Bem
Signed-off-by: David S. Miller -
Now that genl_ops are no longer modified in place when
registering, they can be made const. This patch was done
mostly with spatch:@@
identifier ops;
@@
+const
struct genl_ops ops[] = {
...
};(except the struct thing in net/openvswitch/datapath.c)
Signed-off-by: Johannes Berg
Signed-off-by: David S. Miller -
This simplifies the code since there's no longer a
need to have error handling in the registration.Signed-off-by: Johannes Berg
Signed-off-by: David S. Miller
04 Nov, 2013
1 commit
-
High-availability Seamless Redundancy ("HSR") provides instant failover
redundancy for Ethernet networks. It requires a special network topology where
all nodes are connected in a ring (each node having two physical network
interfaces). It is suited for applications that demand high availability and
very short reaction time.HSR acts on the Ethernet layer, using a registered Ethernet protocol type to
send special HSR frames in both directions over the ring. The driver creates
virtual network interfaces that can be used just like any ordinary Linux
network interface, for IP/TCP/UDP traffic etc. All nodes in the network ring
must be HSR capable.This code is a "best effort" to comply with the HSR standard as described in
IEC 62439-3:2010 (HSRv0).Signed-off-by: Arvid Brodin
Signed-off-by: David S. Miller