diff mbox

ath6kl: Use vmalloc for loading firmware using api1 method

Message ID 1444972259-24260-1-git-send-email-motobud@gmail.com (mailing list archive)
State Changes Requested
Delegated to: Kalle Valo
Headers show

Commit Message

Brent Taylor Oct. 16, 2015, 5:10 a.m. UTC
Signed-off-by: Brent Taylor <motobud@gmail.com>
---
 drivers/net/wireless/ath/ath6kl/init.c | 15 +++++++++++----
 1 file changed, 11 insertions(+), 4 deletions(-)

Comments

Brent Taylor Nov. 28, 2015, 6:58 p.m. UTC | #1
Sorry, the first e-mail was sent via gmail and I forgot about sending
it in plain text mode.

Whats the status on this patch?  I don't see it on patchwork anymore
nor is it in any of the git trees I checked.

Thanks,
Brent

On Fri, Oct 16, 2015 at 12:10 AM, Brent Taylor <motobud@gmail.com> wrote:
> Signed-off-by: Brent Taylor <motobud@gmail.com>
> ---
>  drivers/net/wireless/ath/ath6kl/init.c | 15 +++++++++++----
>  1 file changed, 11 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/net/wireless/ath/ath6kl/init.c b/drivers/net/wireless/ath/ath6kl/init.c
> index 6e473fa..2155739 100644
> --- a/drivers/net/wireless/ath/ath6kl/init.c
> +++ b/drivers/net/wireless/ath/ath6kl/init.c
> @@ -673,10 +673,17 @@ static int ath6kl_get_fw(struct ath6kl *ar, const char *filename,
>                 return ret;
>
>         *fw_len = fw_entry->size;
> -       *fw = kmemdup(fw_entry->data, fw_entry->size, GFP_KERNEL);
> -
> -       if (*fw == NULL)
> -               ret = -ENOMEM;
> +       if (&ar->fw == fw) {
> +               *fw = vmalloc(fw_entry->size);
> +               if (*fw == NULL)
> +                       ret = -ENOMEM;
> +               else
> +                       memcpy(*fw, fw_entry->data, fw_entry->size);
> +       } else {
> +               *fw = kmemdup(fw_entry->data, fw_entry->size, GFP_KERNEL);
> +               if (*fw == NULL)
> +                       ret = -ENOMEM;
> +       }
>
>         release_firmware(fw_entry);
>
> --
> 2.6.1
>
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Andy Shevchenko Nov. 29, 2015, 12:53 a.m. UTC | #2
On Sat, Nov 28, 2015 at 8:58 PM, Brent Taylor <motobud@gmail.com> wrote:
> Sorry, the first e-mail was sent via gmail and I forgot about sending
> it in plain text mode.
>
> Whats the status on this patch?  I don't see it on patchwork anymore
> nor is it in any of the git trees I checked.
>

You forget to use kvfree() instead of kfree() in core.c.

> Thanks,
> Brent
>
> On Fri, Oct 16, 2015 at 12:10 AM, Brent Taylor <motobud@gmail.com> wrote:
>> Signed-off-by: Brent Taylor <motobud@gmail.com>
>> ---
>>  drivers/net/wireless/ath/ath6kl/init.c | 15 +++++++++++----
>>  1 file changed, 11 insertions(+), 4 deletions(-)
>>
>> diff --git a/drivers/net/wireless/ath/ath6kl/init.c b/drivers/net/wireless/ath/ath6kl/init.c
>> index 6e473fa..2155739 100644
>> --- a/drivers/net/wireless/ath/ath6kl/init.c
>> +++ b/drivers/net/wireless/ath/ath6kl/init.c
>> @@ -673,10 +673,17 @@ static int ath6kl_get_fw(struct ath6kl *ar, const char *filename,
>>                 return ret;
>>
>>         *fw_len = fw_entry->size;
>> -       *fw = kmemdup(fw_entry->data, fw_entry->size, GFP_KERNEL);
>> -
>> -       if (*fw == NULL)
>> -               ret = -ENOMEM;
>> +       if (&ar->fw == fw) {
>> +               *fw = vmalloc(fw_entry->size);
>> +               if (*fw == NULL)
>> +                       ret = -ENOMEM;
>> +               else
>> +                       memcpy(*fw, fw_entry->data, fw_entry->size);
>> +       } else {
>> +               *fw = kmemdup(fw_entry->data, fw_entry->size, GFP_KERNEL);
>> +               if (*fw == NULL)
>> +                       ret = -ENOMEM;
>> +       }
>>
>>         release_firmware(fw_entry);
>>
>> --
>> 2.6.1
>>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/
Tetsuo Handa Nov. 29, 2015, 2:56 a.m. UTC | #3
Andy Shevchenko wrote:
> On Sat, Nov 28, 2015 at 8:58 PM, Brent Taylor <motobud@gmail.com> wrote:
> > Whats the status on this patch?  I don't see it on patchwork anymore
> > nor is it in any of the git trees I checked.
> >
> 
> You forget to use kvfree() instead of kfree() in core.c.
> 

In addition to that, I think you can do like below.

	if (&ar->fw == fw)
		*fw = vmalloc(fw_entry->size);
	else
		*fw = kmalloc(fw_entry->size, GFP_KERNEL);
	if (*fw == NULL)
		ret = -ENOMEM;
	else
		memcpy(*fw, fw_entry->data, fw_entry->size);
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/drivers/net/wireless/ath/ath6kl/init.c b/drivers/net/wireless/ath/ath6kl/init.c
index 6e473fa..2155739 100644
--- a/drivers/net/wireless/ath/ath6kl/init.c
+++ b/drivers/net/wireless/ath/ath6kl/init.c
@@ -673,10 +673,17 @@  static int ath6kl_get_fw(struct ath6kl *ar, const char *filename,
 		return ret;
 
 	*fw_len = fw_entry->size;
-	*fw = kmemdup(fw_entry->data, fw_entry->size, GFP_KERNEL);
-
-	if (*fw == NULL)
-		ret = -ENOMEM;
+	if (&ar->fw == fw) {
+		*fw = vmalloc(fw_entry->size);
+		if (*fw == NULL)
+			ret = -ENOMEM;
+		else
+			memcpy(*fw, fw_entry->data, fw_entry->size);
+	} else {
+		*fw = kmemdup(fw_entry->data, fw_entry->size, GFP_KERNEL);
+		if (*fw == NULL)
+			ret = -ENOMEM;
+	}
 
 	release_firmware(fw_entry);