[rds-devel] [PATCH net-next] RDS: deliver zerocopy completion notification with data as an optimization
Dan Carpenter
dan.carpenter at oracle.com
Sun Feb 25 23:25:34 PST 2018
Hi Sowmini,
Thank you for the patch! Perhaps something to improve:
[auto build test WARNING on net-next/master]
url: https://github.com/0day-ci/linux/commits/Sowmini-Varadhan/RDS-deliver-zerocopy-completion-notification-with-data-as-an-optimization/20180222-194616
smatch warnings:
net/rds/recv.c:605 rds_recvmsg_zcookie() warn: variable dereferenced before check 'skb' (see line 596)
# https://github.com/0day-ci/linux/commit/da572c0179e420b5ca9939492e9b26c5fc57763a
git remote add linux-review https://github.com/0day-ci/linux
git remote update linux-review
git checkout da572c0179e420b5ca9939492e9b26c5fc57763a
vim +/skb +605 net/rds/recv.c
bdbe6fbc Andy Grover 2009-02-24 579
da572c01 Sowmini Varadhan 2018-02-21 580 static int rds_recvmsg_zcookie(struct rds_sock *rs, struct msghdr *msg)
da572c01 Sowmini Varadhan 2018-02-21 581 {
da572c01 Sowmini Varadhan 2018-02-21 582 struct sk_buff *skb, *tmp;
da572c01 Sowmini Varadhan 2018-02-21 583 struct sock_exterr_skb *serr;
da572c01 Sowmini Varadhan 2018-02-21 584 struct sock *sk = rds_rs_to_sk(rs);
da572c01 Sowmini Varadhan 2018-02-21 585 struct sk_buff_head *q = &sk->sk_error_queue;
da572c01 Sowmini Varadhan 2018-02-21 586 struct rds_zcopy_cookies done;
da572c01 Sowmini Varadhan 2018-02-21 587 u32 *ptr;
da572c01 Sowmini Varadhan 2018-02-21 588 int i;
da572c01 Sowmini Varadhan 2018-02-21 589 unsigned long flags;
da572c01 Sowmini Varadhan 2018-02-21 590
da572c01 Sowmini Varadhan 2018-02-21 591 spin_lock_irqsave(&q->lock, flags);
da572c01 Sowmini Varadhan 2018-02-21 592 if (skb_queue_empty(q)) {
da572c01 Sowmini Varadhan 2018-02-21 593 spin_unlock_irqrestore(&q->lock, flags);
da572c01 Sowmini Varadhan 2018-02-21 594 return 0;
da572c01 Sowmini Varadhan 2018-02-21 595 }
da572c01 Sowmini Varadhan 2018-02-21 @596 skb_queue_walk_safe(q, skb, tmp) {
da572c01 Sowmini Varadhan 2018-02-21 597 serr = SKB_EXT_ERR(skb);
da572c01 Sowmini Varadhan 2018-02-21 598 if (serr->ee.ee_origin == SO_EE_ORIGIN_ZCOOKIE) {
da572c01 Sowmini Varadhan 2018-02-21 599 __skb_unlink(skb, q);
da572c01 Sowmini Varadhan 2018-02-21 600 break;
da572c01 Sowmini Varadhan 2018-02-21 601 }
da572c01 Sowmini Varadhan 2018-02-21 602 }
da572c01 Sowmini Varadhan 2018-02-21 603 spin_unlock_irqrestore(&q->lock, flags);
da572c01 Sowmini Varadhan 2018-02-21 604
da572c01 Sowmini Varadhan 2018-02-21 @605 if (!skb)
da572c01 Sowmini Varadhan 2018-02-21 606 return 0;
da572c01 Sowmini Varadhan 2018-02-21 607 memset(&done, 0, sizeof(done));
da572c01 Sowmini Varadhan 2018-02-21 608 done.num = serr->ee.ee_data;
da572c01 Sowmini Varadhan 2018-02-21 609 ptr = (u32 *)skb->data;
da572c01 Sowmini Varadhan 2018-02-21 610 for (i = 0; i < done.num; i++)
da572c01 Sowmini Varadhan 2018-02-21 611 done.cookies[i] = *ptr++;
da572c01 Sowmini Varadhan 2018-02-21 612 put_cmsg(msg, SOL_RDS, RDS_CMSG_ZCOPY_COMPLETION, sizeof(done), &done);
da572c01 Sowmini Varadhan 2018-02-21 613 consume_skb(skb);
da572c01 Sowmini Varadhan 2018-02-21 614 return done.num;
da572c01 Sowmini Varadhan 2018-02-21 615 }
da572c01 Sowmini Varadhan 2018-02-21 616
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
More information about the rds-devel
mailing list