CC: [email protected] CC: Alison Schofield <[email protected]> CC: Vishal Verma <[email protected]> CC: Ira Weiny <[email protected]> CC: Ben Widawsky <[email protected]> CC: Dan Williams <[email protected]> CC: [email protected] TO: Dan Williams <[email protected]>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/cxl/cxl.git preview head: 41c2d219a2c8e14de644f4e953e0c57402c3e884 commit: 1bb1c2110c968b3fdca7b37afbd0594d8e82715e [32/60] cxl/core/port: Add switch port enumeration :::::: branch date: 2 weeks ago :::::: commit date: 2 weeks ago config: x86_64-randconfig-c022 (https://download.01.org/0day-ci/archive/20220209/[email protected]/config) compiler: gcc-9 (Debian 9.3.0-22) 9.3.0 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <[email protected]> Reported-by: Julia Lawall <[email protected]> cocci warnings: (new ones prefixed by >>) >> drivers/cxl/core/port.c:809:21-24: ERROR: port is NULL but dereferenced. vim +809 drivers/cxl/core/port.c 1bb1c2110c968b3 Dan Williams 2022-01-21 792 1bb1c2110c968b3 Dan Williams 2022-01-21 793 static void cxl_remove_ep(void *data) 1bb1c2110c968b3 Dan Williams 2022-01-21 794 { 1bb1c2110c968b3 Dan Williams 2022-01-21 795 struct cxl_memdev *cxlmd = data; 1bb1c2110c968b3 Dan Williams 2022-01-21 796 struct device *iter; 1bb1c2110c968b3 Dan Williams 2022-01-21 797 1bb1c2110c968b3 Dan Williams 2022-01-21 798 for (iter = &cxlmd->dev; iter; iter = grandparent(iter)) { 1bb1c2110c968b3 Dan Williams 2022-01-21 799 struct device *dport_dev = grandparent(iter); 1bb1c2110c968b3 Dan Williams 2022-01-21 800 struct cxl_port *port, *parent_port; 1bb1c2110c968b3 Dan Williams 2022-01-21 801 LIST_HEAD(reap_dports); 1bb1c2110c968b3 Dan Williams 2022-01-21 802 struct cxl_ep *ep; 1bb1c2110c968b3 Dan Williams 2022-01-21 803 1bb1c2110c968b3 Dan Williams 2022-01-21 804 if (!dport_dev) 1bb1c2110c968b3 Dan Williams 2022-01-21 805 break; 1bb1c2110c968b3 Dan Williams 2022-01-21 806 1bb1c2110c968b3 Dan Williams 2022-01-21 807 port = find_cxl_port(dport_dev); 1bb1c2110c968b3 Dan Williams 2022-01-21 808 if (!port || is_cxl_root(port)) { 1bb1c2110c968b3 Dan Williams 2022-01-21 @809 put_device(&port->dev); 1bb1c2110c968b3 Dan Williams 2022-01-21 810 continue; 1bb1c2110c968b3 Dan Williams 2022-01-21 811 } 1bb1c2110c968b3 Dan Williams 2022-01-21 812 1bb1c2110c968b3 Dan Williams 2022-01-21 813 parent_port = to_cxl_port(port->dev.parent); 1bb1c2110c968b3 Dan Williams 2022-01-21 814 cxl_device_lock(&parent_port->dev); 1bb1c2110c968b3 Dan Williams 2022-01-21 815 if (!parent_port->dev.driver) { 1bb1c2110c968b3 Dan Williams 2022-01-21 816 cxl_device_unlock(&parent_port->dev); 1bb1c2110c968b3 Dan Williams 2022-01-21 817 put_device(&port->dev); 1bb1c2110c968b3 Dan Williams 2022-01-21 818 continue; 1bb1c2110c968b3 Dan Williams 2022-01-21 819 } 1bb1c2110c968b3 Dan Williams 2022-01-21 820 1bb1c2110c968b3 Dan Williams 2022-01-21 821 cxl_device_lock(&port->dev); 1bb1c2110c968b3 Dan Williams 2022-01-21 822 ep = find_ep(port, &cxlmd->dev); 1bb1c2110c968b3 Dan Williams 2022-01-21 823 dev_dbg(&cxlmd->dev, "disconnect %s from %s\n", 1bb1c2110c968b3 Dan Williams 2022-01-21 824 ep ? dev_name(ep->ep) : "", dev_name(&port->dev)); 1bb1c2110c968b3 Dan Williams 2022-01-21 825 cxl_ep_release(ep); 1bb1c2110c968b3 Dan Williams 2022-01-21 826 if (ep && !port->dead && list_empty(&port->endpoints) && 1bb1c2110c968b3 Dan Williams 2022-01-21 827 !is_cxl_root(parent_port)) { 1bb1c2110c968b3 Dan Williams 2022-01-21 828 /* 1bb1c2110c968b3 Dan Williams 2022-01-21 829 * This was the last ep attached to a dynamically 1bb1c2110c968b3 Dan Williams 2022-01-21 830 * enumerated port. Block new cxl_add_ep() and garbage 1bb1c2110c968b3 Dan Williams 2022-01-21 831 * collect the port. 1bb1c2110c968b3 Dan Williams 2022-01-21 832 */ 1bb1c2110c968b3 Dan Williams 2022-01-21 833 port->dead = true; 1bb1c2110c968b3 Dan Williams 2022-01-21 834 list_splice_init(&port->dports, &reap_dports); 1bb1c2110c968b3 Dan Williams 2022-01-21 835 } 1bb1c2110c968b3 Dan Williams 2022-01-21 836 cxl_device_unlock(&port->dev); 1bb1c2110c968b3 Dan Williams 2022-01-21 837 1bb1c2110c968b3 Dan Williams 2022-01-21 838 if (!list_empty(&reap_dports)) 1bb1c2110c968b3 Dan Williams 2022-01-21 839 delete_switch_port(cxlmd, port, &reap_dports); 1bb1c2110c968b3 Dan Williams 2022-01-21 840 put_device(&port->dev); 1bb1c2110c968b3 Dan Williams 2022-01-21 841 cxl_device_unlock(&parent_port->dev); 1bb1c2110c968b3 Dan Williams 2022-01-21 842 } 1bb1c2110c968b3 Dan Williams 2022-01-21 843 } 1bb1c2110c968b3 Dan Williams 2022-01-21 844 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/[email protected] _______________________________________________ kbuild mailing list -- [email protected] To unsubscribe send an email to [email protected]
