kernel: ltq-adsl-mei: fix compilation warning for copy_from_user ret
authorChristian Marangi <ansuelsmth@gmail.com>
Tue, 9 May 2023 14:26:34 +0000 (16:26 +0200)
committerChristian Marangi <ansuelsmth@gmail.com>
Fri, 12 May 2023 01:15:43 +0000 (03:15 +0200)
Fix compilation warning for copy_from_user ret value not handled.
Fix compilation warning:
/__w/openwrt/openwrt/openwrt/build_dir/target-mips_mips32_musl/linux-lantiq_ase/ltq-adsl-mei-ase/ltq-adsl-mei/drv_mei_cpe.c: In function 'DSL_BSP_FWDownload':
/__w/openwrt/openwrt/openwrt/build_dir/target-mips_mips32_musl/linux-lantiq_ase/ltq-adsl-mei-ase/ltq-adsl-mei/drv_mei_cpe.c:1623:17: error: ignoring return value of 'copy_from_user' declared with attribute 'warn_unused_result' [-Werror=unused-result]
 1623 |                 copy_from_user ((char *) &img_hdr_tmp, buf, sizeof (img_hdr_tmp));
      |                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/__w/openwrt/openwrt/openwrt/build_dir/target-mips_mips32_musl/linux-lantiq_ase/ltq-adsl-mei-ase/ltq-adsl-mei/drv_mei_cpe.c:1701:17: error: ignoring return value of 'copy_from_user' declared with attribute 'warn_unused_result' [-Werror=unused-result]
 1701 |                 copy_from_user (mem_ptr, buf + nRead, nCopy);
      |                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
cc1: all warnings being treated as errors

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
package/kernel/lantiq/ltq-adsl-mei/src/drv_mei_cpe.c

index 2339d919b6ae4276409719bf41816e086101aaf6..8ccfb443ed16e0ee8813dc018e999fdbd61ff91a 100644 (file)
@@ -1620,7 +1620,9 @@ DSL_BSP_FWDownload (DSL_DEV_Device_t * pDev, const char *buf,
                        IFX_MEI_EMSG ("Firmware size is too small!\n");
                        return retval;
                }
-               copy_from_user ((char *) &img_hdr_tmp, buf, sizeof (img_hdr_tmp));
+               if (copy_from_user ((char *) &img_hdr_tmp, buf, sizeof (img_hdr_tmp)))
+                       return -EFAULT;
+
                // header of image_size and crc are not included.
                DSL_DEV_PRIVATE(pDev)->image_size = le32_to_cpu (img_hdr_tmp.size) + 8;
 
@@ -1698,7 +1700,9 @@ DSL_BSP_FWDownload (DSL_DEV_Device_t * pDev, const char *buf,
                        nCopy = SDRAM_SEGMENT_SIZE - offset;
                else
                        nCopy = size - nRead;
-               copy_from_user (mem_ptr, buf + nRead, nCopy);
+               if (copy_from_user (mem_ptr, buf + nRead, nCopy))
+                       return -EFAULT;
+
                for (offset = 0; offset < (nCopy / 4); offset++) {
                        ((unsigned long *) mem_ptr)[offset] = le32_to_cpu (((unsigned long *) mem_ptr)[offset]);
                }