(cc Corey) On Sun, 22 Dec 2019 04:34:30 +0800 kbuild test robot <lkp@xxxxxxxxx> wrote: > tree: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master > head: 9f8535c5f75f0e23359962527dbfd31478b2cf16 > commit: 933639f5723a15a13e2105603de9e240bae2f546 [4314/4896] init/Kconfig: enable -O3 for all arches > config: alpha-randconfig-a001-20191222 (attached as .config) > compiler: alpha-linux-gcc (GCC) 7.5.0 > reproduce: > wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross > chmod +x ~/bin/make.cross > git checkout 933639f5723a15a13e2105603de9e240bae2f546 > # save the attached .config to linux build tree > GCC_VERSION=7.5.0 make.cross ARCH=alpha > > If you fix the issue, kindly add following tag > Reported-by: kbuild test robot <lkp@xxxxxxxxx> > > All warnings (new ones prefixed by >>): > > In file included from include/linux/string.h:20:0, > from include/linux/bitmap.h:9, > from include/linux/nodemask.h:95, > from include/linux/mmzone.h:17, > from include/linux/gfp.h:6, > from include/linux/umh.h:4, > from include/linux/kmod.h:9, > from include/linux/module.h:16, > from drivers/char/ipmi/ipmi_ssif.c:37: > drivers/char/ipmi/ipmi_ssif.c: In function 'msg_written_handler': > arch/alpha/include/asm/string.h:22:16: warning: argument 2 null where non-null expected [-Wnonnull] > #define memcpy __builtin_memcpy > >> drivers/char/ipmi/ipmi_ssif.c:781:3: note: in expansion of macro 'memcpy' > memcpy(msg->rsp, data, msg->rsp_size); > ^~~~~~ > arch/alpha/include/asm/string.h:22:16: note: in a call to built-in function '__builtin_memcpy' > #define memcpy __builtin_memcpy > >> drivers/char/ipmi/ipmi_ssif.c:781:3: note: in expansion of macro 'memcpy' > memcpy(msg->rsp, data, msg->rsp_size); > ^~~~~~ This looks like a false positive? msg_done_handler(ssif_info, -EIO, NULL, 0); I assume that NULL never gets to the memcpy. > fs/io_uring.c: In function 'io_link_timeout_fn > >> fs/io_uring.c:2831:2: warning: argument 2 null where non-null expected [-Wnonnull] > io_put_req_find_next(req, nxt); > ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > fs/io_uring.c:1036:13: note: in a call to function 'io_put_req_find_next' declared here > static void io_put_req_find_next(struct io_kiocb *req, struct io_kiocb **nxtptr) > ^~~~~~~~~~~~~~~~~~~~ > > vim +/memcpy +781 drivers/char/ipmi/ipmi_ssif.c > > 259307074bfcf1 Corey Minyard 2012-03-19 622 > 259307074bfcf1 Corey Minyard 2012-03-19 623 static void msg_done_handler(struct ssif_info *ssif_info, int result, > 259307074bfcf1 Corey Minyard 2012-03-19 624 unsigned char *data, unsigned int len) > 259307074bfcf1 Corey Minyard 2012-03-19 625 { > 259307074bfcf1 Corey Minyard 2012-03-19 626 struct ipmi_smi_msg *msg; > 259307074bfcf1 Corey Minyard 2012-03-19 627 unsigned long oflags, *flags; > 259307074bfcf1 Corey Minyard 2012-03-19 628 int rv; > 259307074bfcf1 Corey Minyard 2012-03-19 629 > 259307074bfcf1 Corey Minyard 2012-03-19 630 /* > 259307074bfcf1 Corey Minyard 2012-03-19 631 * We are single-threaded here, so no need for a lock until we > 259307074bfcf1 Corey Minyard 2012-03-19 632 * start messing with driver states or the queues. > 259307074bfcf1 Corey Minyard 2012-03-19 633 */ > 259307074bfcf1 Corey Minyard 2012-03-19 634 > 259307074bfcf1 Corey Minyard 2012-03-19 635 if (result < 0) { > 259307074bfcf1 Corey Minyard 2012-03-19 636 ssif_info->retries_left--; > 259307074bfcf1 Corey Minyard 2012-03-19 637 if (ssif_info->retries_left > 0) { > 259307074bfcf1 Corey Minyard 2012-03-19 638 ssif_inc_stat(ssif_info, receive_retries); > 259307074bfcf1 Corey Minyard 2012-03-19 639 > 9162052173d238 Corey Minyard 2015-04-24 640 flags = ipmi_ssif_lock_cond(ssif_info, &oflags); > 9162052173d238 Corey Minyard 2015-04-24 641 ssif_info->waiting_alert = true; > 9162052173d238 Corey Minyard 2015-04-24 642 ssif_info->rtc_us_timer = SSIF_MSG_USEC; > 0711e8c1b4572d Jan Glauber 2018-10-11 643 if (!ssif_info->stopping) > 259307074bfcf1 Corey Minyard 2012-03-19 644 mod_timer(&ssif_info->retry_timer, > 259307074bfcf1 Corey Minyard 2012-03-19 645 jiffies + SSIF_MSG_JIFFIES); > 9162052173d238 Corey Minyard 2015-04-24 646 ipmi_ssif_unlock_cond(ssif_info, flags); > 259307074bfcf1 Corey Minyard 2012-03-19 647 return; > 259307074bfcf1 Corey Minyard 2012-03-19 648 } > 259307074bfcf1 Corey Minyard 2012-03-19 649 > 259307074bfcf1 Corey Minyard 2012-03-19 650 ssif_inc_stat(ssif_info, receive_errors); > 259307074bfcf1 Corey Minyard 2012-03-19 651 > 259307074bfcf1 Corey Minyard 2012-03-19 652 if (ssif_info->ssif_debug & SSIF_DEBUG_MSG) > 83af41947c5cbd Corey Minyard 2018-11-27 653 dev_dbg(&ssif_info->client->dev, > 83af41947c5cbd Corey Minyard 2018-11-27 654 "%s: Error %d\n", __func__, result); > 259307074bfcf1 Corey Minyard 2012-03-19 655 len = 0; > 259307074bfcf1 Corey Minyard 2012-03-19 656 goto continue_op; > 259307074bfcf1 Corey Minyard 2012-03-19 657 } > 259307074bfcf1 Corey Minyard 2012-03-19 658 > 259307074bfcf1 Corey Minyard 2012-03-19 659 if ((len > 1) && (ssif_info->multi_pos == 0) > 259307074bfcf1 Corey Minyard 2012-03-19 660 && (data[0] == 0x00) && (data[1] == 0x01)) { > 259307074bfcf1 Corey Minyard 2012-03-19 661 /* Start of multi-part read. Start the next transaction. */ > 259307074bfcf1 Corey Minyard 2012-03-19 662 int i; > 259307074bfcf1 Corey Minyard 2012-03-19 663 > 259307074bfcf1 Corey Minyard 2012-03-19 664 ssif_inc_stat(ssif_info, received_message_parts); > 259307074bfcf1 Corey Minyard 2012-03-19 665 > 259307074bfcf1 Corey Minyard 2012-03-19 666 /* Remove the multi-part read marker. */ > 259307074bfcf1 Corey Minyard 2012-03-19 667 len -= 2; > 7d6380cd40f799 Corey Minyard 2018-11-16 668 data += 2; > 3d69d43baa2749 Corey Minyard 2015-04-29 669 for (i = 0; i < len; i++) > 7d6380cd40f799 Corey Minyard 2018-11-16 670 ssif_info->data[i] = data[i]; > 259307074bfcf1 Corey Minyard 2012-03-19 671 ssif_info->multi_len = len; > 259307074bfcf1 Corey Minyard 2012-03-19 672 ssif_info->multi_pos = 1; > 259307074bfcf1 Corey Minyard 2012-03-19 673 > 259307074bfcf1 Corey Minyard 2012-03-19 674 rv = ssif_i2c_send(ssif_info, msg_done_handler, I2C_SMBUS_READ, > 259307074bfcf1 Corey Minyard 2012-03-19 675 SSIF_IPMI_MULTI_PART_RESPONSE_MIDDLE, > 259307074bfcf1 Corey Minyard 2012-03-19 676 ssif_info->recv, I2C_SMBUS_BLOCK_DATA); > 259307074bfcf1 Corey Minyard 2012-03-19 677 if (rv < 0) { > 259307074bfcf1 Corey Minyard 2012-03-19 678 if (ssif_info->ssif_debug & SSIF_DEBUG_MSG) > 83af41947c5cbd Corey Minyard 2018-11-27 679 dev_dbg(&ssif_info->client->dev, > 83af41947c5cbd Corey Minyard 2018-11-27 680 "Error from i2c_non_blocking_op(1)\n"); > 259307074bfcf1 Corey Minyard 2012-03-19 681 > 259307074bfcf1 Corey Minyard 2012-03-19 682 result = -EIO; > 259307074bfcf1 Corey Minyard 2012-03-19 683 } else > 259307074bfcf1 Corey Minyard 2012-03-19 684 return; > 259307074bfcf1 Corey Minyard 2012-03-19 685 } else if (ssif_info->multi_pos) { > 259307074bfcf1 Corey Minyard 2012-03-19 686 /* Middle of multi-part read. Start the next transaction. */ > 259307074bfcf1 Corey Minyard 2012-03-19 687 int i; > 259307074bfcf1 Corey Minyard 2012-03-19 688 unsigned char blocknum; > 259307074bfcf1 Corey Minyard 2012-03-19 689 > 259307074bfcf1 Corey Minyard 2012-03-19 690 if (len == 0) { > 259307074bfcf1 Corey Minyard 2012-03-19 691 result = -EIO; > 259307074bfcf1 Corey Minyard 2012-03-19 692 if (ssif_info->ssif_debug & SSIF_DEBUG_MSG) > 83af41947c5cbd Corey Minyard 2018-11-27 693 dev_dbg(&ssif_info->client->dev, > 83af41947c5cbd Corey Minyard 2018-11-27 694 "Middle message with no data\n"); > 259307074bfcf1 Corey Minyard 2012-03-19 695 > 259307074bfcf1 Corey Minyard 2012-03-19 696 goto continue_op; > 259307074bfcf1 Corey Minyard 2012-03-19 697 } > 259307074bfcf1 Corey Minyard 2012-03-19 698 > 3d69d43baa2749 Corey Minyard 2015-04-29 699 blocknum = data[0]; > 7d6380cd40f799 Corey Minyard 2018-11-16 700 len--; > 7d6380cd40f799 Corey Minyard 2018-11-16 701 data++; > 7d6380cd40f799 Corey Minyard 2018-11-16 702 > 7d6380cd40f799 Corey Minyard 2018-11-16 703 if (blocknum != 0xff && len != 31) { > 7d6380cd40f799 Corey Minyard 2018-11-16 704 /* All blocks but the last must have 31 data bytes. */ > 7d6380cd40f799 Corey Minyard 2018-11-16 705 result = -EIO; > 7d6380cd40f799 Corey Minyard 2018-11-16 706 if (ssif_info->ssif_debug & SSIF_DEBUG_MSG) > 83af41947c5cbd Corey Minyard 2018-11-27 707 dev_dbg(&ssif_info->client->dev, > 83af41947c5cbd Corey Minyard 2018-11-27 708 "Received middle message <31\n"); > 259307074bfcf1 Corey Minyard 2012-03-19 709 > 7d6380cd40f799 Corey Minyard 2018-11-16 710 goto continue_op; > 7d6380cd40f799 Corey Minyard 2018-11-16 711 } > 7d6380cd40f799 Corey Minyard 2018-11-16 712 > 7d6380cd40f799 Corey Minyard 2018-11-16 713 if (ssif_info->multi_len + len > IPMI_MAX_MSG_LENGTH) { > 259307074bfcf1 Corey Minyard 2012-03-19 714 /* Received message too big, abort the operation. */ > 259307074bfcf1 Corey Minyard 2012-03-19 715 result = -E2BIG; > 259307074bfcf1 Corey Minyard 2012-03-19 716 if (ssif_info->ssif_debug & SSIF_DEBUG_MSG) > 83af41947c5cbd Corey Minyard 2018-11-27 717 dev_dbg(&ssif_info->client->dev, > 83af41947c5cbd Corey Minyard 2018-11-27 718 "Received message too big\n"); > 259307074bfcf1 Corey Minyard 2012-03-19 719 > 259307074bfcf1 Corey Minyard 2012-03-19 720 goto continue_op; > 259307074bfcf1 Corey Minyard 2012-03-19 721 } > 259307074bfcf1 Corey Minyard 2012-03-19 722 > 3d69d43baa2749 Corey Minyard 2015-04-29 723 for (i = 0; i < len; i++) > 7d6380cd40f799 Corey Minyard 2018-11-16 724 ssif_info->data[i + ssif_info->multi_len] = data[i]; > 259307074bfcf1 Corey Minyard 2012-03-19 725 ssif_info->multi_len += len; > 259307074bfcf1 Corey Minyard 2012-03-19 726 if (blocknum == 0xff) { > 259307074bfcf1 Corey Minyard 2012-03-19 727 /* End of read */ > 259307074bfcf1 Corey Minyard 2012-03-19 728 len = ssif_info->multi_len; > 259307074bfcf1 Corey Minyard 2012-03-19 729 data = ssif_info->data; > 55be8658c7e2fe Kamlakant Patel 2019-04-24 730 } else if (blocknum + 1 != ssif_info->multi_pos) { > 259307074bfcf1 Corey Minyard 2012-03-19 731 /* > 259307074bfcf1 Corey Minyard 2012-03-19 732 * Out of sequence block, just abort. Block > 259307074bfcf1 Corey Minyard 2012-03-19 733 * numbers start at zero for the second block, > 259307074bfcf1 Corey Minyard 2012-03-19 734 * but multi_pos starts at one, so the +1. > 259307074bfcf1 Corey Minyard 2012-03-19 735 */ > 55be8658c7e2fe Kamlakant Patel 2019-04-24 736 if (ssif_info->ssif_debug & SSIF_DEBUG_MSG) > 55be8658c7e2fe Kamlakant Patel 2019-04-24 737 dev_dbg(&ssif_info->client->dev, > 55be8658c7e2fe Kamlakant Patel 2019-04-24 738 "Received message out of sequence, expected %u, got %u\n", > 55be8658c7e2fe Kamlakant Patel 2019-04-24 739 ssif_info->multi_pos - 1, blocknum); > 259307074bfcf1 Corey Minyard 2012-03-19 740 result = -EIO; > 259307074bfcf1 Corey Minyard 2012-03-19 741 } else { > 259307074bfcf1 Corey Minyard 2012-03-19 742 ssif_inc_stat(ssif_info, received_message_parts); > 259307074bfcf1 Corey Minyard 2012-03-19 743 > 259307074bfcf1 Corey Minyard 2012-03-19 744 ssif_info->multi_pos++; > 259307074bfcf1 Corey Minyard 2012-03-19 745 > 259307074bfcf1 Corey Minyard 2012-03-19 746 rv = ssif_i2c_send(ssif_info, msg_done_handler, > 259307074bfcf1 Corey Minyard 2012-03-19 747 I2C_SMBUS_READ, > 259307074bfcf1 Corey Minyard 2012-03-19 748 SSIF_IPMI_MULTI_PART_RESPONSE_MIDDLE, > 259307074bfcf1 Corey Minyard 2012-03-19 749 ssif_info->recv, > 259307074bfcf1 Corey Minyard 2012-03-19 750 I2C_SMBUS_BLOCK_DATA); > 259307074bfcf1 Corey Minyard 2012-03-19 751 if (rv < 0) { > 259307074bfcf1 Corey Minyard 2012-03-19 752 if (ssif_info->ssif_debug & SSIF_DEBUG_MSG) > 83af41947c5cbd Corey Minyard 2018-11-27 753 dev_dbg(&ssif_info->client->dev, > 83af41947c5cbd Corey Minyard 2018-11-27 754 "Error from ssif_i2c_send\n"); > 259307074bfcf1 Corey Minyard 2012-03-19 755 > 259307074bfcf1 Corey Minyard 2012-03-19 756 result = -EIO; > 259307074bfcf1 Corey Minyard 2012-03-19 757 } else > 259307074bfcf1 Corey Minyard 2012-03-19 758 return; > 259307074bfcf1 Corey Minyard 2012-03-19 759 } > 259307074bfcf1 Corey Minyard 2012-03-19 760 } > 259307074bfcf1 Corey Minyard 2012-03-19 761 > 7d6380cd40f799 Corey Minyard 2018-11-16 762 continue_op: > 259307074bfcf1 Corey Minyard 2012-03-19 763 if (result < 0) { > 259307074bfcf1 Corey Minyard 2012-03-19 764 ssif_inc_stat(ssif_info, receive_errors); > 259307074bfcf1 Corey Minyard 2012-03-19 765 } else { > 259307074bfcf1 Corey Minyard 2012-03-19 766 ssif_inc_stat(ssif_info, received_messages); > 259307074bfcf1 Corey Minyard 2012-03-19 767 ssif_inc_stat(ssif_info, received_message_parts); > 259307074bfcf1 Corey Minyard 2012-03-19 768 } > 259307074bfcf1 Corey Minyard 2012-03-19 769 > 259307074bfcf1 Corey Minyard 2012-03-19 770 if (ssif_info->ssif_debug & SSIF_DEBUG_STATE) > 83af41947c5cbd Corey Minyard 2018-11-27 771 dev_dbg(&ssif_info->client->dev, > 83af41947c5cbd Corey Minyard 2018-11-27 772 "DONE 1: state = %d, result=%d\n", > 259307074bfcf1 Corey Minyard 2012-03-19 773 ssif_info->ssif_state, result); > 259307074bfcf1 Corey Minyard 2012-03-19 774 > 259307074bfcf1 Corey Minyard 2012-03-19 775 flags = ipmi_ssif_lock_cond(ssif_info, &oflags); > 259307074bfcf1 Corey Minyard 2012-03-19 776 msg = ssif_info->curr_msg; > 259307074bfcf1 Corey Minyard 2012-03-19 777 if (msg) { > 259307074bfcf1 Corey Minyard 2012-03-19 778 msg->rsp_size = len; > 259307074bfcf1 Corey Minyard 2012-03-19 779 if (msg->rsp_size > IPMI_MAX_MSG_LENGTH) > 259307074bfcf1 Corey Minyard 2012-03-19 780 msg->rsp_size = IPMI_MAX_MSG_LENGTH; > 259307074bfcf1 Corey Minyard 2012-03-19 @781 memcpy(msg->rsp, data, msg->rsp_size); > 259307074bfcf1 Corey Minyard 2012-03-19 782 ssif_info->curr_msg = NULL; > 259307074bfcf1 Corey Minyard 2012-03-19 783 } > 259307074bfcf1 Corey Minyard 2012-03-19 784 > 259307074bfcf1 Corey Minyard 2012-03-19 785 switch (ssif_info->ssif_state) { > 259307074bfcf1 Corey Minyard 2012-03-19 786 case SSIF_NORMAL: > 259307074bfcf1 Corey Minyard 2012-03-19 787 ipmi_ssif_unlock_cond(ssif_info, flags); > 259307074bfcf1 Corey Minyard 2012-03-19 788 if (!msg) > 259307074bfcf1 Corey Minyard 2012-03-19 789 break; > 259307074bfcf1 Corey Minyard 2012-03-19 790 > 259307074bfcf1 Corey Minyard 2012-03-19 791 if (result < 0) > 259307074bfcf1 Corey Minyard 2012-03-19 792 return_hosed_msg(ssif_info, msg); > 259307074bfcf1 Corey Minyard 2012-03-19 793 else > 259307074bfcf1 Corey Minyard 2012-03-19 794 deliver_recv_msg(ssif_info, msg); > 259307074bfcf1 Corey Minyard 2012-03-19 795 break; > 259307074bfcf1 Corey Minyard 2012-03-19 796 > 259307074bfcf1 Corey Minyard 2012-03-19 797 case SSIF_GETTING_FLAGS: > 259307074bfcf1 Corey Minyard 2012-03-19 798 /* We got the flags from the SSIF, now handle them. */ > 259307074bfcf1 Corey Minyard 2012-03-19 799 if ((result < 0) || (len < 4) || (data[2] != 0)) { > 259307074bfcf1 Corey Minyard 2012-03-19 800 /* > 259307074bfcf1 Corey Minyard 2012-03-19 801 * Error fetching flags, or invalid length, > 259307074bfcf1 Corey Minyard 2012-03-19 802 * just give up for now. > 259307074bfcf1 Corey Minyard 2012-03-19 803 */ > 259307074bfcf1 Corey Minyard 2012-03-19 804 ssif_info->ssif_state = SSIF_NORMAL; > 259307074bfcf1 Corey Minyard 2012-03-19 805 ipmi_ssif_unlock_cond(ssif_info, flags); > 83af41947c5cbd Corey Minyard 2018-11-27 806 dev_warn(&ssif_info->client->dev, > 83af41947c5cbd Corey Minyard 2018-11-27 807 "Error getting flags: %d %d, %x\n", > f002612b9d8661 Kamlakant Patel 2018-03-13 808 result, len, (len >= 3) ? data[2] : 0); > 259307074bfcf1 Corey Minyard 2012-03-19 809 } else if (data[0] != (IPMI_NETFN_APP_REQUEST | 1) << 2 > 259307074bfcf1 Corey Minyard 2012-03-19 810 || data[1] != IPMI_GET_MSG_FLAGS_CMD) { > 4495ec6d770e1b Corey Minyard 2017-06-30 811 /* > 4495ec6d770e1b Corey Minyard 2017-06-30 812 * Don't abort here, maybe it was a queued > 4495ec6d770e1b Corey Minyard 2017-06-30 813 * response to a previous command. > 4495ec6d770e1b Corey Minyard 2017-06-30 814 */ > 4495ec6d770e1b Corey Minyard 2017-06-30 815 ipmi_ssif_unlock_cond(ssif_info, flags); > 83af41947c5cbd Corey Minyard 2018-11-27 816 dev_warn(&ssif_info->client->dev, > 83af41947c5cbd Corey Minyard 2018-11-27 817 "Invalid response getting flags: %x %x\n", > 259307074bfcf1 Corey Minyard 2012-03-19 818 data[0], data[1]); > 259307074bfcf1 Corey Minyard 2012-03-19 819 } else { > 259307074bfcf1 Corey Minyard 2012-03-19 820 ssif_inc_stat(ssif_info, flag_fetches); > 259307074bfcf1 Corey Minyard 2012-03-19 821 ssif_info->msg_flags = data[3]; > 259307074bfcf1 Corey Minyard 2012-03-19 822 handle_flags(ssif_info, flags); > 259307074bfcf1 Corey Minyard 2012-03-19 823 } > 259307074bfcf1 Corey Minyard 2012-03-19 824 break; > 259307074bfcf1 Corey Minyard 2012-03-19 825 > 259307074bfcf1 Corey Minyard 2012-03-19 826 case SSIF_CLEARING_FLAGS: > 259307074bfcf1 Corey Minyard 2012-03-19 827 /* We cleared the flags. */ > 259307074bfcf1 Corey Minyard 2012-03-19 828 if ((result < 0) || (len < 3) || (data[2] != 0)) { > 259307074bfcf1 Corey Minyard 2012-03-19 829 /* Error clearing flags */ > 83af41947c5cbd Corey Minyard 2018-11-27 830 dev_warn(&ssif_info->client->dev, > 83af41947c5cbd Corey Minyard 2018-11-27 831 "Error clearing flags: %d %d, %x\n", > f002612b9d8661 Kamlakant Patel 2018-03-13 832 result, len, (len >= 3) ? data[2] : 0); > 259307074bfcf1 Corey Minyard 2012-03-19 833 } else if (data[0] != (IPMI_NETFN_APP_REQUEST | 1) << 2 > 259307074bfcf1 Corey Minyard 2012-03-19 834 || data[1] != IPMI_CLEAR_MSG_FLAGS_CMD) { > 83af41947c5cbd Corey Minyard 2018-11-27 835 dev_warn(&ssif_info->client->dev, > 83af41947c5cbd Corey Minyard 2018-11-27 836 "Invalid response clearing flags: %x %x\n", > 259307074bfcf1 Corey Minyard 2012-03-19 837 data[0], data[1]); > 259307074bfcf1 Corey Minyard 2012-03-19 838 } > 259307074bfcf1 Corey Minyard 2012-03-19 839 ssif_info->ssif_state = SSIF_NORMAL; > 259307074bfcf1 Corey Minyard 2012-03-19 840 ipmi_ssif_unlock_cond(ssif_info, flags); > 259307074bfcf1 Corey Minyard 2012-03-19 841 break; > 259307074bfcf1 Corey Minyard 2012-03-19 842 > 259307074bfcf1 Corey Minyard 2012-03-19 843 case SSIF_GETTING_EVENTS: > 259307074bfcf1 Corey Minyard 2012-03-19 844 if ((result < 0) || (len < 3) || (msg->rsp[2] != 0)) { > 259307074bfcf1 Corey Minyard 2012-03-19 845 /* Error getting event, probably done. */ > 259307074bfcf1 Corey Minyard 2012-03-19 846 msg->done(msg); > 259307074bfcf1 Corey Minyard 2012-03-19 847 > 259307074bfcf1 Corey Minyard 2012-03-19 848 /* Take off the event flag. */ > 259307074bfcf1 Corey Minyard 2012-03-19 849 ssif_info->msg_flags &= ~EVENT_MSG_BUFFER_FULL; > 259307074bfcf1 Corey Minyard 2012-03-19 850 handle_flags(ssif_info, flags); > 259307074bfcf1 Corey Minyard 2012-03-19 851 } else if (msg->rsp[0] != (IPMI_NETFN_APP_REQUEST | 1) << 2 > 259307074bfcf1 Corey Minyard 2012-03-19 852 || msg->rsp[1] != IPMI_READ_EVENT_MSG_BUFFER_CMD) { > 83af41947c5cbd Corey Minyard 2018-11-27 853 dev_warn(&ssif_info->client->dev, > 83af41947c5cbd Corey Minyard 2018-11-27 854 "Invalid response getting events: %x %x\n", > 259307074bfcf1 Corey Minyard 2012-03-19 855 msg->rsp[0], msg->rsp[1]); > 259307074bfcf1 Corey Minyard 2012-03-19 856 msg->done(msg); > 259307074bfcf1 Corey Minyard 2012-03-19 857 /* Take off the event flag. */ > 259307074bfcf1 Corey Minyard 2012-03-19 858 ssif_info->msg_flags &= ~EVENT_MSG_BUFFER_FULL; > 259307074bfcf1 Corey Minyard 2012-03-19 859 handle_flags(ssif_info, flags); > 259307074bfcf1 Corey Minyard 2012-03-19 860 } else { > 259307074bfcf1 Corey Minyard 2012-03-19 861 handle_flags(ssif_info, flags); > 259307074bfcf1 Corey Minyard 2012-03-19 862 ssif_inc_stat(ssif_info, events); > 259307074bfcf1 Corey Minyard 2012-03-19 863 deliver_recv_msg(ssif_info, msg); > 259307074bfcf1 Corey Minyard 2012-03-19 864 } > 259307074bfcf1 Corey Minyard 2012-03-19 865 break; > 259307074bfcf1 Corey Minyard 2012-03-19 866 > 259307074bfcf1 Corey Minyard 2012-03-19 867 case SSIF_GETTING_MESSAGES: > 259307074bfcf1 Corey Minyard 2012-03-19 868 if ((result < 0) || (len < 3) || (msg->rsp[2] != 0)) { > 259307074bfcf1 Corey Minyard 2012-03-19 869 /* Error getting event, probably done. */ > 259307074bfcf1 Corey Minyard 2012-03-19 870 msg->done(msg); > 259307074bfcf1 Corey Minyard 2012-03-19 871 > 259307074bfcf1 Corey Minyard 2012-03-19 872 /* Take off the msg flag. */ > 259307074bfcf1 Corey Minyard 2012-03-19 873 ssif_info->msg_flags &= ~RECEIVE_MSG_AVAIL; > 259307074bfcf1 Corey Minyard 2012-03-19 874 handle_flags(ssif_info, flags); > 259307074bfcf1 Corey Minyard 2012-03-19 875 } else if (msg->rsp[0] != (IPMI_NETFN_APP_REQUEST | 1) << 2 > 259307074bfcf1 Corey Minyard 2012-03-19 876 || msg->rsp[1] != IPMI_GET_MSG_CMD) { > 83af41947c5cbd Corey Minyard 2018-11-27 877 dev_warn(&ssif_info->client->dev, > 83af41947c5cbd Corey Minyard 2018-11-27 878 "Invalid response clearing flags: %x %x\n", > 259307074bfcf1 Corey Minyard 2012-03-19 879 msg->rsp[0], msg->rsp[1]); > 259307074bfcf1 Corey Minyard 2012-03-19 880 msg->done(msg); > 259307074bfcf1 Corey Minyard 2012-03-19 881 > 259307074bfcf1 Corey Minyard 2012-03-19 882 /* Take off the msg flag. */ > 259307074bfcf1 Corey Minyard 2012-03-19 883 ssif_info->msg_flags &= ~RECEIVE_MSG_AVAIL; > 259307074bfcf1 Corey Minyard 2012-03-19 884 handle_flags(ssif_info, flags); > 259307074bfcf1 Corey Minyard 2012-03-19 885 } else { > 259307074bfcf1 Corey Minyard 2012-03-19 886 ssif_inc_stat(ssif_info, incoming_messages); > 259307074bfcf1 Corey Minyard 2012-03-19 887 handle_flags(ssif_info, flags); > 259307074bfcf1 Corey Minyard 2012-03-19 888 deliver_recv_msg(ssif_info, msg); > 259307074bfcf1 Corey Minyard 2012-03-19 889 } > 259307074bfcf1 Corey Minyard 2012-03-19 890 break; > 259307074bfcf1 Corey Minyard 2012-03-19 891 } > 259307074bfcf1 Corey Minyard 2012-03-19 892 > 259307074bfcf1 Corey Minyard 2012-03-19 893 flags = ipmi_ssif_lock_cond(ssif_info, &oflags); > 259307074bfcf1 Corey Minyard 2012-03-19 894 if (SSIF_IDLE(ssif_info) && !ssif_info->stopping) { > 259307074bfcf1 Corey Minyard 2012-03-19 895 if (ssif_info->req_events) > 259307074bfcf1 Corey Minyard 2012-03-19 896 start_event_fetch(ssif_info, flags); > 259307074bfcf1 Corey Minyard 2012-03-19 897 else if (ssif_info->req_flags) > 259307074bfcf1 Corey Minyard 2012-03-19 898 start_flag_fetch(ssif_info, flags); > 259307074bfcf1 Corey Minyard 2012-03-19 899 else > 259307074bfcf1 Corey Minyard 2012-03-19 900 start_next_msg(ssif_info, flags); > 259307074bfcf1 Corey Minyard 2012-03-19 901 } else > 259307074bfcf1 Corey Minyard 2012-03-19 902 ipmi_ssif_unlock_cond(ssif_info, flags); > 259307074bfcf1 Corey Minyard 2012-03-19 903 > 259307074bfcf1 Corey Minyard 2012-03-19 904 if (ssif_info->ssif_debug & SSIF_DEBUG_STATE) > 83af41947c5cbd Corey Minyard 2018-11-27 905 dev_dbg(&ssif_info->client->dev, > 83af41947c5cbd Corey Minyard 2018-11-27 906 "DONE 2: state = %d.\n", ssif_info->ssif_state); > 259307074bfcf1 Corey Minyard 2012-03-19 907 } > 259307074bfcf1 Corey Minyard 2012-03-19 908 > > :::::: The code at line 781 was first introduced by commit > :::::: 259307074bfcf1ff88016e12c68f057aee6cb694 ipmi: Add SMBus interface driver (SSIF) > > :::::: TO: Corey Minyard <cminyard@xxxxxxxxxx> > :::::: CC: Corey Minyard <cminyard@xxxxxxxxxx> > > --- > 0-DAY kernel test infrastructure Open Source Technology Center > https://lists.01.org/hyperkitty/list/kbuild-all@xxxxxxxxxxxx Intel Corporation