aboutsummaryrefslogtreecommitdiffstats
path: root/net/econet/af_econet.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/econet/af_econet.c')
-rw-r--r--net/econet/af_econet.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/net/econet/af_econet.c b/net/econet/af_econet.c
index 13992e1d2726..15dcc1a586b4 100644
--- a/net/econet/af_econet.c
+++ b/net/econet/af_econet.c
@@ -661,8 +661,10 @@ static int ec_dev_ioctl(struct socket *sock, unsigned int cmd, void __user *arg)
661 err = 0; 661 err = 0;
662 switch (cmd) { 662 switch (cmd) {
663 case SIOCSIFADDR: 663 case SIOCSIFADDR:
664 if (!capable(CAP_NET_ADMIN)) 664 if (!capable(CAP_NET_ADMIN)) {
665 return -EPERM; 665 err = -EPERM;
666 break;
667 }
666 668
667 edev = dev->ec_ptr; 669 edev = dev->ec_ptr;
668 if (edev == NULL) { 670 if (edev == NULL) {
@@ -849,9 +851,13 @@ static void aun_incoming(struct sk_buff *skb, struct aunhdr *ah, size_t len)
849{ 851{
850 struct iphdr *ip = ip_hdr(skb); 852 struct iphdr *ip = ip_hdr(skb);
851 unsigned char stn = ntohl(ip->saddr) & 0xff; 853 unsigned char stn = ntohl(ip->saddr) & 0xff;
854 struct dst_entry *dst = skb_dst(skb);
855 struct ec_device *edev = NULL;
852 struct sock *sk = NULL; 856 struct sock *sk = NULL;
853 struct sk_buff *newskb; 857 struct sk_buff *newskb;
854 struct ec_device *edev = skb->dev->ec_ptr; 858
859 if (dst)
860 edev = dst->dev->ec_ptr;
855 861
856 if (! edev) 862 if (! edev)
857 goto bad; 863 goto bad;