summaryrefslogtreecommitdiffstats
path: root/net/6lowpan
diff options
context:
space:
mode:
authorJohn Hurley <john.hurley@netronome.com>2018-12-17 19:18:39 -0800
committerDavid S. Miller <davem@davemloft.net>2018-12-17 23:34:12 -0800
commitb12c97d45cd061862b79fe02aa41a73d685ec7a1 (patch)
treea48142f90ec4ffa6aa0beaa12d3dfa6027cfea22 /net/6lowpan
parentd1675a16029610505895b60fc3e96c9dbac02d97 (diff)
downloadlinux-b12c97d45cd061862b79fe02aa41a73d685ec7a1.tar.gz
linux-b12c97d45cd061862b79fe02aa41a73d685ec7a1.tar.bz2
linux-b12c97d45cd061862b79fe02aa41a73d685ec7a1.zip
nfp: flower: fix cb_ident duplicate in indirect block register
Previously the identifier used for indirect block callback registry and for block rule cb registry (when done via indirect blocks) was the pointer to the netdev we were interested in receiving updates on. This worked fine if a single app existed that registered one callback per netdev of interest. However, if multiple cards are in place and, in turn, multiple apps, then each app may register the same callback with the same identifier to both the netdev's indirect block cb list and to a block's cb list. This can lead to EEXIST errors and/or incorrect cb deletions. Prevent this conflict by using the app pointer as the identifier for netdev indirect block cb registry, allowing each app to register a unique callback per netdev. For block cb registry, the same app may register multiple cbs to the same block if using TC shared blocks. Instead of the app, use the pointer to the allocated cb_priv data as the identifier here. This means that there can be a unique block callback for each app/netdev combo. Fixes: 3166dd07a9cb ("nfp: flower: offload tunnel decap rules via indirect TC blocks") Reported-by: Edward Cree <ecree@solarflare.com> Signed-off-by: John Hurley <john.hurley@netronome.com> Reviewed-by: Jakub Kicinski <jakub.kicinski@netronome.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/6lowpan')
0 files changed, 0 insertions, 0 deletions