Re: [PATCH net-next 0/2] netvsc: Fix miscellaneous issues

2017-03-25 Thread David Miller
From: k...@exchange.microsoft.com
Date: Fri, 24 Mar 2017 20:54:08 -0700

> Fix miscellaneous issues.

Series applied, thanks.
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH] Convert __le16 to cpu before casting to u32

2017-03-25 Thread Guillaume Brogi

This patch fixes the following sparse warnings:
drivers/staging/rtl8192u/r8192U_dm.c:2307:49: warning: cast from restricted 
__le16
drivers/staging/rtl8192u/r8192U_dm.c:2308:44: warning: cast from restricted 
__le16
drivers/staging/rtl8192u/r8192U_dm.c:2309:44: warning: cast from restricted 
__le16

Those three members of qos_parameters are indeed __le16 so they should
be converted to the cpu's endianness before being cast to u32.

The lines are over the 80 character limit. They already were, and, for
the sake of readability, I don't think they should be split.

Signed-off-by: Guillaume Brogi 
---
 drivers/staging/rtl8192u/r8192U_dm.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/staging/rtl8192u/r8192U_dm.c 
b/drivers/staging/rtl8192u/r8192U_dm.c
index 9209aad0515e..5946c1f8d37d 100644
--- a/drivers/staging/rtl8192u/r8192U_dm.c
+++ b/drivers/staging/rtl8192u/r8192U_dm.c
@@ -2304,9 +2304,9 @@ static void dm_check_edca_turbo(
/*  For Each time updating EDCA parameter, 
reset EDCA turbo mode status. */
dm_init_edca_turbo(dev);
u1bAIFS = qos_parameters->aifs[0] * 
((mode&(IEEE_G|IEEE_N_24G)) ? 9 : 20) + aSifsTime;
-   u4bAcParam = 
(((u32)(qos_parameters->tx_op_limit[0])) << AC_PARAM_TXOP_LIMIT_OFFSET)|
-   (((u32)(qos_parameters->cw_max[0])) << 
AC_PARAM_ECW_MAX_OFFSET)|
-   (((u32)(qos_parameters->cw_min[0])) << 
AC_PARAM_ECW_MIN_OFFSET)|
+   u4bAcParam = 
(((u32)le16_to_cpu(qos_parameters->tx_op_limit[0])) << 
AC_PARAM_TXOP_LIMIT_OFFSET) |
+   
(((u32)le16_to_cpu(qos_parameters->cw_max[0])) << AC_PARAM_ECW_MAX_OFFSET) |
+   
(((u32)le16_to_cpu(qos_parameters->cw_min[0])) << AC_PARAM_ECW_MIN_OFFSET) |
((u32)u1bAIFS << AC_PARAM_AIFS_OFFSET);
/*write_nic_dword(dev, WDCAPARA_ADD[i], 
u4bAcParam);*/
write_nic_dword(dev, EDCAPARA_BE,  u4bAcParam);
-- 
2.12.1


___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


Re: [PATCH v9] staging: iio: adis16060: Remove iio_dev mlock and refactor code

2017-03-25 Thread SIMRAN SINGHAL
On Sat, Mar 25, 2017 at 11:16 PM, Jonathan Cameron  wrote:
> On 23/03/17 09:20, simran singhal wrote:
>> The IIO subsystem is redefining iio_dev->mlock to be used by
>> the IIO core only for protecting device operating mode changes.
>> ie. Changes between INDIO_DIRECT_MODE, INDIO_BUFFER_* modes.
>>
>> In this driver, mlock was being used to protect hardware state changes.
>>
>> In the driver, buf_lock protects both the adis16060_spi_write() and
>> adis16060_spi_read() functions and both are always called in pair.
>> First write, then read. Refactor the code to have one single function
>> adis16060_spi_write_then_read() protected by the buf_lock. This removes
>> the need for additional locking via mlock, so this locking is removed.
>>
>> Signed-off-by: simran singhal 
> Unfortunately I've now pushed out v8 as togreg which is a non rebasing tree.
> As such, could you post a separate patch, on top of that making the
> than -> then change?
>

ok, I will send the patch with than-> then change.

> Thanks,
>
> Jonathan
>> ---
>>
>>  v9:
>>-Change the name of function from adis16060_spi_write_than_read()
>> to adis16060_spi_write_then_read(). change "than" to "then" as
>> its time depended.
>>-Add mutex_unlock
> As Alison keeps mentioning, ideal is to keep all previous change logs
> here as it allows those who last looked at say v5 to know what changed
> in between without reading a lot of threads!
>>

Sorry, will not repeate this in future.

>>  drivers/staging/iio/gyro/adis16060_core.c | 35 
>> +--
>>  1 file changed, 10 insertions(+), 25 deletions(-)
>>
>> diff --git a/drivers/staging/iio/gyro/adis16060_core.c 
>> b/drivers/staging/iio/gyro/adis16060_core.c
>> index c9d46e7..9675245 100644
>> --- a/drivers/staging/iio/gyro/adis16060_core.c
>> +++ b/drivers/staging/iio/gyro/adis16060_core.c
>> @@ -40,25 +40,20 @@ struct adis16060_state {
>>
>>  static struct iio_dev *adis16060_iio_dev;
>>
>> -static int adis16060_spi_write(struct iio_dev *indio_dev, u8 val)
>> +static int adis16060_spi_write_then_read(struct iio_dev *indio_dev,
>> +  u8 conf, u16 *val)
>>  {
>>   int ret;
>>   struct adis16060_state *st = iio_priv(indio_dev);
>>
>>   mutex_lock(>buf_lock);
>> - st->buf[2] = val; /* The last 8 bits clocked in are latched */
>> + st->buf[2] = conf; /* The last 8 bits clocked in are latched */
>>   ret = spi_write(st->us_w, st->buf, 3);
>> - mutex_unlock(>buf_lock);
>> -
>> - return ret;
>> -}
>> -
>> -static int adis16060_spi_read(struct iio_dev *indio_dev, u16 *val)
>> -{
>> - int ret;
>> - struct adis16060_state *st = iio_priv(indio_dev);
>>
>> - mutex_lock(>buf_lock);
>> + if (ret < 0) {
>> + mutex_unlock(>buf_lock);
>> + return ret;
>> + }
>>
>>   ret = spi_read(st->us_r, st->buf, 3);
>>
>> @@ -86,17 +81,11 @@ static int adis16060_read_raw(struct iio_dev *indio_dev,
>>
>>   switch (mask) {
>>   case IIO_CHAN_INFO_RAW:
>> - /* Take the iio_dev status lock */
>> - mutex_lock(_dev->mlock);
>> - ret = adis16060_spi_write(indio_dev, chan->address);
>> + ret = adis16060_spi_write_then_read(indio_dev,
>> + chan->address, );
>>   if (ret < 0)
>> - goto out_unlock;
>> + return ret;
>>
>> - ret = adis16060_spi_read(indio_dev, );
>> - if (ret < 0)
>> - goto out_unlock;
>> -
>> - mutex_unlock(_dev->mlock);
>>   *val = tval;
>>   return IIO_VAL_INT;
>>   case IIO_CHAN_INFO_OFFSET:
>> @@ -110,10 +99,6 @@ static int adis16060_read_raw(struct iio_dev *indio_dev,
>>   }
>>
>>   return -EINVAL;
>> -
>> -out_unlock:
>> - mutex_unlock(_dev->mlock);
>> - return ret;
>>  }
>>
>>  static const struct iio_info adis16060_info = {
>>
>
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


Re: [PATCH v9] staging: iio: adis16060: Remove iio_dev mlock and refactor code

2017-03-25 Thread Jonathan Cameron
On 23/03/17 09:20, simran singhal wrote:
> The IIO subsystem is redefining iio_dev->mlock to be used by
> the IIO core only for protecting device operating mode changes.
> ie. Changes between INDIO_DIRECT_MODE, INDIO_BUFFER_* modes.
> 
> In this driver, mlock was being used to protect hardware state changes.
> 
> In the driver, buf_lock protects both the adis16060_spi_write() and
> adis16060_spi_read() functions and both are always called in pair.
> First write, then read. Refactor the code to have one single function
> adis16060_spi_write_then_read() protected by the buf_lock. This removes
> the need for additional locking via mlock, so this locking is removed.
> 
> Signed-off-by: simran singhal 
Unfortunately I've now pushed out v8 as togreg which is a non rebasing tree.
As such, could you post a separate patch, on top of that making the
than -> then change?

Thanks,

Jonathan
> ---
> 
>  v9:
>-Change the name of function from adis16060_spi_write_than_read()
> to adis16060_spi_write_then_read(). change "than" to "then" as
> its time depended.
>-Add mutex_unlock
As Alison keeps mentioning, ideal is to keep all previous change logs
here as it allows those who last looked at say v5 to know what changed
in between without reading a lot of threads!
>  
>  drivers/staging/iio/gyro/adis16060_core.c | 35 
> +--
>  1 file changed, 10 insertions(+), 25 deletions(-)
> 
> diff --git a/drivers/staging/iio/gyro/adis16060_core.c 
> b/drivers/staging/iio/gyro/adis16060_core.c
> index c9d46e7..9675245 100644
> --- a/drivers/staging/iio/gyro/adis16060_core.c
> +++ b/drivers/staging/iio/gyro/adis16060_core.c
> @@ -40,25 +40,20 @@ struct adis16060_state {
>  
>  static struct iio_dev *adis16060_iio_dev;
>  
> -static int adis16060_spi_write(struct iio_dev *indio_dev, u8 val)
> +static int adis16060_spi_write_then_read(struct iio_dev *indio_dev,
> +  u8 conf, u16 *val)
>  {
>   int ret;
>   struct adis16060_state *st = iio_priv(indio_dev);
>  
>   mutex_lock(>buf_lock);
> - st->buf[2] = val; /* The last 8 bits clocked in are latched */
> + st->buf[2] = conf; /* The last 8 bits clocked in are latched */
>   ret = spi_write(st->us_w, st->buf, 3);
> - mutex_unlock(>buf_lock);
> -
> - return ret;
> -}
> -
> -static int adis16060_spi_read(struct iio_dev *indio_dev, u16 *val)
> -{
> - int ret;
> - struct adis16060_state *st = iio_priv(indio_dev);
>  
> - mutex_lock(>buf_lock);
> + if (ret < 0) {
> + mutex_unlock(>buf_lock);
> + return ret;
> + }
>  
>   ret = spi_read(st->us_r, st->buf, 3);
>  
> @@ -86,17 +81,11 @@ static int adis16060_read_raw(struct iio_dev *indio_dev,
>  
>   switch (mask) {
>   case IIO_CHAN_INFO_RAW:
> - /* Take the iio_dev status lock */
> - mutex_lock(_dev->mlock);
> - ret = adis16060_spi_write(indio_dev, chan->address);
> + ret = adis16060_spi_write_then_read(indio_dev,
> + chan->address, );
>   if (ret < 0)
> - goto out_unlock;
> + return ret;
>  
> - ret = adis16060_spi_read(indio_dev, );
> - if (ret < 0)
> - goto out_unlock;
> -
> - mutex_unlock(_dev->mlock);
>   *val = tval;
>   return IIO_VAL_INT;
>   case IIO_CHAN_INFO_OFFSET:
> @@ -110,10 +99,6 @@ static int adis16060_read_raw(struct iio_dev *indio_dev,
>   }
>  
>   return -EINVAL;
> -
> -out_unlock:
> - mutex_unlock(_dev->mlock);
> - return ret;
>  }
>  
>  static const struct iio_info adis16060_info = {
> 

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


Re: [PATCH] staging: iio: accel: remove unneeded braces around single statements

2017-03-25 Thread Jonathan Cameron
On 23/03/17 06:18, Mark Stenglein wrote:
> Fixes three checkpatch warnings due to braces used when single
> statements are sufficient.
> 
> Signed-off-by: Mark Stenglein 
Applied to the togreg branch of iio.git - initially pushed
out as testing for the autobuilders to play with it.

Thanks,

Jonathan
> ---
>  drivers/staging/iio/accel/adis16209.c | 3 +--
>  drivers/staging/iio/accel/adis16240.c | 6 ++
>  2 files changed, 3 insertions(+), 6 deletions(-)
> 
> diff --git a/drivers/staging/iio/accel/adis16209.c 
> b/drivers/staging/iio/accel/adis16209.c
> index 52fa2e0511be..8485c024e3f5 100644
> --- a/drivers/staging/iio/accel/adis16209.c
> +++ b/drivers/staging/iio/accel/adis16209.c
> @@ -255,9 +255,8 @@ static int adis16209_read_raw(struct iio_dev *indio_dev,
>   }
>   addr = adis16209_addresses[chan->scan_index][0];
>   ret = adis_read_reg_16(st, addr, );
> - if (ret) {
> + if (ret)
>   return ret;
> - }
>   val16 &= (1 << bits) - 1;
>   val16 = (s16)(val16 << (16 - bits)) >> (16 - bits);
>   *val = val16;
> diff --git a/drivers/staging/iio/accel/adis16240.c 
> b/drivers/staging/iio/accel/adis16240.c
> index 6e3c95c9c3f6..109cd94b5ac3 100644
> --- a/drivers/staging/iio/accel/adis16240.c
> +++ b/drivers/staging/iio/accel/adis16240.c
> @@ -290,9 +290,8 @@ static int adis16240_read_raw(struct iio_dev *indio_dev,
>   bits = 10;
>   addr = adis16240_addresses[chan->scan_index][0];
>   ret = adis_read_reg_16(st, addr, );
> - if (ret) {
> + if (ret)
>   return ret;
> - }
>   val16 &= (1 << bits) - 1;
>   val16 = (s16)(val16 << (16 - bits)) >> (16 - bits);
>   *val = val16;
> @@ -301,9 +300,8 @@ static int adis16240_read_raw(struct iio_dev *indio_dev,
>   bits = 10;
>   addr = adis16240_addresses[chan->scan_index][1];
>   ret = adis_read_reg_16(st, addr, );
> - if (ret) {
> + if (ret)
>   return ret;
> - }
>   val16 &= (1 << bits) - 1;
>   val16 = (s16)(val16 << (16 - bits)) >> (16 - bits);
>   *val = val16;
> 

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH for-4.4 04/19] x86/hyperv: Handle unknown NMIs on one CPU when unknown_nmi_panic

2017-03-25 Thread Sumit Semwal
From: Vitaly Kuznetsov 

[ Upstream commit 59107e2f48831daedc46973ce4988605ab066de3 ]

There is a feature in Hyper-V ('Debug-VM --InjectNonMaskableInterrupt')
which injects NMI to the guest. We may want to crash the guest and do kdump
on this NMI by enabling unknown_nmi_panic. To make kdump succeed we need to
allow the kdump kernel to re-establish VMBus connection so it will see
VMBus devices (storage, network,..).

To properly unload VMBus making it possible to start over during kdump we
need to do the following:

 - Send an 'unload' message to the hypervisor. This can be done on any CPU
   so we do this the crashing CPU.

 - Receive the 'unload finished' reply message. WS2012R2 delivers this
   message to the CPU which was used to establish VMBus connection during
   module load and this CPU may differ from the CPU sending 'unload'.

Receiving a VMBus message means the following:

 - There is a per-CPU slot in memory for one message. This slot can in
   theory be accessed by any CPU.

 - We get an interrupt on the CPU when a message was placed into the slot.

 - When we read the message we need to clear the slot and signal the fact
   to the hypervisor. In case there are more messages to this CPU pending
   the hypervisor will deliver the next message. The signaling is done by
   writing to an MSR so this can only be done on the appropriate CPU.

To avoid doing cross-CPU work on crash we have vmbus_wait_for_unload()
function which checks message slots for all CPUs in a loop waiting for the
'unload finished' messages. However, there is an issue which arises when
these conditions are met:

 - We're crashing on a CPU which is different from the one which was used
   to initially contact the hypervisor.

 - The CPU which was used for the initial contact is blocked with interrupts
   disabled and there is a message pending in the message slot.

In this case we won't be able to read the 'unload finished' message on the
crashing CPU. This is reproducible when we receive unknown NMIs on all CPUs
simultaneously: the first CPU entering panic() will proceed to crash and
all other CPUs will stop themselves with interrupts disabled.

The suggested solution is to handle unknown NMIs for Hyper-V guests on the
first CPU which gets them only. This will allow us to rely on VMBus
interrupt handler being able to receive the 'unload finish' message in
case it is delivered to a different CPU.

The issue is not reproducible on WS2016 as Debug-VM delivers NMI to the
boot CPU only, WS2012R2 and earlier Hyper-V versions are affected.

Signed-off-by: Vitaly Kuznetsov 
Acked-by: K. Y. Srinivasan 
Cc: de...@linuxdriverproject.org
Cc: Haiyang Zhang 
Link: http://lkml.kernel.org/r/20161202100720.28121-1-vkuzn...@redhat.com
Signed-off-by: Thomas Gleixner 
Signed-off-by: Ingo Molnar 
Signed-off-by: Sasha Levin 
Signed-off-by: Greg Kroah-Hartman 
Signed-off-by: Sumit Semwal 
---
 arch/x86/kernel/cpu/mshyperv.c | 24 
 1 file changed, 24 insertions(+)

diff --git a/arch/x86/kernel/cpu/mshyperv.c b/arch/x86/kernel/cpu/mshyperv.c
index cfc4a96..83b5f7a 100644
--- a/arch/x86/kernel/cpu/mshyperv.c
+++ b/arch/x86/kernel/cpu/mshyperv.c
@@ -30,6 +30,7 @@
 #include 
 #include 
 #include 
+#include 
 
 struct ms_hyperv_info ms_hyperv;
 EXPORT_SYMBOL_GPL(ms_hyperv);
@@ -157,6 +158,26 @@ static unsigned char hv_get_nmi_reason(void)
return 0;
 }
 
+#ifdef CONFIG_X86_LOCAL_APIC
+/*
+ * Prior to WS2016 Debug-VM sends NMIs to all CPUs which makes
+ * it dificult to process CHANNELMSG_UNLOAD in case of crash. Handle
+ * unknown NMI on the first CPU which gets it.
+ */
+static int hv_nmi_unknown(unsigned int val, struct pt_regs *regs)
+{
+   static atomic_t nmi_cpu = ATOMIC_INIT(-1);
+
+   if (!unknown_nmi_panic)
+   return NMI_DONE;
+
+   if (atomic_cmpxchg(_cpu, -1, raw_smp_processor_id()) != -1)
+   return NMI_HANDLED;
+
+   return NMI_DONE;
+}
+#endif
+
 static void __init ms_hyperv_init_platform(void)
 {
/*
@@ -182,6 +203,9 @@ static void __init ms_hyperv_init_platform(void)
printk(KERN_INFO "HyperV: LAPIC Timer Frequency: %#x\n",
lapic_timer_frequency);
}
+
+   register_nmi_handler(NMI_UNKNOWN, hv_nmi_unknown, NMI_FLAG_FIRST,
+"hv_nmi_unknown");
 #endif
 
if (ms_hyperv.features & HV_X64_MSR_TIME_REF_COUNT_AVAILABLE)
-- 
2.7.4

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


Re: [PATCH] staging: iio: Remove extra Parenthesis.

2017-03-25 Thread Jonathan Cameron
On 24/03/17 13:55, Arushi Singhal wrote:
> Remove the extra parenthesis remove the checkpatch issue.
> 
> Signed-off-by: Arushi Singhal 
Applied to the togreg branch of iio.git and pushed out as testing for
the autobuilders to play with it.

Thanks,

Jonathan
> ---
>  drivers/staging/iio/cdc/ad7746.c | 16 
>  1 file changed, 8 insertions(+), 8 deletions(-)
> 
> diff --git a/drivers/staging/iio/cdc/ad7746.c 
> b/drivers/staging/iio/cdc/ad7746.c
> index 033a41fd9bee..b4afc12f827f 100644
> --- a/drivers/staging/iio/cdc/ad7746.c
> +++ b/drivers/staging/iio/cdc/ad7746.c
> @@ -50,10 +50,10 @@
>  #define AD7746_STATUS_RDYCAP BIT(0)
>  
>  /* Capacitive Channel Setup Register Bit Designations (AD7746_REG_CAP_SETUP) 
> */
> -#define AD7746_CAPSETUP_CAPEN(BIT(7))
> -#define AD7746_CAPSETUP_CIN2 (BIT(6)) /* AD7746 only */
> -#define AD7746_CAPSETUP_CAPDIFF  (BIT(5))
> -#define AD7746_CAPSETUP_CACHOP   (BIT(0))
> +#define AD7746_CAPSETUP_CAPENBIT(7)
> +#define AD7746_CAPSETUP_CIN2 BIT(6) /* AD7746 only */
> +#define AD7746_CAPSETUP_CAPDIFF  BIT(5)
> +#define AD7746_CAPSETUP_CACHOP   BIT(0)
>  
>  /* Voltage/Temperature Setup Register Bit Designations (AD7746_REG_VT_SETUP) 
> */
>  #define AD7746_VTSETUP_VTEN  (1 << 7)
> @@ -61,9 +61,9 @@
>  #define AD7746_VTSETUP_VTMD_EXT_TEMP (1 << 5)
>  #define AD7746_VTSETUP_VTMD_VDD_MON  (2 << 5)
>  #define AD7746_VTSETUP_VTMD_EXT_VIN  (3 << 5)
> -#define AD7746_VTSETUP_EXTREF(BIT(4))
> -#define AD7746_VTSETUP_VTSHORT   (BIT(1))
> -#define AD7746_VTSETUP_VTCHOP(BIT(0))
> +#define AD7746_VTSETUP_EXTREFBIT(4)
> +#define AD7746_VTSETUP_VTSHORT   BIT(1)
> +#define AD7746_VTSETUP_VTCHOPBIT(0)
>  
>  /* Excitation Setup Register Bit Designations (AD7746_REG_EXC_SETUP) */
>  #define AD7746_EXCSETUP_CLKCTRL  BIT(7)
> @@ -87,7 +87,7 @@
>  #define AD7746_CONF_MODE_GAIN_CAL(6 << 0)
>  
>  /* CAPDAC Register Bit Designations (AD7746_REG_CAPDACx) */
> -#define AD7746_CAPDAC_DACEN  (BIT(7))
> +#define AD7746_CAPDAC_DACEN  BIT(7)
>  #define AD7746_CAPDAC_DACP(x)((x) & 0x7F)
>  
>  /*
> 

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH] netvsc: fix dereference before null check errors

2017-03-25 Thread Colin King
From: Colin Ian King 

ndev is being checked to see if it is a null pointer however before
the null check ndev is being dereferenced; hence there is a potential
null pointer dereference bug that needs fixing. Fix this by only
dereferencing ndev after the null check.

Detected by CoverityScan, CID#1420760, CID#140761 ("Dereference
before null check")

Signed-off-by: Colin Ian King 
---
 drivers/net/hyperv/netvsc_drv.c | 6 --
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/drivers/net/hyperv/netvsc_drv.c b/drivers/net/hyperv/netvsc_drv.c
index f830bbbd8ad4..f24c2891dd0c 100644
--- a/drivers/net/hyperv/netvsc_drv.c
+++ b/drivers/net/hyperv/netvsc_drv.c
@@ -1135,7 +1135,7 @@ static int netvsc_get_rxfh(struct net_device *dev, u32 
*indir, u8 *key,
 {
struct net_device_context *ndc = netdev_priv(dev);
struct netvsc_device *ndev = rcu_dereference(ndc->nvdev);
-   struct rndis_device *rndis_dev = ndev->extension;
+   struct rndis_device *rndis_dev;
int i;
 
if (!ndev)
@@ -1144,6 +1144,7 @@ static int netvsc_get_rxfh(struct net_device *dev, u32 
*indir, u8 *key,
if (hfunc)
*hfunc = ETH_RSS_HASH_TOP;  /* Toeplitz */
 
+   rndis_dev = ndev->extension;
if (indir) {
for (i = 0; i < ITAB_NUM; i++)
indir[i] = rndis_dev->ind_table[i];
@@ -1160,7 +1161,7 @@ static int netvsc_set_rxfh(struct net_device *dev, const 
u32 *indir,
 {
struct net_device_context *ndc = netdev_priv(dev);
struct netvsc_device *ndev = rtnl_dereference(ndc->nvdev);
-   struct rndis_device *rndis_dev = ndev->extension;
+   struct rndis_device *rndis_dev;
int i;
 
if (!ndev)
@@ -1169,6 +1170,7 @@ static int netvsc_set_rxfh(struct net_device *dev, const 
u32 *indir,
if (hfunc != ETH_RSS_HASH_NO_CHANGE && hfunc != ETH_RSS_HASH_TOP)
return -EOPNOTSUPP;
 
+   rndis_dev = ndev->extension;
if (indir) {
for (i = 0; i < ITAB_NUM; i++)
if (indir[i] >= dev->num_rx_queues)
-- 
2.11.0

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH] netvsc: fix unititialized return value in variable ret

2017-03-25 Thread Colin King
From: Colin Ian King 

It is possible for an uninitialized value of ret to be returned
so fix this by initializing ret to zero.

Detected by CoverityScan, CID#1420762 ("Uninitialized scalar variable")

Fixes: 163891d7d429 ("netvsc: handle offline mtu and channel change")
Signed-off-by: Colin Ian King 
---
 drivers/net/hyperv/netvsc_drv.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/hyperv/netvsc_drv.c b/drivers/net/hyperv/netvsc_drv.c
index eb7ae79d47bb..f830bbbd8ad4 100644
--- a/drivers/net/hyperv/netvsc_drv.c
+++ b/drivers/net/hyperv/netvsc_drv.c
@@ -855,7 +855,7 @@ static int netvsc_change_mtu(struct net_device *ndev, int 
mtu)
struct hv_device *hdev = ndevctx->device_ctx;
struct netvsc_device_info device_info;
bool was_running;
-   int ret;
+   int ret = 0;
 
if (!nvdev || nvdev->destroy)
return -ENODEV;
-- 
2.11.0

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


Re: [PATCH v2] staging: vt6656: fixed an indentation coding style issue

2017-03-25 Thread Prasant Jalan
On Sat, Mar 25, 2017 at 6:01 PM, Arushi Singhal
 wrote:
>
>
> On Sat, Mar 25, 2017 at 5:40 PM, Prasant Jalan 
> wrote:
>>
>>
>> Replacing spaces with tabs for indetation to fix checkpatch.pl error
>> "code indent should use tabs where possible".
>
> I think the commit message should be much more clear as for "code
> indentation"
> you are even adding and deleting spaces.
>>
>>

Hi Arushi,

Thanks for comments and sorry to bother with a coding style fix patch.
I'm just trying to learn and felt its an easy one.

I did not understand your comment "adding and deleting spaces".
I'm only deleting spaces and replacing it with tabs.
I'm not adding spaces. Could you please clarify.

Regards, Prasant

>>
>> Signed-off-by: Prasant Jalan 
>> ---
>>
>>   v2:
>> - improved changelog comments
>> - fixed only one issue
>>
>>
>>  drivers/staging/vt6656/rxtx.c | 35 +++
>>  1 file changed, 19 insertions(+), 16 deletions(-)
>>
>> diff --git a/drivers/staging/vt6656/rxtx.c b/drivers/staging/vt6656/rxtx.c
>> index 1835cd1..7ebd1ee 100644
>> --- a/drivers/staging/vt6656/rxtx.c
>> +++ b/drivers/staging/vt6656/rxtx.c
>> @@ -114,7 +114,7 @@ static __le16 vnt_time_stamp_off(struct vnt_private
>> *priv, u16 rate)
>>  }
>>
>>  static u32 vnt_get_rsvtime(struct vnt_private *priv, u8 pkt_type,
>> -   u32 frame_length, u16 rate, int need_ack)
>> +   u32 frame_length, u16 rate, int need_ack)
>>  {
>> u32 data_time, ack_time;
>>
>> @@ -135,14 +135,16 @@ static u32 vnt_get_rsvtime(struct vnt_private *priv,
>> u8 pkt_type,
>>  }
>>
>>  static __le16 vnt_rxtx_rsvtime_le16(struct vnt_private *priv, u8
>> pkt_type,
>> -u32 frame_length, u16 rate, int
>> need_ack)
>> +   u32 frame_length, u16 rate,
>> +   int need_ack)
>>  {
>> return cpu_to_le16((u16)vnt_get_rsvtime(priv, pkt_type,
>> frame_length, rate, need_ack));
>>  }
>>
>>  static __le16 vnt_get_rtscts_rsvtime_le(struct vnt_private *priv,
>> -u8 rsv_type, u8 pkt_type, u32
>> frame_length, u16 current_rate)
>> +   u8 rsv_type, u8 pkt_type,
>> +   u32 frame_length, u16
>> current_rate)
>>  {
>> u32 rrv_time, rts_time, cts_time, ack_time, data_time;
>>
>> @@ -160,19 +162,19 @@ static __le16 vnt_get_rtscts_rsvtime_le(struct
>> vnt_private *priv,
>> rts_time = vnt_get_frame_time(priv->preamble_type,
>> pkt_type, 20, priv->top_cck_basic_rate);
>> cts_time = vnt_get_frame_time(priv->preamble_type,
>> pkt_type,
>> - 14,
>> priv->top_cck_basic_rate);
>> +   14,
>> priv->top_cck_basic_rate);
>> ack_time = vnt_get_frame_time(priv->preamble_type,
>> pkt_type,
>> - 14,
>> priv->top_ofdm_basic_rate);
>> +   14,
>> priv->top_ofdm_basic_rate);
>> } else if (rsv_type == 2) {
>> rts_time = vnt_get_frame_time(priv->preamble_type,
>> pkt_type,
>> - 20,
>> priv->top_ofdm_basic_rate);
>> +   20,
>> priv->top_ofdm_basic_rate);
>> cts_time = ack_time =
>> vnt_get_frame_time(priv->preamble_type,
>> pkt_type, 14, priv->top_ofdm_basic_rate);
>> } else if (rsv_type == 3) {
>> cts_time = vnt_get_frame_time(priv->preamble_type,
>> pkt_type,
>> - 14,
>> priv->top_cck_basic_rate);
>> +   14,
>> priv->top_cck_basic_rate);
>> ack_time = vnt_get_frame_time(priv->preamble_type,
>> pkt_type,
>> - 14,
>> priv->top_ofdm_basic_rate);
>> +   14,
>> priv->top_ofdm_basic_rate);
>>
>> rrv_time = cts_time + ack_time + data_time + 2 *
>> priv->sifs;
>>
>> @@ -227,7 +229,8 @@ static __le16 vnt_get_rtscts_duration_le(struct
>> vnt_usb_send_context *context,
>> case RTSDUR_AA_F0:
>> case RTSDUR_AA_F1:
>> cts_time = vnt_get_frame_time(priv->preamble_type,
>> - pkt_type, 14,
>> priv->top_ofdm_basic_rate);
>> +   pkt_type, 14,
>> +
>> priv->top_ofdm_basic_rate);
>> dur_time = cts_time + 2 * priv->sifs +
>> vnt_get_rsvtime(priv, pkt_type,
>> frame_length, rate, need_ack);
>> @@ -410,7 +413,7 @@ 

[PATCH v2] staging: vt6656: fixed an indentation coding style issue

2017-03-25 Thread Prasant Jalan

Replacing spaces with tabs for indetation to fix checkpatch.pl error
"code indent should use tabs where possible".


Signed-off-by: Prasant Jalan 
---

  v2:
- improved changelog comments
- fixed only one issue


 drivers/staging/vt6656/rxtx.c | 35 +++
 1 file changed, 19 insertions(+), 16 deletions(-)

diff --git a/drivers/staging/vt6656/rxtx.c b/drivers/staging/vt6656/rxtx.c
index 1835cd1..7ebd1ee 100644
--- a/drivers/staging/vt6656/rxtx.c
+++ b/drivers/staging/vt6656/rxtx.c
@@ -114,7 +114,7 @@ static __le16 vnt_time_stamp_off(struct vnt_private *priv, 
u16 rate)
 }
 
 static u32 vnt_get_rsvtime(struct vnt_private *priv, u8 pkt_type,
-   u32 frame_length, u16 rate, int need_ack)
+   u32 frame_length, u16 rate, int need_ack)
 {
u32 data_time, ack_time;
 
@@ -135,14 +135,16 @@ static u32 vnt_get_rsvtime(struct vnt_private *priv, u8 
pkt_type,
 }
 
 static __le16 vnt_rxtx_rsvtime_le16(struct vnt_private *priv, u8 pkt_type,
-u32 frame_length, u16 rate, int need_ack)
+   u32 frame_length, u16 rate,
+   int need_ack)
 {
return cpu_to_le16((u16)vnt_get_rsvtime(priv, pkt_type,
frame_length, rate, need_ack));
 }
 
 static __le16 vnt_get_rtscts_rsvtime_le(struct vnt_private *priv,
-u8 rsv_type, u8 pkt_type, u32 
frame_length, u16 current_rate)
+   u8 rsv_type, u8 pkt_type,
+   u32 frame_length, u16 current_rate)
 {
u32 rrv_time, rts_time, cts_time, ack_time, data_time;
 
@@ -160,19 +162,19 @@ static __le16 vnt_get_rtscts_rsvtime_le(struct 
vnt_private *priv,
rts_time = vnt_get_frame_time(priv->preamble_type,
pkt_type, 20, priv->top_cck_basic_rate);
cts_time = vnt_get_frame_time(priv->preamble_type, pkt_type,
- 14, priv->top_cck_basic_rate);
+   14, priv->top_cck_basic_rate);
ack_time = vnt_get_frame_time(priv->preamble_type, pkt_type,
- 14, priv->top_ofdm_basic_rate);
+   14, priv->top_ofdm_basic_rate);
} else if (rsv_type == 2) {
rts_time = vnt_get_frame_time(priv->preamble_type, pkt_type,
- 20, priv->top_ofdm_basic_rate);
+   20, priv->top_ofdm_basic_rate);
cts_time = ack_time = vnt_get_frame_time(priv->preamble_type,
pkt_type, 14, priv->top_ofdm_basic_rate);
} else if (rsv_type == 3) {
cts_time = vnt_get_frame_time(priv->preamble_type, pkt_type,
- 14, priv->top_cck_basic_rate);
+   14, priv->top_cck_basic_rate);
ack_time = vnt_get_frame_time(priv->preamble_type, pkt_type,
- 14, priv->top_ofdm_basic_rate);
+   14, priv->top_ofdm_basic_rate);
 
rrv_time = cts_time + ack_time + data_time + 2 * priv->sifs;
 
@@ -227,7 +229,8 @@ static __le16 vnt_get_rtscts_duration_le(struct 
vnt_usb_send_context *context,
case RTSDUR_AA_F0:
case RTSDUR_AA_F1:
cts_time = vnt_get_frame_time(priv->preamble_type,
- pkt_type, 14, 
priv->top_ofdm_basic_rate);
+   pkt_type, 14,
+   priv->top_ofdm_basic_rate);
dur_time = cts_time + 2 * priv->sifs +
vnt_get_rsvtime(priv, pkt_type,
frame_length, rate, need_ack);
@@ -410,7 +413,7 @@ static u16 vnt_rxtx_rts_g_head(struct vnt_usb_send_context 
*tx_context,
u16 current_rate = tx_context->tx_rate;
 
vnt_get_phy_field(priv, rts_frame_len, priv->top_cck_basic_rate,
- PK_TYPE_11B, >b);
+   PK_TYPE_11B, >b);
vnt_get_phy_field(priv, rts_frame_len, priv->top_ofdm_basic_rate,
  tx_context->pkt_type, >a);
 
@@ -437,7 +440,7 @@ static u16 vnt_rxtx_rts_g_fb_head(struct 
vnt_usb_send_context *tx_context,
u16 rts_frame_len = 20;
 
vnt_get_phy_field(priv, rts_frame_len, priv->top_cck_basic_rate,
- PK_TYPE_11B, >b);
+   PK_TYPE_11B, >b);
vnt_get_phy_field(priv, rts_frame_len, priv->top_ofdm_basic_rate,
  tx_context->pkt_type, >a);
 
@@ -683,9 +686,9 @@ static u16 vnt_rxtx_ab(struct 

Re: [PATCH] staging: tsl2x7x: Moved contents of the header to the source file.

2017-03-25 Thread kbuild test robot
Hi Arushi,

[auto build test ERROR on iio/togreg]
[also build test ERROR on v4.11-rc3 next-20170324]
[if your patch is applied to the wrong git tree, please drop us a note to help 
improve the system]

url:
https://github.com/0day-ci/linux/commits/Arushi-Singhal/staging-tsl2x7x-Moved-contents-of-the-header-to-the-source-file/20170325-152616
base:   https://git.kernel.org/pub/scm/linux/kernel/git/jic23/iio.git togreg
config: x86_64-randconfig-x004-201712 (attached as .config)
compiler: gcc-6 (Debian 6.2.0-3) 6.2.0 20160901
reproduce:
# save the attached .config to linux build tree
make ARCH=x86_64 

All errors (new ones prefixed by >>):

   In file included from drivers/staging/iio/light/tsl2x7x_core.c:33:0:
>> drivers/staging/iio/light/tsl2x7x.h:39:40: error: 
>> 'TSL2X7X_MAX_LUX_TABLE_SIZE' undeclared here (not in a function)
 struct tsl2x7x_lux platform_lux_table[TSL2X7X_MAX_LUX_TABLE_SIZE];
   ^~

vim +/TSL2X7X_MAX_LUX_TABLE_SIZE +39 drivers/staging/iio/light/tsl2x7x.h

3c97c08b Jon Brenner 2012-04-24  33   *
3c97c08b Jon Brenner 2012-04-24  34   */
3c97c08b Jon Brenner 2012-04-24  35  struct tsl2X7X_platform_data {
3c97c08b Jon Brenner 2012-04-24  36 int (*platform_power)(struct device 
*dev, pm_message_t);
3c97c08b Jon Brenner 2012-04-24  37 int (*power_on)(struct iio_dev 
*indio_dev);
3c97c08b Jon Brenner 2012-04-24  38 int (*power_off)(struct i2c_client 
*dev);
3c97c08b Jon Brenner 2012-04-24 @39 struct tsl2x7x_lux 
platform_lux_table[TSL2X7X_MAX_LUX_TABLE_SIZE];
3c97c08b Jon Brenner 2012-04-24  40 struct tsl2x7x_settings 
*platform_default_settings;
3c97c08b Jon Brenner 2012-04-24  41  };
3c97c08b Jon Brenner 2012-04-24  42  

:: The code at line 39 was first introduced by commit
:: 3c97c08b5735ac05ebc0cbd0aa7722393f50b846 staging: iio: add TAOS tsl2x7x 
driver

:: TO: Jon Brenner <jbren...@taosinc.com>
:: CC: Greg Kroah-Hartman <gre...@linuxfoundation.org>

---
0-DAY kernel test infrastructureOpen Source Technology Center
https://lists.01.org/pipermail/kbuild-all   Intel Corporation


.config.gz
Description: application/gzip
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


Re: [PATCH] staging: most: Adds parentheses around macros with complex values

2017-03-25 Thread kbuild test robot
Hi Mark,

[auto build test ERROR on staging/staging-testing]
[also build test ERROR on v4.11-rc3 next-20170324]
[if your patch is applied to the wrong git tree, please drop us a note to help 
improve the system]

url:
https://github.com/0day-ci/linux/commits/Mark-Stenglein/staging-most-Adds-parentheses-around-macros-with-complex-values/20170325-145958
config: i386-randconfig-x073-201712 (attached as .config)
compiler: gcc-6 (Debian 6.2.0-3) 6.2.0 20160901
reproduce:
# save the attached .config to linux build tree
make ARCH=i386 

All error/warnings (new ones prefixed by >>):

>> drivers/staging//most/mostcore/core.c:344:8: error: macro names must be 
>> identifiers
#define(create_show_channel_attribute(val)  \
   ^
>> drivers/staging//most/mostcore/core.c:347:1: warning: data definition has no 
>> type or storage class
create_show_channel_attribute(available_directions);
^
>> drivers/staging//most/mostcore/core.c:347:1: error: type defaults to 'int' 
>> in declaration of 'create_show_channel_attribute' [-Werror=implicit-int]
>> drivers/staging//most/mostcore/core.c:347:1: warning: parameter names 
>> (without types) in function declaration
   drivers/staging//most/mostcore/core.c:348:1: warning: data definition has no 
type or storage class
create_show_channel_attribute(available_datatypes);
^
   drivers/staging//most/mostcore/core.c:348:1: error: type defaults to 'int' 
in declaration of 'create_show_channel_attribute' [-Werror=implicit-int]
   drivers/staging//most/mostcore/core.c:348:1: warning: parameter names 
(without types) in function declaration
   drivers/staging//most/mostcore/core.c:349:1: warning: data definition has no 
type or storage class
create_show_channel_attribute(number_of_packet_buffers);
^
   drivers/staging//most/mostcore/core.c:349:1: error: type defaults to 'int' 
in declaration of 'create_show_channel_attribute' [-Werror=implicit-int]
   drivers/staging//most/mostcore/core.c:349:1: warning: parameter names 
(without types) in function declaration
   drivers/staging//most/mostcore/core.c:350:1: warning: data definition has no 
type or storage class
create_show_channel_attribute(number_of_stream_buffers);
^
   drivers/staging//most/mostcore/core.c:350:1: error: type defaults to 'int' 
in declaration of 'create_show_channel_attribute' [-Werror=implicit-int]
   drivers/staging//most/mostcore/core.c:350:1: warning: parameter names 
(without types) in function declaration
   drivers/staging//most/mostcore/core.c:351:1: warning: data definition has no 
type or storage class
create_show_channel_attribute(size_of_stream_buffer);
^
   drivers/staging//most/mostcore/core.c:351:1: error: type defaults to 'int' 
in declaration of 'create_show_channel_attribute' [-Werror=implicit-int]
   drivers/staging//most/mostcore/core.c:351:1: warning: parameter names 
(without types) in function declaration
   drivers/staging//most/mostcore/core.c:352:1: warning: data definition has no 
type or storage class
create_show_channel_attribute(size_of_packet_buffer);
^
   drivers/staging//most/mostcore/core.c:352:1: error: type defaults to 'int' 
in declaration of 'create_show_channel_attribute' [-Werror=implicit-int]
   drivers/staging//most/mostcore/core.c:352:1: warning: parameter names 
(without types) in function declaration
   drivers/staging//most/mostcore/core.c:353:1: warning: data definition has no 
type or storage class
create_show_channel_attribute(channel_starving);
^
   drivers/staging//most/mostcore/core.c:353:1: error: type defaults to 'int' 
in declaration of 'create_show_channel_attribute' [-Werror=implicit-int]
   drivers/staging//most/mostcore/core.c:353:1: warning: parameter names 
(without types) in function declaration
   drivers/staging//most/mostcore/core.c:496:8: error: macro names must be 
identifiers
#define(create_channel_attribute(value) \
   ^
   drivers/staging//most/mostcore/core.c:499:1: warning: data definition has no 
type or storage class
create_channel_attribute(set_buffer_size);
^~~~
>> drivers/staging//most/mostcore/core.c:499:1: error: type defaults to 'int' 
>> in declaration of 'create_channel_attribute' [-Werror=implicit-int]
   drivers/staging//most/mostcore/core.c:499:1: warning: parameter names 
(without types) in function declaration
   drivers/staging//most/mostcore/core.c:500:1: warning: data definition has no 
type or storage class
create_channel_attribute(set_number_of_buffers);
^~~~
   drivers/staging//most/mostcore/core.c:500:1: error: type defaults to 'int' 
in declaration of 'create_channel_attribute' [-Werror=implicit-int]
   dri

[PATCH] Staging: lustre: lnet: code style fix

2017-03-25 Thread Sergiy Redko
Fixed code style error found by checkpatch by adding a space after a
comma in function parameter list.

Signed-off-by: Sergiy Redko 
---
 drivers/staging/lustre/lnet/lnet/router.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/staging/lustre/lnet/lnet/router.c 
b/drivers/staging/lustre/lnet/lnet/router.c
index 194a220b7830..12dd1043f9fa 100644
--- a/drivers/staging/lustre/lnet/lnet/router.c
+++ b/drivers/staging/lustre/lnet/lnet/router.c
@@ -804,7 +804,7 @@ lnet_wait_known_routerstate(void)
 
all_known = 1;
list_for_each(entry, _lnet.ln_routers) {
-   rtr = list_entry(entry,struct lnet_peer, lp_rtr_list);
+   rtr = list_entry(entry, struct lnet_peer, lp_rtr_list);
 
if (!rtr->lp_alive_count) {
all_known = 0;
-- 
2.12.1

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH] staging: media: atomisp: compress return logic

2017-03-25 Thread Arushi Singhal
Simplify function returns by merging assignment and return.

Signed-off-by: Arushi Singhal 
---
 drivers/staging/media/atomisp/pci/atomisp2/atomisp_v4l2.c | 8 ++--
 .../media/atomisp/pci/atomisp2/css2400/runtime/bufq/src/bufq.c| 7 ++-
 2 files changed, 4 insertions(+), 11 deletions(-)

diff --git a/drivers/staging/media/atomisp/pci/atomisp2/atomisp_v4l2.c 
b/drivers/staging/media/atomisp/pci/atomisp2/atomisp_v4l2.c
index b1f685a841ba..a04cd3ba7e68 100644
--- a/drivers/staging/media/atomisp/pci/atomisp2/atomisp_v4l2.c
+++ b/drivers/staging/media/atomisp/pci/atomisp2/atomisp_v4l2.c
@@ -519,9 +519,7 @@ int atomisp_runtime_suspend(struct device *dev)
if (ret)
return ret;
pm_qos_update_request(>pm_qos, PM_QOS_DEFAULT_VALUE);
-   ret = atomisp_mrfld_power_down(isp);
-
-   return ret;
+   return atomisp_mrfld_power_down(isp);
 }
 
 int atomisp_runtime_resume(struct device *dev)
@@ -587,9 +585,7 @@ static int atomisp_suspend(struct device *dev)
return ret;
}
pm_qos_update_request(>pm_qos, PM_QOS_DEFAULT_VALUE);
-   ret = atomisp_mrfld_power_down(isp);
-
-   return ret;
+   return atomisp_mrfld_power_down(isp);
 }
 
 static int atomisp_resume(struct device *dev)
diff --git 
a/drivers/staging/media/atomisp/pci/atomisp2/css2400/runtime/bufq/src/bufq.c 
b/drivers/staging/media/atomisp/pci/atomisp2/css2400/runtime/bufq/src/bufq.c
index 737ad66da900..10418c190f93 100644
--- a/drivers/staging/media/atomisp/pci/atomisp2/css2400/runtime/bufq/src/bufq.c
+++ b/drivers/staging/media/atomisp/pci/atomisp2/css2400/runtime/bufq/src/bufq.c
@@ -440,7 +440,6 @@ enum ia_css_err ia_css_bufq_enqueue_psys_event(
 enum  ia_css_err ia_css_bufq_dequeue_psys_event(
uint8_t item[BUFQ_EVENT_SIZE])
 {
-   enum ia_css_err return_err;
int error = 0;
ia_css_queue_t *q;
 
@@ -457,8 +456,7 @@ enum  ia_css_err ia_css_bufq_dequeue_psys_event(
}
error = ia_css_eventq_recv(q, item);
 
-   return_err = ia_css_convert_errno(error);
-   return return_err;
+   return ia_css_convert_errno(error);
 
 }
 
@@ -482,8 +480,7 @@ enum  ia_css_err ia_css_bufq_dequeue_isys_event(
return IA_CSS_ERR_RESOURCE_NOT_AVAILABLE;
}
error = ia_css_eventq_recv(q, item);
-   return_err = ia_css_convert_errno(error);
-   return return_err;
+   return ia_css_convert_errno(error);
 #else
(void)item;
return IA_CSS_ERR_RESOURCE_NOT_AVAILABLE;
-- 
2.11.0

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel