rpmsg: qcom: glink: replace strncpy() with strscpy_pad()
authorKrzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Thu, 19 May 2022 07:33:28 +0000 (09:33 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 12 Oct 2022 07:53:28 +0000 (09:53 +0200)
commit 766279a8f85df32345dbda03b102ca1ee3d5ddea upstream.

The use of strncpy() is considered deprecated for NUL-terminated
strings[1]. Replace strncpy() with strscpy_pad(), to keep existing
pad-behavior of strncpy, similarly to commit 08de420a8014 ("rpmsg:
glink: Replace strncpy() with strscpy_pad()").  This fixes W=1 warning:

  In function ‘qcom_glink_rx_close’,
    inlined from ‘qcom_glink_work’ at ../drivers/rpmsg/qcom_glink_native.c:1638:4:
  drivers/rpmsg/qcom_glink_native.c:1549:17: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
   1549 |                 strncpy(chinfo.name, channel->name, sizeof(chinfo.name));

[1] https://www.kernel.org/doc/html/latest/process/deprecated.html#strncpy-on-nul-terminated-strings

Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Reviewed-by: Stephen Boyd <sboyd@kernel.org>
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Link: https://lore.kernel.org/r/20220519073330.7187-1-krzysztof.kozlowski@linaro.org
Signed-off-by: Andrew Chernyakov <acherniakov@astralinux.ru>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/rpmsg/qcom_glink_native.c
drivers/rpmsg/qcom_smd.c

index 05533c7..13c3137 100644 (file)
@@ -1488,7 +1488,7 @@ static void qcom_glink_rx_close(struct qcom_glink *glink, unsigned int rcid)
        cancel_work_sync(&channel->intent_work);
 
        if (channel->rpdev) {
-               strncpy(chinfo.name, channel->name, sizeof(chinfo.name));
+               strscpy_pad(chinfo.name, channel->name, sizeof(chinfo.name));
                chinfo.src = RPMSG_ADDR_ANY;
                chinfo.dst = RPMSG_ADDR_ANY;
 
index c1c07ff..56bc622 100644 (file)
@@ -1089,7 +1089,7 @@ static int qcom_smd_create_device(struct qcom_smd_channel *channel)
 
        /* Assign public information to the rpmsg_device */
        rpdev = &qsdev->rpdev;
-       strncpy(rpdev->id.name, channel->name, RPMSG_NAME_SIZE);
+       strscpy_pad(rpdev->id.name, channel->name, RPMSG_NAME_SIZE);
        rpdev->src = RPMSG_ADDR_ANY;
        rpdev->dst = RPMSG_ADDR_ANY;
 
@@ -1320,7 +1320,7 @@ static void qcom_channel_state_worker(struct work_struct *work)
 
                spin_unlock_irqrestore(&edge->channels_lock, flags);
 
-               strncpy(chinfo.name, channel->name, sizeof(chinfo.name));
+               strscpy_pad(chinfo.name, channel->name, sizeof(chinfo.name));
                chinfo.src = RPMSG_ADDR_ANY;
                chinfo.dst = RPMSG_ADDR_ANY;
                rpmsg_unregister_device(&edge->dev, &chinfo);