Skip to contentSkip to conversation

ALSA: asihpi - fix return type of hpios_locked_mem_alloc()

PATCH Applied Dan Carpenter 4 participants 7 messages Mar 28, 2012 – Mar 30, 2012

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 ALSA: asihpi - fix return type of hpios_locked_mem_alloc()

This function returns zero or -ENOMEM, but because it's type is u16, the -ENOMEM gets changed to 65524. None of the callers care, but lets fix it anyway as a cleanup.

sound/pci/asihpi/hpi_internal.h +1 -1
index 4cc315d..8c63200 100644
@@ -42,7 +42,7 @@ On error *pLockedMemHandle marked invalid, non-zero returned.
 If this function succeeds, then HpiOs_LockedMem_GetVirtAddr() and
 HpiOs_LockedMem_GetPyhsAddr() will always succed on the returned handle.
 */
-u16 hpios_locked_mem_alloc(struct consistent_dma_area *p_locked_mem_handle,
+int hpios_locked_mem_alloc(struct consistent_dma_area *p_locked_mem_handle,
 							   /**< memory handle */
 	u32 size, /**< Size in bytes to allocate */
 	struct pci_dev *p_os_reference
sound/pci/asihpi/hpios.c +1 -1
index 2d7d1c2..87f4385 100644
@@ -43,7 +43,7 @@ void hpios_delay_micro_seconds(u32 num_micro_sec)
 
 On error, return -ENOMEM, and *pMemArea.size = 0
 */
-u16 hpios_locked_mem_alloc(struct consistent_dma_area *p_mem_area, u32 size,
+int hpios_locked_mem_alloc(struct consistent_dma_area *p_mem_area, u32 size,
 	struct pci_dev *pdev)
 {
 	/*?? any benefit in using managed dmam_alloc_coherent? */
Applied
#1 lore raw

At Wed, 28 Mar 2012 09:57:02 +0300,

Quoted 6 lines · Dan Carpenter

This function returns zero or -ENOMEM, but because it's type is u16, the -ENOMEM gets changed to 65524. None of the callers care, but lets fix it anyway as a cleanup.

Applied it now. Thanks.

Takashi

Quoted 27 lines
sound/pci/asihpi/hpi_internal.h +1 -1
index 4cc315d..8c63200 100644
@@ -42,7 +42,7 @@ On error *pLockedMemHandle marked invalid, non-zero returned.
 If this function succeeds, then HpiOs_LockedMem_GetVirtAddr() and
 HpiOs_LockedMem_GetPyhsAddr() will always succed on the returned handle.
 */
-u16 hpios_locked_mem_alloc(struct consistent_dma_area *p_locked_mem_handle,
+int hpios_locked_mem_alloc(struct consistent_dma_area *p_locked_mem_handle,
 							   /**< memory handle */
 	u32 size, /**< Size in bytes to allocate */
 	struct pci_dev *p_os_reference
sound/pci/asihpi/hpios.c +1 -1
index 2d7d1c2..87f4385 100644
@@ -43,7 +43,7 @@ void hpios_delay_micro_seconds(u32 num_micro_sec)
 
 On error, return -ENOMEM, and *pMemArea.size = 0
 */
-u16 hpios_locked_mem_alloc(struct consistent_dma_area *p_mem_area, u32 size,
+int hpios_locked_mem_alloc(struct consistent_dma_area *p_mem_area, u32 size,
 	struct pci_dev *pdev)
 {
 	/*?? any benefit in using managed dmam_alloc_coherent? */
#2 lore raw
In reply to Dan Carpenter
Quoted 10 lines · Takashi Iwai

At Wed, 28 Mar 2012 09:57:02 +0300,

Quoted 6 lines · Dan Carpenter

This function returns zero or -ENOMEM, but because it's type is u16, the -ENOMEM gets changed to 65524. None of the callers care, but lets fix it anyway as a cleanup.

Applied it now. Thanks.

Hmm. I guess it is too late to NAK this change?

I'd prefer changing the return value to HPI_ERROR_MEMORY_ALLOC and leaving the function signature alone.

Any chance to make this change?

--
Eliot

#3 lore raw

At Thu, 29 Mar 2012 10:43:20 +1300,

Quoted 9 lines · Eliot Blennerhassett
Quoted 7 lines · Takashi Iwai

At Wed, 28 Mar 2012 09:57:02 +0300,

Quoted 5 lines · Dan Carpenter

This function returns zero or -ENOMEM, but because it's type is u16, the -ENOMEM gets changed to 65524. None of the callers care, but lets fix it anyway as a cleanup.

Quoted 5 lines
Quoted 3 lines
Quoted 1 line

Applied it now. Thanks.

Hmm. I guess it is too late to NAK this change?

Yes, Dan's fix itself is correct, so no big reason to revert.

Quoted 2 lines

I'd prefer changing the return value to HPI_ERROR_MEMORY_ALLOC and leaving the function signature alone.

It's fine to change to HPI_ERROR_MEMORY_ALLOC. Just write another patch to change it appropriately and submit.

But, if we change in that way, we should think again over the return type of these functions, too. If functions are supposed to return these specific error numbers, they should return rather enum HPI_ERROR_CODES type instead of u16. Otherwise it's misleading and an error like this can happen again.

Or, follow the common style, returning int with 0 or a negative error number.

thanks,

Takashi

#4 lore raw

I'm obviously in favour of using standard error codes where ever possible. But when I'm writing a change like this, then I do look at the surrounding context because there are places the use custom error codes (SCSI is an example). In this case, I was confused because there aren't any other error codes in this file, and also the comment says that it should return -ENOMEM.

regards,
dan carpenter

#5 lore raw

PATCH 1/1 ALSA: asihpi - fix return value of hpios_locked_mem_alloc()

In reply to Takashi Iwai

From: Eliot Blennerhassett <[email protected]>

Make this function consistent with others in this module by returning 1 for error, instead of -ENOMEM
(reverts function signature change from a938fb1e)

---
 sound/pci/asihpi/hpi_internal.h |    4 ++--
 sound/pci/asihpi/hpios.c        |   10 +++++-----
 2 files changed, 7 insertions(+), 7 deletions(-)
sound/pci/asihpi/hpi_internal.h +2 -2
index 8c63200..bc86cb7 100644
@@ -1,7 +1,7 @@
 /******************************************************************************
 
     AudioScience HPI driver
-    Copyright (C) 1997-2011  AudioScience Inc. <[email protected]>
+    Copyright (C) 1997-2012  AudioScience Inc. <[email protected]>
 
     This program is free software; you can redistribute it and/or modify
     it under the terms of version 2 of the GNU General Public License as
@@ -42,7 +42,7 @@ On error *pLockedMemHandle marked invalid, non-zero returned.
 If this function succeeds, then HpiOs_LockedMem_GetVirtAddr() and
 HpiOs_LockedMem_GetPyhsAddr() will always succed on the returned handle.
 */
-int hpios_locked_mem_alloc(struct consistent_dma_area *p_locked_mem_handle,
+u16 hpios_locked_mem_alloc(struct consistent_dma_area *p_locked_mem_handle,
 							   /**< memory handle */
 	u32 size, /**< Size in bytes to allocate */
 	struct pci_dev *p_os_reference
sound/pci/asihpi/hpios.c +5 -5
index 87f4385..5ef4fe9 100644
@@ -1,7 +1,7 @@
 /******************************************************************************
 
     AudioScience HPI driver
-    Copyright (C) 1997-2011  AudioScience Inc. <[email protected]>
+    Copyright (C) 1997-2012  AudioScience Inc. <[email protected]>
 
     This program is free software; you can redistribute it and/or modify
     it under the terms of version 2 of the GNU General Public License as
@@ -39,11 +39,11 @@ void hpios_delay_micro_seconds(u32 num_micro_sec)
 
 }
 
-/** Allocated an area of locked memory for bus master DMA operations.
+/** Allocate an area of locked memory for bus master DMA operations.
 
-On error, return -ENOMEM, and *pMemArea.size = 0
+If allocation fails, return 1, and *pMemArea.size = 0
 */
-int hpios_locked_mem_alloc(struct consistent_dma_area *p_mem_area, u32 size,
+u16 hpios_locked_mem_alloc(struct consistent_dma_area *p_mem_area, u32 size,
 	struct pci_dev *pdev)
 {
 	/*?? any benefit in using managed dmam_alloc_coherent? */
@@ -62,7 +62,7 @@ int hpios_locked_mem_alloc(struct consistent_dma_area *p_mem_area, u32 size,
 		HPI_DEBUG_LOG(WARNING,
 			"failed to allocate %d bytes locked memory\n", size);
 		p_mem_area->size = 0;
-		return -ENOMEM;
+		return 1;
 	}
 }
 
Signature · 1 line
1.7.0.4
#6 lore raw

Re: [PATCH] ALSA: asihpi - fix return value of hpios_locked_mem_alloc()

At Fri, 30 Mar 2012 09:52:25 +1300,

Quoted 8 lines · [email protected] wrote:

From: Eliot Blennerhassett <[email protected]>

Make this function consistent with others in this module by returning 1 for error, instead of -ENOMEM
(reverts function signature change from a938fb1e)

Hm, u16 is not ideal, but OK if it's needed for easier maintenance. Applied now.

thanks,

Takashi

Quoted 67 lines
---
 sound/pci/asihpi/hpi_internal.h |    4 ++--
 sound/pci/asihpi/hpios.c        |   10 +++++-----
 2 files changed, 7 insertions(+), 7 deletions(-)
sound/pci/asihpi/hpi_internal.h +2 -2
index 8c63200..bc86cb7 100644
@@ -1,7 +1,7 @@
 /******************************************************************************
 
     AudioScience HPI driver
-    Copyright (C) 1997-2011  AudioScience Inc. <[email protected]>
+    Copyright (C) 1997-2012  AudioScience Inc. <[email protected]>
 
     This program is free software; you can redistribute it and/or modify
     it under the terms of version 2 of the GNU General Public License as
@@ -42,7 +42,7 @@ On error *pLockedMemHandle marked invalid, non-zero returned.
 If this function succeeds, then HpiOs_LockedMem_GetVirtAddr() and
 HpiOs_LockedMem_GetPyhsAddr() will always succed on the returned handle.
 */
-int hpios_locked_mem_alloc(struct consistent_dma_area *p_locked_mem_handle,
+u16 hpios_locked_mem_alloc(struct consistent_dma_area *p_locked_mem_handle,
 							   /**< memory handle */
 	u32 size, /**< Size in bytes to allocate */
 	struct pci_dev *p_os_reference
sound/pci/asihpi/hpios.c +5 -5
index 87f4385..5ef4fe9 100644
@@ -1,7 +1,7 @@
 /******************************************************************************
 
     AudioScience HPI driver
-    Copyright (C) 1997-2011  AudioScience Inc. <[email protected]>
+    Copyright (C) 1997-2012  AudioScience Inc. <[email protected]>
 
     This program is free software; you can redistribute it and/or modify
     it under the terms of version 2 of the GNU General Public License as
@@ -39,11 +39,11 @@ void hpios_delay_micro_seconds(u32 num_micro_sec)
 
 }
 
-/** Allocated an area of locked memory for bus master DMA operations.
+/** Allocate an area of locked memory for bus master DMA operations.
 
-On error, return -ENOMEM, and *pMemArea.size = 0
+If allocation fails, return 1, and *pMemArea.size = 0
 */
-int hpios_locked_mem_alloc(struct consistent_dma_area *p_mem_area, u32 size,
+u16 hpios_locked_mem_alloc(struct consistent_dma_area *p_mem_area, u32 size,
 	struct pci_dev *pdev)
 {
 	/*?? any benefit in using managed dmam_alloc_coherent? */
@@ -62,7 +62,7 @@ int hpios_locked_mem_alloc(struct consistent_dma_area *p_mem_area, u32 size,
 		HPI_DEBUG_LOG(WARNING,
 			"failed to allocate %d bytes locked memory\n", size);
 		p_mem_area->size = 0;
-		return -ENOMEM;
+		return 1;
 	}
 }
 
Signature · 1 line
1.7.0.4