summaryrefslogtreecommitdiff
path: root/net/ipv4/fib_frontend.c
diff options
context:
space:
mode:
authorGreg Kroah-Hartman <gregkh@google.com>2017-06-07 12:36:01 +0200
committerGreg Kroah-Hartman <gregkh@google.com>2017-06-07 12:36:01 +0200
commit6fc0573f6daffb79bb6ea76daea17b99a3c4526a (patch)
treeacae9cc6aa81807fc64787502232976d047d64a6 /net/ipv4/fib_frontend.c
parent5c31a5e9a365d1111568ac0484c0dda0e4bd09fe (diff)
parent4bbbc769640554a216a25b2dbaa3d4d2869bbf79 (diff)
Merge 4.4.71 into android-4.4
Changes in 4.4.71 sparc: Fix -Wstringop-overflow warning dccp/tcp: do not inherit mc_list from parent ipv6/dccp: do not inherit ipv6_mc_list from parent s390/qeth: handle sysfs error during initialization s390/qeth: unbreak OSM and OSN support s390/qeth: avoid null pointer dereference on OSN tcp: avoid fragmenting peculiar skbs in SACK sctp: fix src address selection if using secondary addresses for ipv6 sctp: do not inherit ipv6_{mc|ac|fl}_list from parent tcp: eliminate negative reordering in tcp_clean_rtx_queue net: Improve handling of failures on link and route dumps ipv6: Prevent overrun when parsing v6 header options ipv6: Check ip6_find_1stfragopt() return value properly. bridge: netlink: check vlan_default_pvid range qmi_wwan: add another Lenovo EM74xx device ID bridge: start hello_timer when enabling KERNEL_STP in br_stp_start ipv6: fix out of bound writes in __ip6_append_data() be2net: Fix offload features for Q-in-Q packets virtio-net: enable TSO/checksum offloads for Q-in-Q vlans tcp: avoid fastopen API to be used on AF_UNSPEC sctp: fix ICMP processing if skb is non-linear ipv4: add reference counting to metrics netem: fix skb_orphan_partial() net: phy: marvell: Limit errata to 88m1101 vlan: Fix tcp checksum offloads in Q-in-Q vlans i2c: i2c-tiny-usb: fix buffer not being DMA capable mmc: sdhci-iproc: suppress spurious interrupt with Multiblock read HID: wacom: Have wacom_tpc_irq guard against possible NULL dereference scsi: mpt3sas: Force request partial completion alignment drm/radeon/ci: disable mclk switching for high refresh rates (v2) drm/radeon: Unbreak HPD handling for r600+ pcmcia: remove left-over %Z format ALSA: hda - apply STAC_9200_DELL_M22 quirk for Dell Latitude D430 slub/memcg: cure the brainless abuse of sysfs attributes drm/gma500/psb: Actually use VBT mode when it is found mm/migrate: fix refcount handling when !hugepage_migration_supported() mlock: fix mlock count can not decrease in race condition xfs: Fix missed holes in SEEK_HOLE implementation xfs: fix off-by-one on max nr_pages in xfs_find_get_desired_pgoff() xfs: fix over-copying of getbmap parameters from userspace xfs: handle array index overrun in xfs_dir2_leaf_readbuf() xfs: prevent multi-fsb dir readahead from reading random blocks xfs: fix up quotacheck buffer list error handling xfs: support ability to wait on new inodes xfs: update ag iterator to support wait on new inodes xfs: wait on new inodes during quotaoff dquot release xfs: fix indlen accounting error on partial delalloc conversion xfs: bad assertion for delalloc an extent that start at i_size xfs: fix unaligned access in xfs_btree_visit_blocks xfs: in _attrlist_by_handle, copy the cursor back to userspace xfs: only return -errno or success from attr ->put_listent Linux 4.4.71 Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Diffstat (limited to 'net/ipv4/fib_frontend.c')
-rw-r--r--net/ipv4/fib_frontend.c15
1 files changed, 11 insertions, 4 deletions
diff --git a/net/ipv4/fib_frontend.c b/net/ipv4/fib_frontend.c
index a353d1d92f01..7c4c881a7187 100644
--- a/net/ipv4/fib_frontend.c
+++ b/net/ipv4/fib_frontend.c
@@ -758,7 +758,7 @@ static int inet_dump_fib(struct sk_buff *skb, struct netlink_callback *cb)
unsigned int e = 0, s_e;
struct fib_table *tb;
struct hlist_head *head;
- int dumped = 0;
+ int dumped = 0, err;
if (nlmsg_len(cb->nlh) >= sizeof(struct rtmsg) &&
((struct rtmsg *) nlmsg_data(cb->nlh))->rtm_flags & RTM_F_CLONED)
@@ -778,20 +778,27 @@ static int inet_dump_fib(struct sk_buff *skb, struct netlink_callback *cb)
if (dumped)
memset(&cb->args[2], 0, sizeof(cb->args) -
2 * sizeof(cb->args[0]));
- if (fib_table_dump(tb, skb, cb) < 0)
- goto out;
+ err = fib_table_dump(tb, skb, cb);
+ if (err < 0) {
+ if (likely(skb->len))
+ goto out;
+
+ goto out_err;
+ }
dumped = 1;
next:
e++;
}
}
out:
+ err = skb->len;
+out_err:
rcu_read_unlock();
cb->args[1] = e;
cb->args[0] = h;
- return skb->len;
+ return err;
}
/* Prepare and feed intra-kernel routing request.