Hi Dawei, kernel test robot noticed the following build warnings:
url: https://github.com/intel-lab-lkp/linux/commits/Dawei-Li/rpmsg-char-Reuse-eptdev-logic-for-anonymous-device/20250519-231006 base: 92a09c47464d040866cf2b4cd052bc60555185fb patch link: https://lore.kernel.org/r/20250519150823.62350-4-dawei.li%40linux.dev patch subject: [PATCH v3 3/3] rpmsg: ctrl: Introduce RPMSG_CREATE_EPT_FD_IOCTL uAPI config: powerpc64-randconfig-r072-20250521 (https://download.01.org/0day-ci/archive/20250521/202505211038.sqqvx8ko-...@intel.com/config) compiler: clang version 18.1.8 (https://github.com/llvm/llvm-project 3b5b5c1ec4a3095ab096dd780e84d7ab81f3d7ff) If you fix the issue in a separate patch/commit (i.e. not just a new version of the same patch/commit), kindly add following tags | Reported-by: kernel test robot <l...@intel.com> | Reported-by: Dan Carpenter <dan.carpen...@linaro.org> | Closes: https://lore.kernel.org/r/202505211038.sqqvx8ko-...@intel.com/ smatch warnings: drivers/rpmsg/rpmsg_ctrl.c:140 rpmsg_ctrldev_ioctl() warn: maybe return -EFAULT instead of the bytes remaining? vim +140 drivers/rpmsg/rpmsg_ctrl.c 617d32938d1be0 Arnaud Pouliquen 2022-01-24 74 static long rpmsg_ctrldev_ioctl(struct file *fp, unsigned int cmd, 617d32938d1be0 Arnaud Pouliquen 2022-01-24 75 unsigned long arg) 617d32938d1be0 Arnaud Pouliquen 2022-01-24 76 { 617d32938d1be0 Arnaud Pouliquen 2022-01-24 77 struct rpmsg_ctrldev *ctrldev = fp->private_data; 74317ea5240801 Dawei Li 2025-05-19 78 struct rpmsg_endpoint_fd_info ept_fd_info; 617d32938d1be0 Arnaud Pouliquen 2022-01-24 79 void __user *argp = (void __user *)arg; 617d32938d1be0 Arnaud Pouliquen 2022-01-24 80 struct rpmsg_endpoint_info eptinfo; 617d32938d1be0 Arnaud Pouliquen 2022-01-24 81 struct rpmsg_channel_info chinfo; 8109517b394e6d Arnaud Pouliquen 2022-01-24 82 struct rpmsg_device *rpdev; 8109517b394e6d Arnaud Pouliquen 2022-01-24 83 int ret = 0; 74317ea5240801 Dawei Li 2025-05-19 84 int fd = -1; 617d32938d1be0 Arnaud Pouliquen 2022-01-24 85 74317ea5240801 Dawei Li 2025-05-19 86 if (cmd == RPMSG_CREATE_EPT_IOCTL || cmd == RPMSG_CREATE_DEV_IOCTL || 74317ea5240801 Dawei Li 2025-05-19 87 cmd == RPMSG_RELEASE_DEV_IOCTL) { 617d32938d1be0 Arnaud Pouliquen 2022-01-24 88 if (copy_from_user(&eptinfo, argp, sizeof(eptinfo))) 617d32938d1be0 Arnaud Pouliquen 2022-01-24 89 return -EFAULT; 617d32938d1be0 Arnaud Pouliquen 2022-01-24 90 617d32938d1be0 Arnaud Pouliquen 2022-01-24 91 memcpy(chinfo.name, eptinfo.name, RPMSG_NAME_SIZE); 617d32938d1be0 Arnaud Pouliquen 2022-01-24 92 chinfo.name[RPMSG_NAME_SIZE - 1] = '\0'; 617d32938d1be0 Arnaud Pouliquen 2022-01-24 93 chinfo.src = eptinfo.src; 617d32938d1be0 Arnaud Pouliquen 2022-01-24 94 chinfo.dst = eptinfo.dst; 74317ea5240801 Dawei Li 2025-05-19 95 } else if (cmd == RPMSG_CREATE_EPT_FD_IOCTL) { 74317ea5240801 Dawei Li 2025-05-19 96 if (copy_from_user(&ept_fd_info, argp, sizeof(ept_fd_info))) 74317ea5240801 Dawei Li 2025-05-19 97 return -EFAULT; 74317ea5240801 Dawei Li 2025-05-19 98 74317ea5240801 Dawei Li 2025-05-19 99 memcpy(chinfo.name, ept_fd_info.name, RPMSG_NAME_SIZE); 74317ea5240801 Dawei Li 2025-05-19 100 chinfo.name[RPMSG_NAME_SIZE - 1] = '\0'; 74317ea5240801 Dawei Li 2025-05-19 101 chinfo.src = ept_fd_info.src; 74317ea5240801 Dawei Li 2025-05-19 102 chinfo.dst = ept_fd_info.dst; 74317ea5240801 Dawei Li 2025-05-19 103 } 617d32938d1be0 Arnaud Pouliquen 2022-01-24 104 8109517b394e6d Arnaud Pouliquen 2022-01-24 105 mutex_lock(&ctrldev->ctrl_lock); 8109517b394e6d Arnaud Pouliquen 2022-01-24 106 switch (cmd) { 8109517b394e6d Arnaud Pouliquen 2022-01-24 107 case RPMSG_CREATE_EPT_IOCTL: 8109517b394e6d Arnaud Pouliquen 2022-01-24 108 ret = rpmsg_chrdev_eptdev_create(ctrldev->rpdev, &ctrldev->dev, chinfo); 8109517b394e6d Arnaud Pouliquen 2022-01-24 109 break; 8109517b394e6d Arnaud Pouliquen 2022-01-24 110 8109517b394e6d Arnaud Pouliquen 2022-01-24 111 case RPMSG_CREATE_DEV_IOCTL: 8109517b394e6d Arnaud Pouliquen 2022-01-24 112 rpdev = rpmsg_create_channel(ctrldev->rpdev, &chinfo); 8109517b394e6d Arnaud Pouliquen 2022-01-24 113 if (!rpdev) { 8109517b394e6d Arnaud Pouliquen 2022-01-24 114 dev_err(&ctrldev->dev, "failed to create %s channel\n", chinfo.name); 8109517b394e6d Arnaud Pouliquen 2022-01-24 115 ret = -ENXIO; 8109517b394e6d Arnaud Pouliquen 2022-01-24 116 } 8109517b394e6d Arnaud Pouliquen 2022-01-24 117 break; 8109517b394e6d Arnaud Pouliquen 2022-01-24 118 8109517b394e6d Arnaud Pouliquen 2022-01-24 119 case RPMSG_RELEASE_DEV_IOCTL: 8109517b394e6d Arnaud Pouliquen 2022-01-24 120 ret = rpmsg_release_channel(ctrldev->rpdev, &chinfo); 8109517b394e6d Arnaud Pouliquen 2022-01-24 121 if (ret) 8109517b394e6d Arnaud Pouliquen 2022-01-24 122 dev_err(&ctrldev->dev, "failed to release %s channel (%d)\n", 8109517b394e6d Arnaud Pouliquen 2022-01-24 123 chinfo.name, ret); 8109517b394e6d Arnaud Pouliquen 2022-01-24 124 break; 8109517b394e6d Arnaud Pouliquen 2022-01-24 125 74317ea5240801 Dawei Li 2025-05-19 126 case RPMSG_CREATE_EPT_FD_IOCTL: 74317ea5240801 Dawei Li 2025-05-19 127 ret = rpmsg_anonymous_eptdev_create(ctrldev->rpdev, &ctrldev->dev, chinfo, 74317ea5240801 Dawei Li 2025-05-19 128 ept_fd_info.flags, &fd); 74317ea5240801 Dawei Li 2025-05-19 129 if (!ret) { You should flip this around. if (ret) break; 74317ea5240801 Dawei Li 2025-05-19 130 ept_fd_info.fd = fd; 74317ea5240801 Dawei Li 2025-05-19 131 ret = copy_to_user(argp, &ept_fd_info, sizeof(ept_fd_info)); This should be: if (copy_to_user(argp, &ept_fd_info, sizeof(ept_fd_info))) ret = -EFAULT; 74317ea5240801 Dawei Li 2025-05-19 132 } 74317ea5240801 Dawei Li 2025-05-19 133 break; 74317ea5240801 Dawei Li 2025-05-19 134 8109517b394e6d Arnaud Pouliquen 2022-01-24 135 default: 8109517b394e6d Arnaud Pouliquen 2022-01-24 136 ret = -EINVAL; 8109517b394e6d Arnaud Pouliquen 2022-01-24 137 } 8109517b394e6d Arnaud Pouliquen 2022-01-24 138 mutex_unlock(&ctrldev->ctrl_lock); 8109517b394e6d Arnaud Pouliquen 2022-01-24 139 8109517b394e6d Arnaud Pouliquen 2022-01-24 @140 return ret; 617d32938d1be0 Arnaud Pouliquen 2022-01-24 141 }; -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki