* [mkl-can-next:j1939 1/1] net/can/j1939/socket.c:707:2: error: too few arguments to function 'sock_tx_timestamp'
@ 2016-09-06 11:58 kbuild test robot
2016-09-06 11:58 ` [PATCH] can-j1939: fix memdup_user.cocci warnings kbuild test robot
2016-09-06 11:58 ` [PATCH] can-j1939: fix ifnullfree.cocci warnings kbuild test robot
0 siblings, 2 replies; 3+ messages in thread
From: kbuild test robot @ 2016-09-06 11:58 UTC (permalink / raw)
To: Kurt Van Dijck; +Cc: kbuild-all, linux-can, Marc Kleine-Budde
[-- Attachment #1: Type: text/plain, Size: 8653 bytes --]
tree: https://git.kernel.org/pub/scm/linux/kernel/git/mkl/linux-can-next.git j1939
head: 126ad77985046d48218f25ed6f18d06bf1fa78dd
commit: 126ad77985046d48218f25ed6f18d06bf1fa78dd [1/1] can-j1939: Import SAE J1939
config: i386-allmodconfig (attached as .config)
compiler: gcc-6 (Debian 6.1.1-9) 6.1.1 20160705
reproduce:
git checkout 126ad77985046d48218f25ed6f18d06bf1fa78dd
# save the attached .config to linux build tree
make ARCH=i386
All error/warnings (new ones prefixed by >>):
net/can/j1939/socket.c: In function 'j1939sk_sendmsg':
>> net/can/j1939/socket.c:707:24: warning: passing argument 2 of 'sock_tx_timestamp' makes integer from pointer without a cast [-Wint-conversion]
sock_tx_timestamp(sk, &skb_shinfo(skb)->tx_flags);
^
In file included from include/linux/can/skb.h:16:0,
from net/can/j1939/socket.c:22:
include/net/sock.h:2159:20: note: expected '__u16 {aka short unsigned int}' but argument is of type '__u8 * {aka unsigned char *}'
static inline void sock_tx_timestamp(const struct sock *sk, __u16 tsflags,
^~~~~~~~~~~~~~~~~
>> net/can/j1939/socket.c:707:2: error: too few arguments to function 'sock_tx_timestamp'
sock_tx_timestamp(sk, &skb_shinfo(skb)->tx_flags);
^~~~~~~~~~~~~~~~~
In file included from include/linux/can/skb.h:16:0,
from net/can/j1939/socket.c:22:
include/net/sock.h:2159:20: note: declared here
static inline void sock_tx_timestamp(const struct sock *sk, __u16 tsflags,
^~~~~~~~~~~~~~~~~
coccinelle warnings: (new ones prefixed by >>)
>> net/can/j1939/socket.c:528:3-8: WARNING: NULL check before freeing functions like kfree, debugfs_remove, debugfs_remove_recursive or usb_free_urb is not needed. Maybe consider reorganizing relevant code to avoid passing NULL values.
--
>> net/can/j1939/socket.c:510:13-20: WARNING opportunity for memdup_user
Please review and possibly fold the followup patch.
vim +/sock_tx_timestamp +707 net/can/j1939/socket.c
504 switch (optname) {
505 case SO_J1939_FILTER:
506 if (optval) {
507 if (optlen % sizeof(*filters) != 0)
508 return -EINVAL;
509 count = optlen / sizeof(*filters);
> 510 filters = kmalloc(optlen, GFP_KERNEL);
511 if (!filters)
512 return -ENOMEM;
513 if (copy_from_user(filters, optval, optlen)) {
514 kfree(filters);
515 return -EFAULT;
516 }
517 } else {
518 filters = NULL;
519 count = 0;
520 }
521
522 spin_lock_bh(&j1939_socks_lock);
523 ofilters = jsk->filters;
524 jsk->filters = filters;
525 jsk->nfilters = count;
526 spin_unlock_bh(&j1939_socks_lock);
527 if (ofilters)
> 528 kfree(ofilters);
529 return 0;
530 case SO_J1939_PROMISC:
531 return j1939sk_setsockopt_flag(jsk, optval, optlen, PROMISC);
532 case SO_J1939_RECV_OWN:
533 return j1939sk_setsockopt_flag(jsk, optval, optlen, RECV_OWN);
534 case SO_J1939_SEND_PRIO:
535 if (optlen != sizeof(tmp))
536 return -EINVAL;
537 if (copy_from_user(&tmp, optval, optlen))
538 return -EFAULT;
539 if ((tmp < 0) || (tmp > 7))
540 return -EDOM;
541 if ((tmp < 2) && !capable(CAP_NET_ADMIN))
542 return -EPERM;
543 lock_sock(&jsk->sk);
544 jsk->sk.sk_priority = j1939_to_sk_priority(tmp);
545 release_sock(&jsk->sk);
546 return 0;
547 default:
548 return -ENOPROTOOPT;
549 }
550 }
551
552 static int j1939sk_getsockopt(struct socket *sock, int level, int optname,
553 char __user *optval, int __user *optlen)
554 {
555 struct sock *sk = sock->sk;
556 struct j1939_sock *jsk = j1939_sk(sk);
557 int ret, ulen;
558 /* set defaults for using 'int' properties */
559 int tmp = 0;
560 int len = sizeof(tmp);
561 void *val = &tmp;
562
563 if (level != SOL_CAN_J1939)
564 return -EINVAL;
565 if (get_user(ulen, optlen))
566 return -EFAULT;
567 if (ulen < 0)
568 return -EINVAL;
569
570 lock_sock(&jsk->sk);
571 switch (optname) {
572 case SO_J1939_PROMISC:
573 tmp = (jsk->state & PROMISC) ? 1 : 0;
574 break;
575 case SO_J1939_RECV_OWN:
576 tmp = (jsk->state & RECV_OWN) ? 1 : 0;
577 break;
578 case SO_J1939_SEND_PRIO:
579 tmp = j1939_prio(jsk->sk.sk_priority);
580 break;
581 default:
582 ret = -ENOPROTOOPT;
583 goto no_copy;
584 }
585
586 /*
587 * copy to user, based on 'len' & 'val'
588 * but most sockopt's are 'int' properties, and have 'len' & 'val'
589 * left unchanged, but instead modified 'tmp'
590 */
591 if (len > ulen)
592 ret = -EFAULT;
593 else if (put_user(len, optlen))
594 ret = -EFAULT;
595 else if (copy_to_user(optval, val, len))
596 ret = -EFAULT;
597 else
598 ret = 0;
599 no_copy:
600 release_sock(&jsk->sk);
601 return ret;
602 }
603
604 static int j1939sk_recvmsg(struct socket *sock, struct msghdr *msg,
605 size_t size, int flags)
606 {
607 struct sock *sk = sock->sk;
608 struct sk_buff *skb;
609 struct j1939_sk_buff_cb *skcb;
610 int ret = 0;
611
612 skb = skb_recv_datagram(sk, flags, 0, &ret);
613 if (!skb)
614 return ret;
615
616 if (size < skb->len)
617 msg->msg_flags |= MSG_TRUNC;
618 else
619 size = skb->len;
620
621 ret = memcpy_to_msg(msg, skb->data, size);
622 if (ret < 0) {
623 skb_free_datagram(sk, skb);
624 return ret;
625 }
626
627 skcb = (void *)skb->cb;
628 if (j1939_address_is_valid(skcb->dstaddr))
629 put_cmsg(msg, SOL_CAN_J1939, SCM_J1939_DEST_ADDR,
630 sizeof(skcb->dstaddr), &skcb->dstaddr);
631
632 if (skcb->dstname)
633 put_cmsg(msg, SOL_CAN_J1939, SCM_J1939_DEST_NAME,
634 sizeof(skcb->dstname), &skcb->dstname);
635
636 put_cmsg(msg, SOL_CAN_J1939, SCM_J1939_PRIO,
637 sizeof(skcb->priority), &skcb->priority);
638
639 if (msg->msg_name) {
640 struct sockaddr_can *paddr = msg->msg_name;
641
642 msg->msg_namelen = J1939_MIN_NAMELEN;
643 memset(msg->msg_name, 0, msg->msg_namelen);
644 paddr->can_family = AF_CAN;
645 paddr->can_ifindex = skb->skb_iif;
646 paddr->can_addr.j1939.name = skcb->srcname;
647 paddr->can_addr.j1939.addr = skcb->srcaddr;
648 paddr->can_addr.j1939.pgn = skcb->pgn;
649 }
650
651 sock_recv_ts_and_drops(msg, sk, skb);
652 msg->msg_flags |= skcb->msg_flags;
653 skb_free_datagram(sk, skb);
654
655 return size;
656 }
657
658 static int j1939sk_sendmsg(struct socket *sock, struct msghdr *msg, size_t size)
659 {
660 struct sock *sk = sock->sk;
661 struct j1939_sock *jsk = j1939_sk(sk);
662 struct sockaddr_can *addr = msg->msg_name;
663 struct j1939_sk_buff_cb *skcb;
664 struct sk_buff *skb;
665 struct net_device *dev;
666 int ifindex;
667 int ret;
668
669 /* various socket state tests */
670 if (!(jsk->state & JSK_BOUND))
671 return -EBADFD;
672
673 ifindex = jsk->ifindex_started;
674 if (!ifindex)
675 return -EBADFD;
676
677 if (jsk->addr.sa == J1939_NO_ADDR && !jsk->addr.src)
678 /* no address assigned yet */
679 return -EBADFD;
680
681 /* deal with provided address info */
682 if (msg->msg_name) {
683 if (msg->msg_namelen < J1939_MIN_NAMELEN)
684 return -EINVAL;
685 if (addr->can_family != AF_CAN)
686 return -EINVAL;
687 if (addr->can_ifindex && (ifindex != addr->can_ifindex))
688 return -EBADFD;
689 }
690
691 dev = dev_get_by_index(&init_net, ifindex);
692 if (!dev)
693 return -ENXIO;
694
695 skb = sock_alloc_send_skb(sk, size + sizeof(struct can_frame) - sizeof(((struct can_frame*)NULL)->data) + sizeof(struct can_skb_priv),
696 msg->msg_flags & MSG_DONTWAIT, &ret);
697 if (!skb)
698 goto put_dev;
699
700 can_skb_reserve(skb);
701 can_skb_prv(skb)->ifindex = dev->ifindex;
702 skb_reserve(skb, offsetof(struct can_frame, data));
703
704 ret = memcpy_from_msg(skb_put(skb, size), msg, size);
705 if (ret < 0)
706 goto free_skb;
> 707 sock_tx_timestamp(sk, &skb_shinfo(skb)->tx_flags);
708
709 skb->dev = dev;
710
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
[-- Attachment #2: .config.gz --]
[-- Type: application/octet-stream, Size: 55086 bytes --]
^ permalink raw reply [flat|nested] 3+ messages in thread
* [PATCH] can-j1939: fix ifnullfree.cocci warnings
2016-09-06 11:58 [mkl-can-next:j1939 1/1] net/can/j1939/socket.c:707:2: error: too few arguments to function 'sock_tx_timestamp' kbuild test robot
2016-09-06 11:58 ` [PATCH] can-j1939: fix memdup_user.cocci warnings kbuild test robot
@ 2016-09-06 11:58 ` kbuild test robot
1 sibling, 0 replies; 3+ messages in thread
From: kbuild test robot @ 2016-09-06 11:58 UTC (permalink / raw)
To: Kurt Van Dijck; +Cc: kbuild-all, linux-can, Marc Kleine-Budde
net/can/j1939/socket.c:528:3-8: WARNING: NULL check before freeing functions like kfree, debugfs_remove, debugfs_remove_recursive or usb_free_urb is not needed. Maybe consider reorganizing relevant code to avoid passing NULL values.
NULL check before some freeing functions is not needed.
Based on checkpatch warning
"kfree(NULL) is safe this check is probably not required"
and kfreeaddr.cocci by Julia Lawall.
Generated by: scripts/coccinelle/free/ifnullfree.cocci
CC: Kurt Van Dijck <kurt.van.dijck@eia.be>
Signed-off-by: Fengguang Wu <fengguang.wu@intel.com>
---
socket.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
--- a/net/can/j1939/socket.c
+++ b/net/can/j1939/socket.c
@@ -524,8 +524,7 @@ static int j1939sk_setsockopt(struct soc
jsk->filters = filters;
jsk->nfilters = count;
spin_unlock_bh(&j1939_socks_lock);
- if (ofilters)
- kfree(ofilters);
+ kfree(ofilters);
return 0;
case SO_J1939_PROMISC:
return j1939sk_setsockopt_flag(jsk, optval, optlen, PROMISC);
^ permalink raw reply [flat|nested] 3+ messages in thread
* [PATCH] can-j1939: fix memdup_user.cocci warnings
2016-09-06 11:58 [mkl-can-next:j1939 1/1] net/can/j1939/socket.c:707:2: error: too few arguments to function 'sock_tx_timestamp' kbuild test robot
@ 2016-09-06 11:58 ` kbuild test robot
2016-09-06 11:58 ` [PATCH] can-j1939: fix ifnullfree.cocci warnings kbuild test robot
1 sibling, 0 replies; 3+ messages in thread
From: kbuild test robot @ 2016-09-06 11:58 UTC (permalink / raw)
To: Kurt Van Dijck; +Cc: kbuild-all, linux-can, Marc Kleine-Budde
net/can/j1939/socket.c:510:13-20: WARNING opportunity for memdup_user
Use memdup_user rather than duplicating its implementation
This is a little bit restricted to reduce false positives
Generated by: scripts/coccinelle/api/memdup_user.cocci
CC: Kurt Van Dijck <kurt.van.dijck@eia.be>
Signed-off-by: Fengguang Wu <fengguang.wu@intel.com>
---
0 files changed
rule starting on line 17: position variables or mixed modifs interfere with comm_assoc isobool (
(
(
(unknown *to == NULL)
>>> IS_ERR(rule starting on line 17:to)
|
!unknown *to
>>> IS_ERR(rule starting on line 17:to)
)
|
(unknown *NULL == unknown *to)
>>> IS_ERR(rule starting on line 17:to)
) || ...)
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2016-09-06 12:00 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-09-06 11:58 [mkl-can-next:j1939 1/1] net/can/j1939/socket.c:707:2: error: too few arguments to function 'sock_tx_timestamp' kbuild test robot
2016-09-06 11:58 ` [PATCH] can-j1939: fix memdup_user.cocci warnings kbuild test robot
2016-09-06 11:58 ` [PATCH] can-j1939: fix ifnullfree.cocci warnings kbuild test robot
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).