aboutsummaryrefslogtreecommitdiff
path: root/net/ipv6
diff options
context:
space:
mode:
authorAmit Pundir <amit.pundir@linaro.org>2015-03-15 13:09:33 +0530
committerAmit Pundir <amit.pundir@linaro.org>2015-03-15 13:09:33 +0530
commit81f8d49e4f2f38480d83ff53b5c426d8d12910e9 (patch)
tree36ce3e62821fe376fbec122206a836b59a5f7d86 /net/ipv6
parentecfe0b5f15b23de6fea4ed4d0bc9ef27c382c0cb (diff)
parent4be5c6a45a26cdfa7f6ad4a3c01cb69781f37535 (diff)
Merge branch 'android-3.10' of https://android.googlesource.com/kernel/common into linaro-android-3.10-lsk
* android-3.10: (40 commits) fs: ecryptfs: readdir: constify actor mm: reorder can_do_mlock to fix audit denial dm-verity: Add modes and emit uevent on corrupted blocks proc: make oom adjustment files user read-only Revert "Grants system server access to /proc/<pid>/oom_adj for Android applications." fs/proc/task_mmu.c: add user-space support for resetting mm->hiwater_rss (peak RSS) net: ping: Return EAFNOSUPPORT when appropriate. lz4: fix compression/decompression signedness mismatch lib: add lz4 compressor module decompressor: add LZ4 decompressor module Squashfs: Add LZ4 compression configuration option Squashfs: add LZ4 compression support fs/squashfs/super.c: logging cleanup fs/squashfs/file_direct.c: replace count*size kmalloc by kmalloc_array fs/squashfs/squashfs.h: replace pr_warning by pr_warn fs: push sync_filesystem() down to the file system's remount_fs() Squashfs: fix failure to unlock pages on decompress error Squashfs: Check stream is not NULL in decompressor_multi.c Squashfs: Directly decompress into the page cache for file data Squashfs: Restructure squashfs_readpage() ...
Diffstat (limited to 'net/ipv6')
-rw-r--r--net/ipv6/ip6mr.c2
-rw-r--r--net/ipv6/ping.c5
-rw-r--r--net/ipv6/route.c3
3 files changed, 7 insertions, 3 deletions
diff --git a/net/ipv6/ip6mr.c b/net/ipv6/ip6mr.c
index 241fb8ad9fcf..7a3bd3b26c38 100644
--- a/net/ipv6/ip6mr.c
+++ b/net/ipv6/ip6mr.c
@@ -693,7 +693,7 @@ static netdev_tx_t reg_vif_xmit(struct sk_buff *skb,
struct mr6_table *mrt;
struct flowi6 fl6 = {
.flowi6_oif = dev->ifindex,
- .flowi6_iif = skb->skb_iif,
+ .flowi6_iif = skb->skb_iif ? : LOOPBACK_IFINDEX,
.flowi6_mark = skb->mark,
};
int err;
diff --git a/net/ipv6/ping.c b/net/ipv6/ping.c
index 5f0d294b36cd..857201f4936f 100644
--- a/net/ipv6/ping.c
+++ b/net/ipv6/ping.c
@@ -126,9 +126,10 @@ int ping_v6_sendmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg,
if (msg->msg_name) {
struct sockaddr_in6 *u = (struct sockaddr_in6 *) msg->msg_name;
- if (msg->msg_namelen < sizeof(struct sockaddr_in6) ||
- u->sin6_family != AF_INET6) {
+ if (msg->msg_namelen < sizeof(*u))
return -EINVAL;
+ if (u->sin6_family != AF_INET6) {
+ return -EAFNOSUPPORT;
}
if (sk->sk_bound_dev_if &&
sk->sk_bound_dev_if != u->sin6_scope_id) {
diff --git a/net/ipv6/route.c b/net/ipv6/route.c
index bad36468dcd7..28a664d98745 100644
--- a/net/ipv6/route.c
+++ b/net/ipv6/route.c
@@ -2587,6 +2587,9 @@ static int inet6_rtm_getroute(struct sk_buff *in_skb, struct nlmsghdr* nlh)
if (tb[RTA_OIF])
oif = nla_get_u32(tb[RTA_OIF]);
+ if (tb[RTA_MARK])
+ fl6.flowi6_mark = nla_get_u32(tb[RTA_MARK]);
+
if (tb[RTA_UID])
fl6.flowi6_uid = make_kuid(current_user_ns(),
nla_get_u32(tb[RTA_UID]));