From 08ffa65ed5b2cabdeb0c661ab63a37357de032f0 Mon Sep 17 00:00:00 2001 From: Andrey Vagin Date: Thu, 29 Nov 2012 17:43:32 +0400 Subject: [PATCH] socket: don't fail if DIAG_SHUTDOWN is absent A error message is printed. We want to save ability to try crtools on non C/R kernel. Signed-off-by: Andrey Vagin Signed-off-by: Pavel Emelyanov --- sk-inet.c | 11 +++++------ sk-unix.c | 10 ++++------ 2 files changed, 9 insertions(+), 12 deletions(-) diff --git a/sk-inet.c b/sk-inet.c index f425704fd..19a413b6c 100644 --- a/sk-inet.c +++ b/sk-inet.c @@ -345,11 +345,6 @@ int inet_collect_one(struct nlmsghdr *h, int family, int type, int proto) parse_rtattr(tb, INET_DIAG_MAX, (struct rtattr *)(m + 1), h->nlmsg_len - NLMSG_LENGTH(sizeof(*m))); - if (!tb[INET_DIAG_SHUTDOWN]) { - pr_err("Can't check shutdown state of inet socket\n"); - return -1; - } - d = xzalloc(sizeof(*d)); if (!d) return -1; @@ -363,7 +358,11 @@ int inet_collect_one(struct nlmsghdr *h, int family, int type, int proto) d->wqlen = m->idiag_wqueue; memcpy(d->src_addr, m->id.idiag_src, sizeof(u32) * 4); memcpy(d->dst_addr, m->id.idiag_dst, sizeof(u32) * 4); - d->shutdown = *(u8 *)RTA_DATA(tb[INET_DIAG_SHUTDOWN]); + + if (tb[INET_DIAG_SHUTDOWN]) + d->shutdown = *(u8 *)RTA_DATA(tb[INET_DIAG_SHUTDOWN]); + else + pr_err_once("Can't check shutdown state of inet socket\n"); ret = sk_collect_one(m->idiag_inode, family, &d->sd); diff --git a/sk-unix.c b/sk-unix.c index 9fea468df..b2081fb72 100644 --- a/sk-unix.c +++ b/sk-unix.c @@ -262,12 +262,10 @@ static int unix_collect_one(const struct unix_diag_msg *m, d->state = m->udiag_state; INIT_LIST_HEAD(&d->list); - if (!tb[UNIX_DIAG_SHUTDOWN]) { - pr_err("No socket shutdown info\n"); - goto err; - } - - d->shutdown = *(u8 *)RTA_DATA(tb[UNIX_DIAG_SHUTDOWN]); + if (tb[UNIX_DIAG_SHUTDOWN]) + d->shutdown = *(u8 *)RTA_DATA(tb[UNIX_DIAG_SHUTDOWN]); + else + pr_err_once("No socket shutdown info\n"); if (tb[UNIX_DIAG_PEER]) d->peer_ino = *(int *)RTA_DATA(tb[UNIX_DIAG_PEER]);