Hi YueHaibing, Thank you for the patch! Yet something to improve: [auto build test ERROR on next-20210219] url: https://github.com/0day-ci/linux/commits/YueHaibing/IB-mlx5-Add-missing-error-code/20210222-162815 base: abaf6f60176f1ae9d946d63e4db63164600b7b1a config: arc-allyesconfig (attached as .config) compiler: arceb-elf-gcc (GCC) 9.3.0 reproduce (this is a W=1 build): wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # https://github.com/0day-ci/linux/commit/893d2d872d109265f4b7419499d5de46c47895a7 git remote add linux-review https://github.com/0day-ci/linux git fetch --no-tags linux-review YueHaibing/IB-mlx5-Add-missing-error-code/20210222-162815 git checkout 893d2d872d109265f4b7419499d5de46c47895a7 # save the attached .config to linux build tree COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=arc If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <lkp@xxxxxxxxx> All errors (new ones prefixed by >>): drivers/infiniband/hw/mlx5/devx.c: In function 'mlx5_ib_handler_MLX5_IB_METHOD_DEVX_SUBSCRIBE_EVENT': >> drivers/infiniband/hw/mlx5/devx.c:2078:4: error: expected ';' before 'goto' 2078 | goto err; | ^~~~ vim +2078 drivers/infiniband/hw/mlx5/devx.c 7597385371425f Yishai Hadas 2019-06-30 1971 7597385371425f Yishai Hadas 2019-06-30 1972 #define MAX_NUM_EVENTS 16 7597385371425f Yishai Hadas 2019-06-30 1973 static int UVERBS_HANDLER(MLX5_IB_METHOD_DEVX_SUBSCRIBE_EVENT)( 7597385371425f Yishai Hadas 2019-06-30 1974 struct uverbs_attr_bundle *attrs) 7597385371425f Yishai Hadas 2019-06-30 1975 { 7597385371425f Yishai Hadas 2019-06-30 1976 struct ib_uobject *devx_uobj = uverbs_attr_get_uobject( 7597385371425f Yishai Hadas 2019-06-30 1977 attrs, 7597385371425f Yishai Hadas 2019-06-30 1978 MLX5_IB_ATTR_DEVX_SUBSCRIBE_EVENT_OBJ_HANDLE); 7597385371425f Yishai Hadas 2019-06-30 1979 struct mlx5_ib_ucontext *c = rdma_udata_to_drv_context( 7597385371425f Yishai Hadas 2019-06-30 1980 &attrs->driver_udata, struct mlx5_ib_ucontext, ibucontext); 7597385371425f Yishai Hadas 2019-06-30 1981 struct mlx5_ib_dev *dev = to_mdev(c->ibucontext.device); 7597385371425f Yishai Hadas 2019-06-30 1982 struct ib_uobject *fd_uobj; 7597385371425f Yishai Hadas 2019-06-30 1983 struct devx_obj *obj = NULL; 7597385371425f Yishai Hadas 2019-06-30 1984 struct devx_async_event_file *ev_file; 7597385371425f Yishai Hadas 2019-06-30 1985 struct mlx5_devx_event_table *devx_event_table = &dev->devx_event_table; 7597385371425f Yishai Hadas 2019-06-30 1986 u16 *event_type_num_list; 7597385371425f Yishai Hadas 2019-06-30 1987 struct devx_event_subscription *event_sub, *tmp_sub; 7597385371425f Yishai Hadas 2019-06-30 1988 struct list_head sub_list; 7597385371425f Yishai Hadas 2019-06-30 1989 int redirect_fd; 7597385371425f Yishai Hadas 2019-06-30 1990 bool use_eventfd = false; 7597385371425f Yishai Hadas 2019-06-30 1991 int num_events; 7597385371425f Yishai Hadas 2019-06-30 1992 int num_alloc_xa_entries = 0; 7597385371425f Yishai Hadas 2019-06-30 1993 u16 obj_type = 0; 7597385371425f Yishai Hadas 2019-06-30 1994 u64 cookie = 0; 7597385371425f Yishai Hadas 2019-06-30 1995 u32 obj_id = 0; 7597385371425f Yishai Hadas 2019-06-30 1996 int err; 7597385371425f Yishai Hadas 2019-06-30 1997 int i; 7597385371425f Yishai Hadas 2019-06-30 1998 7597385371425f Yishai Hadas 2019-06-30 1999 if (!c->devx_uid) 7597385371425f Yishai Hadas 2019-06-30 2000 return -EINVAL; 7597385371425f Yishai Hadas 2019-06-30 2001 7597385371425f Yishai Hadas 2019-06-30 2002 if (!IS_ERR(devx_uobj)) { 7597385371425f Yishai Hadas 2019-06-30 2003 obj = (struct devx_obj *)devx_uobj->object; 7597385371425f Yishai Hadas 2019-06-30 2004 if (obj) 7597385371425f Yishai Hadas 2019-06-30 2005 obj_id = get_dec_obj_id(obj->obj_id); 7597385371425f Yishai Hadas 2019-06-30 2006 } 7597385371425f Yishai Hadas 2019-06-30 2007 7597385371425f Yishai Hadas 2019-06-30 2008 fd_uobj = uverbs_attr_get_uobject(attrs, 7597385371425f Yishai Hadas 2019-06-30 2009 MLX5_IB_ATTR_DEVX_SUBSCRIBE_EVENT_FD_HANDLE); 7597385371425f Yishai Hadas 2019-06-30 2010 if (IS_ERR(fd_uobj)) 7597385371425f Yishai Hadas 2019-06-30 2011 return PTR_ERR(fd_uobj); 7597385371425f Yishai Hadas 2019-06-30 2012 7597385371425f Yishai Hadas 2019-06-30 2013 ev_file = container_of(fd_uobj, struct devx_async_event_file, 7597385371425f Yishai Hadas 2019-06-30 2014 uobj); 7597385371425f Yishai Hadas 2019-06-30 2015 7597385371425f Yishai Hadas 2019-06-30 2016 if (uverbs_attr_is_valid(attrs, 7597385371425f Yishai Hadas 2019-06-30 2017 MLX5_IB_ATTR_DEVX_SUBSCRIBE_EVENT_FD_NUM)) { 7597385371425f Yishai Hadas 2019-06-30 2018 err = uverbs_copy_from(&redirect_fd, attrs, 7597385371425f Yishai Hadas 2019-06-30 2019 MLX5_IB_ATTR_DEVX_SUBSCRIBE_EVENT_FD_NUM); 7597385371425f Yishai Hadas 2019-06-30 2020 if (err) 7597385371425f Yishai Hadas 2019-06-30 2021 return err; 7597385371425f Yishai Hadas 2019-06-30 2022 7597385371425f Yishai Hadas 2019-06-30 2023 use_eventfd = true; 7597385371425f Yishai Hadas 2019-06-30 2024 } 7597385371425f Yishai Hadas 2019-06-30 2025 7597385371425f Yishai Hadas 2019-06-30 2026 if (uverbs_attr_is_valid(attrs, 7597385371425f Yishai Hadas 2019-06-30 2027 MLX5_IB_ATTR_DEVX_SUBSCRIBE_EVENT_COOKIE)) { 7597385371425f Yishai Hadas 2019-06-30 2028 if (use_eventfd) 7597385371425f Yishai Hadas 2019-06-30 2029 return -EINVAL; 7597385371425f Yishai Hadas 2019-06-30 2030 7597385371425f Yishai Hadas 2019-06-30 2031 err = uverbs_copy_from(&cookie, attrs, 7597385371425f Yishai Hadas 2019-06-30 2032 MLX5_IB_ATTR_DEVX_SUBSCRIBE_EVENT_COOKIE); 7597385371425f Yishai Hadas 2019-06-30 2033 if (err) 7597385371425f Yishai Hadas 2019-06-30 2034 return err; 7597385371425f Yishai Hadas 2019-06-30 2035 } 7597385371425f Yishai Hadas 2019-06-30 2036 7597385371425f Yishai Hadas 2019-06-30 2037 num_events = uverbs_attr_ptr_get_array_size( 7597385371425f Yishai Hadas 2019-06-30 2038 attrs, MLX5_IB_ATTR_DEVX_SUBSCRIBE_EVENT_TYPE_NUM_LIST, 7597385371425f Yishai Hadas 2019-06-30 2039 sizeof(u16)); 7597385371425f Yishai Hadas 2019-06-30 2040 7597385371425f Yishai Hadas 2019-06-30 2041 if (num_events < 0) 7597385371425f Yishai Hadas 2019-06-30 2042 return num_events; 7597385371425f Yishai Hadas 2019-06-30 2043 7597385371425f Yishai Hadas 2019-06-30 2044 if (num_events > MAX_NUM_EVENTS) 7597385371425f Yishai Hadas 2019-06-30 2045 return -EINVAL; 7597385371425f Yishai Hadas 2019-06-30 2046 7597385371425f Yishai Hadas 2019-06-30 2047 event_type_num_list = uverbs_attr_get_alloced_ptr(attrs, 7597385371425f Yishai Hadas 2019-06-30 2048 MLX5_IB_ATTR_DEVX_SUBSCRIBE_EVENT_TYPE_NUM_LIST); 7597385371425f Yishai Hadas 2019-06-30 2049 7597385371425f Yishai Hadas 2019-06-30 2050 if (!is_valid_events(dev->mdev, num_events, event_type_num_list, obj)) 7597385371425f Yishai Hadas 2019-06-30 2051 return -EINVAL; 7597385371425f Yishai Hadas 2019-06-30 2052 7597385371425f Yishai Hadas 2019-06-30 2053 INIT_LIST_HEAD(&sub_list); 7597385371425f Yishai Hadas 2019-06-30 2054 7597385371425f Yishai Hadas 2019-06-30 2055 /* Protect from concurrent subscriptions to same XA entries to allow 7597385371425f Yishai Hadas 2019-06-30 2056 * both to succeed 7597385371425f Yishai Hadas 2019-06-30 2057 */ 7597385371425f Yishai Hadas 2019-06-30 2058 mutex_lock(&devx_event_table->event_xa_lock); 7597385371425f Yishai Hadas 2019-06-30 2059 for (i = 0; i < num_events; i++) { 7597385371425f Yishai Hadas 2019-06-30 2060 u32 key_level1; 7597385371425f Yishai Hadas 2019-06-30 2061 7597385371425f Yishai Hadas 2019-06-30 2062 if (obj) 7597385371425f Yishai Hadas 2019-06-30 2063 obj_type = get_dec_obj_type(obj, 7597385371425f Yishai Hadas 2019-06-30 2064 event_type_num_list[i]); 7597385371425f Yishai Hadas 2019-06-30 2065 key_level1 = event_type_num_list[i] | obj_type << 16; 7597385371425f Yishai Hadas 2019-06-30 2066 7597385371425f Yishai Hadas 2019-06-30 2067 err = subscribe_event_xa_alloc(devx_event_table, 7597385371425f Yishai Hadas 2019-06-30 2068 key_level1, 7597385371425f Yishai Hadas 2019-06-30 2069 obj, 7597385371425f Yishai Hadas 2019-06-30 2070 obj_id); 7597385371425f Yishai Hadas 2019-06-30 2071 if (err) 7597385371425f Yishai Hadas 2019-06-30 2072 goto err; 7597385371425f Yishai Hadas 2019-06-30 2073 7597385371425f Yishai Hadas 2019-06-30 2074 num_alloc_xa_entries++; 7597385371425f Yishai Hadas 2019-06-30 2075 event_sub = kzalloc(sizeof(*event_sub), GFP_KERNEL); 893d2d872d1092 YueHaibing 2021-02-22 2076 if (!event_sub) { 893d2d872d1092 YueHaibing 2021-02-22 2077 err = -ENOMEM 7597385371425f Yishai Hadas 2019-06-30 @2078 goto err; 893d2d872d1092 YueHaibing 2021-02-22 2079 } 7597385371425f Yishai Hadas 2019-06-30 2080 7597385371425f Yishai Hadas 2019-06-30 2081 list_add_tail(&event_sub->event_list, &sub_list); 6898d1c661d79f Jason Gunthorpe 2020-01-08 2082 uverbs_uobject_get(&ev_file->uobj); 7597385371425f Yishai Hadas 2019-06-30 2083 if (use_eventfd) { 7597385371425f Yishai Hadas 2019-06-30 2084 event_sub->eventfd = 7597385371425f Yishai Hadas 2019-06-30 2085 eventfd_ctx_fdget(redirect_fd); 7597385371425f Yishai Hadas 2019-06-30 2086 e7e6c6320c8c9e Dan Carpenter 2019-08-07 2087 if (IS_ERR(event_sub->eventfd)) { 7597385371425f Yishai Hadas 2019-06-30 2088 err = PTR_ERR(event_sub->eventfd); 7597385371425f Yishai Hadas 2019-06-30 2089 event_sub->eventfd = NULL; 7597385371425f Yishai Hadas 2019-06-30 2090 goto err; 7597385371425f Yishai Hadas 2019-06-30 2091 } 7597385371425f Yishai Hadas 2019-06-30 2092 } 7597385371425f Yishai Hadas 2019-06-30 2093 7597385371425f Yishai Hadas 2019-06-30 2094 event_sub->cookie = cookie; 7597385371425f Yishai Hadas 2019-06-30 2095 event_sub->ev_file = ev_file; 7597385371425f Yishai Hadas 2019-06-30 2096 /* May be needed upon cleanup the devx object/subscription */ 7597385371425f Yishai Hadas 2019-06-30 2097 event_sub->xa_key_level1 = key_level1; 7597385371425f Yishai Hadas 2019-06-30 2098 event_sub->xa_key_level2 = obj_id; 7597385371425f Yishai Hadas 2019-06-30 2099 INIT_LIST_HEAD(&event_sub->obj_list); 7597385371425f Yishai Hadas 2019-06-30 2100 } 7597385371425f Yishai Hadas 2019-06-30 2101 7597385371425f Yishai Hadas 2019-06-30 2102 /* Once all the allocations and the XA data insertions were done we 7597385371425f Yishai Hadas 2019-06-30 2103 * can go ahead and add all the subscriptions to the relevant lists 7597385371425f Yishai Hadas 2019-06-30 2104 * without concern of a failure. 7597385371425f Yishai Hadas 2019-06-30 2105 */ 7597385371425f Yishai Hadas 2019-06-30 2106 list_for_each_entry_safe(event_sub, tmp_sub, &sub_list, event_list) { 7597385371425f Yishai Hadas 2019-06-30 2107 struct devx_event *event; 7597385371425f Yishai Hadas 2019-06-30 2108 struct devx_obj_event *obj_event; 7597385371425f Yishai Hadas 2019-06-30 2109 7597385371425f Yishai Hadas 2019-06-30 2110 list_del_init(&event_sub->event_list); 7597385371425f Yishai Hadas 2019-06-30 2111 7597385371425f Yishai Hadas 2019-06-30 2112 spin_lock_irq(&ev_file->lock); 7597385371425f Yishai Hadas 2019-06-30 2113 list_add_tail_rcu(&event_sub->file_list, 7597385371425f Yishai Hadas 2019-06-30 2114 &ev_file->subscribed_events_list); 7597385371425f Yishai Hadas 2019-06-30 2115 spin_unlock_irq(&ev_file->lock); 7597385371425f Yishai Hadas 2019-06-30 2116 7597385371425f Yishai Hadas 2019-06-30 2117 event = xa_load(&devx_event_table->event_xa, 7597385371425f Yishai Hadas 2019-06-30 2118 event_sub->xa_key_level1); 7597385371425f Yishai Hadas 2019-06-30 2119 WARN_ON(!event); 7597385371425f Yishai Hadas 2019-06-30 2120 7597385371425f Yishai Hadas 2019-06-30 2121 if (!obj) { 7597385371425f Yishai Hadas 2019-06-30 2122 list_add_tail_rcu(&event_sub->xa_list, 7597385371425f Yishai Hadas 2019-06-30 2123 &event->unaffiliated_list); 7597385371425f Yishai Hadas 2019-06-30 2124 continue; 7597385371425f Yishai Hadas 2019-06-30 2125 } 7597385371425f Yishai Hadas 2019-06-30 2126 7597385371425f Yishai Hadas 2019-06-30 2127 obj_event = xa_load(&event->object_ids, obj_id); 7597385371425f Yishai Hadas 2019-06-30 2128 WARN_ON(!obj_event); 7597385371425f Yishai Hadas 2019-06-30 2129 list_add_tail_rcu(&event_sub->xa_list, 7597385371425f Yishai Hadas 2019-06-30 2130 &obj_event->obj_sub_list); 7597385371425f Yishai Hadas 2019-06-30 2131 list_add_tail_rcu(&event_sub->obj_list, 7597385371425f Yishai Hadas 2019-06-30 2132 &obj->event_sub); 7597385371425f Yishai Hadas 2019-06-30 2133 } 7597385371425f Yishai Hadas 2019-06-30 2134 7597385371425f Yishai Hadas 2019-06-30 2135 mutex_unlock(&devx_event_table->event_xa_lock); 7597385371425f Yishai Hadas 2019-06-30 2136 return 0; 7597385371425f Yishai Hadas 2019-06-30 2137 7597385371425f Yishai Hadas 2019-06-30 2138 err: 7597385371425f Yishai Hadas 2019-06-30 2139 list_for_each_entry_safe(event_sub, tmp_sub, &sub_list, event_list) { 7597385371425f Yishai Hadas 2019-06-30 2140 list_del(&event_sub->event_list); 7597385371425f Yishai Hadas 2019-06-30 2141 7597385371425f Yishai Hadas 2019-06-30 2142 subscribe_event_xa_dealloc(devx_event_table, 7597385371425f Yishai Hadas 2019-06-30 2143 event_sub->xa_key_level1, 7597385371425f Yishai Hadas 2019-06-30 2144 obj, 7597385371425f Yishai Hadas 2019-06-30 2145 obj_id); 7597385371425f Yishai Hadas 2019-06-30 2146 7597385371425f Yishai Hadas 2019-06-30 2147 if (event_sub->eventfd) 7597385371425f Yishai Hadas 2019-06-30 2148 eventfd_ctx_put(event_sub->eventfd); 6898d1c661d79f Jason Gunthorpe 2020-01-08 2149 uverbs_uobject_put(&event_sub->ev_file->uobj); 7597385371425f Yishai Hadas 2019-06-30 2150 kfree(event_sub); 7597385371425f Yishai Hadas 2019-06-30 2151 } 7597385371425f Yishai Hadas 2019-06-30 2152 7597385371425f Yishai Hadas 2019-06-30 2153 mutex_unlock(&devx_event_table->event_xa_lock); 7597385371425f Yishai Hadas 2019-06-30 2154 return err; 7597385371425f Yishai Hadas 2019-06-30 2155 } 7597385371425f Yishai Hadas 2019-06-30 2156 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@xxxxxxxxxxxx
Attachment:
.config.gz
Description: application/gzip