staging: rtl8723bs: os_dep: ioctl_linux: make use of kzalloc [Linux 5.3]

This Linux kernel change "staging: rtl8723bs: os_dep: ioctl_linux: make use of kzalloc" is included in the Linux 5.3 release. This change is authored by Hariprasad Kelam <hariprasad.kelam [at] gmail.com> on Wed Jun 19 07:27:43 2019 +0530. The commit for this change in Linux stable tree is 6254acd (patch).

staging: rtl8723bs: os_dep: ioctl_linux: make use of kzalloc

This patch is a cleanup which replaces rtw_malloc(wep_total_len) with
kzalloc() and removes the memset().

The rtw_malloc() does GFP_ATOMIC allocations when in_atomic() is true.
But as the comments for in_atomic() describe, the in_atomic() check
should not be used in driver code.  The in_atomic() check is not
accurate when preempt is disabled.

In this code we are not in IRQ context and we are not holding any
spin_locks so GFP_KERNEL is safe.

Signed-off-by: Hariprasad Kelam <hariprasad.kelam@gmail.com>
----
changes in v2: Replace rtw_zmalloc with kzalloc
changes in v3: Add proper changelog
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

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

 drivers/staging/rtl8723bs/os_dep/ioctl_linux.c | 12 +++---------
 1 file changed, 3 insertions(+), 9 deletions(-)

diff --git a/drivers/staging/rtl8723bs/os_dep/ioctl_linux.c b/drivers/staging/rtl8723bs/os_dep/ioctl_linux.c
index ea50ec424..e050f20 100644
--- a/drivers/staging/rtl8723bs/os_dep/ioctl_linux.c
+++ b/drivers/staging/rtl8723bs/os_dep/ioctl_linux.c
@@ -477,14 +477,12 @@ static int wpa_set_encryption(struct net_device *dev, struct ieee_param *param,
        if (wep_key_len > 0) {
            wep_key_len = wep_key_len <= 5 ? 5 : 13;
            wep_total_len = wep_key_len + FIELD_OFFSET(struct ndis_802_11_wep, KeyMaterial);
-           pwep = rtw_malloc(wep_total_len);
+           pwep = kzalloc(wep_total_len, GFP_KERNEL);
            if (pwep == NULL) {
                RT_TRACE(_module_rtl871x_ioctl_os_c, _drv_err_, (" wpa_set_encryption: pwep allocate fail !!!\n"));
                goto exit;
            }

-           memset(pwep, 0, wep_total_len);
-
            pwep->KeyLength = wep_key_len;
            pwep->Length = wep_total_len;

@@ -2142,12 +2140,10 @@ static int rtw_wx_set_enc_ext(struct net_device *dev,
    int ret = 0;

    param_len = sizeof(struct ieee_param) + pext->key_len;
-   param = rtw_malloc(param_len);
+   param = kzalloc(param_len, GFP_KERNEL);
    if (param == NULL)
        return -1;

-   memset(param, 0, param_len);
-
    param->cmd = IEEE_CMD_SET_ENCRYPTION;
    memset(param->sta_addr, 0xff, ETH_ALEN);

@@ -3513,14 +3509,12 @@ static int rtw_set_encryption(struct net_device *dev, struct ieee_param *param,
        if (wep_key_len > 0) {
            wep_key_len = wep_key_len <= 5 ? 5 : 13;
            wep_total_len = wep_key_len + FIELD_OFFSET(struct ndis_802_11_wep, KeyMaterial);
-           pwep = rtw_malloc(wep_total_len);
+           pwep = kzalloc(wep_total_len, GFP_KERNEL);
            if (pwep == NULL) {
                DBG_871X(" r871x_set_encryption: pwep allocate fail !!!\n");
                goto exit;
            }

-           memset(pwep, 0, wep_total_len);
-
            pwep->KeyLength = wep_key_len;
            pwep->Length = wep_total_len;

Leave a Reply

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