docs: stop suggesting strlcpy [Linux 5.3]

This Linux kernel change "docs: stop suggesting strlcpy" is included in the Linux 5.3 release. This change is authored by Stephen Kitt <steve [at] sk2.org> on Thu Jun 13 18:25:48 2019 +0200. The commit for this change in Linux stable tree is 220ee02 (patch).

docs: stop suggesting strlcpy

Since strlcpy is deprecated, the documentation shouldn't suggest using
it. This patch fixes the examples to use strscpy instead. It also uses
sizeof instead of underlying constants as far as possible, to simplify
future changes to the corresponding data structures.

Signed-off-by: Stephen Kitt <steve@sk2.org>
Acked-by: Kees Cook <keescook@chromium.org>
Acked-by: Federico Vaga <federico.vaga@vaga.pv.it>
Signed-off-by: Jonathan Corbet <corbet@lwn.net>

There are 24 lines of Linux source code added/deleted in this change. Code changes to Linux kernel are as follows.

 Documentation/hid/hid-transport.txt                         | 6 +++---
 Documentation/i2c/instantiating-devices                     | 2 +-
 Documentation/i2c/upgrading-clients                         | 4 ++--
 Documentation/kernel-hacking/locking.rst                    | 6 +++---
 Documentation/translations/it_IT/kernel-hacking/locking.rst | 6 +++---
 5 files changed, 12 insertions(+), 12 deletions(-)

diff --git a/Documentation/hid/hid-transport.txt b/Documentation/hid/hid-transport.txt
index 3dcba9f..4f41d67 100644
--- a/Documentation/hid/hid-transport.txt
+++ b/Documentation/hid/hid-transport.txt
@@ -194,9 +194,9 @@ with HID core:
        goto err_<...>;
    }

-   strlcpy(hid->name, <device-name-src>, 127);
-   strlcpy(hid->phys, <device-phys-src>, 63);
-   strlcpy(hid->uniq, <device-uniq-src>, 63);
+   strscpy(hid->name, <device-name-src>, sizeof(hid->name));
+   strscpy(hid->phys, <device-phys-src>, sizeof(hid->phys));
+   strscpy(hid->uniq, <device-uniq-src>, sizeof(hid->uniq));

    hid->ll_driver = &custom_ll_driver;
    hid->bus = <device-bus>;
diff --git a/Documentation/i2c/instantiating-devices b/Documentation/i2c/instantiating-devices
index 5a3e2f3..345e9ea 100644
--- a/Documentation/i2c/instantiating-devices
+++ b/Documentation/i2c/instantiating-devices
@@ -137,7 +137,7 @@ static int usb_hcd_nxp_probe(struct platform_device *pdev)
    (...)
    i2c_adap = i2c_get_adapter(2);
    memset(&i2c_info, 0, sizeof(struct i2c_board_info));
-   strlcpy(i2c_info.type, "isp1301_nxp", I2C_NAME_SIZE);
+   strscpy(i2c_info.type, "isp1301_nxp", sizeof(i2c_info.type));
    isp1301_i2c_client = i2c_new_probed_device(i2c_adap, &i2c_info,
                           normal_i2c, NULL);
    i2c_put_adapter(i2c_adap);
diff --git a/Documentation/i2c/upgrading-clients b/Documentation/i2c/upgrading-clients
index ccba3ff..96392cc 100644
--- a/Documentation/i2c/upgrading-clients
+++ b/Documentation/i2c/upgrading-clients
@@ -43,7 +43,7 @@ static int example_attach(struct i2c_adapter *adap, int addr, int kind)
    example->client.adapter = adap;

    i2c_set_clientdata(&state->i2c_client, state);
-   strlcpy(client->i2c_client.name, "example", I2C_NAME_SIZE);
+   strscpy(client->i2c_client.name, "example", sizeof(client->i2c_client.name));

    ret = i2c_attach_client(&state->i2c_client);
    if (ret < 0) {
@@ -138,7 +138,7 @@ can be removed:
 -  example->client.flags   = 0;
 -  example->client.adapter = adap;
 -
--  strlcpy(client->i2c_client.name, "example", I2C_NAME_SIZE);
+-  strscpy(client->i2c_client.name, "example", sizeof(client->i2c_client.name));

 The i2c_set_clientdata is now:

diff --git a/Documentation/kernel-hacking/locking.rst b/Documentation/kernel-hacking/locking.rst
index 519673d..dc698ea 100644
--- a/Documentation/kernel-hacking/locking.rst
+++ b/Documentation/kernel-hacking/locking.rst
@@ -451,7 +451,7 @@ to protect the cache and all the objects within it. Here's the code::
             if ((obj = kmalloc(sizeof(*obj), GFP_KERNEL)) == NULL)
                     return -ENOMEM;

-            strlcpy(obj->name, name, sizeof(obj->name));
+            strscpy(obj->name, name, sizeof(obj->name));
             obj->id = id;
             obj->popularity = 0;

@@ -660,7 +660,7 @@ Here is the code::
      }

     @@ -63,6 +94,7 @@
-             strlcpy(obj->name, name, sizeof(obj->name));
+             strscpy(obj->name, name, sizeof(obj->name));
              obj->id = id;
              obj->popularity = 0;
     +        obj->refcnt = 1; /* The cache holds a reference */
@@ -774,7 +774,7 @@ the lock is no longer used to protect the reference count itself.
      }

     @@ -94,7 +76,7 @@
-             strlcpy(obj->name, name, sizeof(obj->name));
+             strscpy(obj->name, name, sizeof(obj->name));
              obj->id = id;
              obj->popularity = 0;
     -        obj->refcnt = 1; /* The cache holds a reference */
diff --git a/Documentation/translations/it_IT/kernel-hacking/locking.rst b/Documentation/translations/it_IT/kernel-hacking/locking.rst
index 0ef31666..5fd8a1a 100644
--- a/Documentation/translations/it_IT/kernel-hacking/locking.rst
+++ b/Documentation/translations/it_IT/kernel-hacking/locking.rst
@@ -468,7 +468,7 @@ e tutti gli oggetti che contiene. Ecco il codice::
             if ((obj = kmalloc(sizeof(*obj), GFP_KERNEL)) == NULL)
                     return -ENOMEM;

-            strlcpy(obj->name, name, sizeof(obj->name));
+            strscpy(obj->name, name, sizeof(obj->name));
             obj->id = id;
             obj->popularity = 0;

@@ -678,7 +678,7 @@ Ecco il codice::
      }

     @@ -63,6 +94,7 @@
-             strlcpy(obj->name, name, sizeof(obj->name));
+             strscpy(obj->name, name, sizeof(obj->name));
              obj->id = id;
              obj->popularity = 0;
     +        obj->refcnt = 1; /* The cache holds a reference */
@@ -792,7 +792,7 @@ contatore stesso.
      }

     @@ -94,7 +76,7 @@
-             strlcpy(obj->name, name, sizeof(obj->name));
+             strscpy(obj->name, name, sizeof(obj->name));
              obj->id = id;
              obj->popularity = 0;
     -        obj->refcnt = 1; /* The cache holds a reference */

Leave a Reply

Your email address will not be published. Required fields are marked *