[PATCH V3] staging: rtl8192u: check return value of read_nic_word_E

2016-03-04 Thread Salah Triki
The call of read_nic_word_E may fail, therefore its return value must be
checked.

Signed-off-by: Salah Triki 
---
 drivers/staging/rtl8192u/r8180_93cx6.c |  30 +--
 drivers/staging/rtl8192u/r8180_93cx6.h |   2 +-
 drivers/staging/rtl8192u/r8192U_core.c | 140 ++---
 3 files changed, 119 insertions(+), 53 deletions(-)

diff --git a/drivers/staging/rtl8192u/r8180_93cx6.c 
b/drivers/staging/rtl8192u/r8180_93cx6.c
index 97d9b3f..1f72cc1 100644
--- a/drivers/staging/rtl8192u/r8180_93cx6.c
+++ b/drivers/staging/rtl8192u/r8180_93cx6.c
@@ -23,8 +23,11 @@
 static void eprom_cs(struct net_device *dev, short bit)
 {
u8 cmdreg;
+   int err;
 
-   read_nic_byte_E(dev, EPROM_CMD, &cmdreg);
+   err = read_nic_byte_E(dev, EPROM_CMD, &cmdreg);
+   if (err)
+   return;
if (bit)
/* enable EPROM */
write_nic_byte_E(dev, EPROM_CMD, cmdreg | EPROM_CS_BIT);
@@ -40,8 +43,11 @@ static void eprom_cs(struct net_device *dev, short bit)
 static void eprom_ck_cycle(struct net_device *dev)
 {
u8 cmdreg;
+   int err;
 
-   read_nic_byte_E(dev, EPROM_CMD, &cmdreg);
+   err = read_nic_byte_E(dev, EPROM_CMD, &cmdreg);
+   if (err)
+   return;
write_nic_byte_E(dev, EPROM_CMD, cmdreg | EPROM_CK_BIT);
force_pci_posting(dev);
udelay(EPROM_DELAY);
@@ -56,8 +62,11 @@ static void eprom_ck_cycle(struct net_device *dev)
 static void eprom_w(struct net_device *dev, short bit)
 {
u8 cmdreg;
+   int err;
 
-   read_nic_byte_E(dev, EPROM_CMD, &cmdreg);
+   err = read_nic_byte_E(dev, EPROM_CMD, &cmdreg);
+   if (err)
+   return;
if (bit)
write_nic_byte_E(dev, EPROM_CMD, cmdreg | EPROM_W_BIT);
else
@@ -68,11 +77,14 @@ static void eprom_w(struct net_device *dev, short bit)
 }
 
 
-static short eprom_r(struct net_device *dev)
+static int eprom_r(struct net_device *dev)
 {
u8 bit;
+   int ret;
 
-   read_nic_byte_E(dev, EPROM_CMD, &bit);
+   ret = read_nic_byte_E(dev, EPROM_CMD, &bit);
+   if (ret)
+   return ret;
udelay(EPROM_DELAY);
 
if (bit & EPROM_R_BIT)
@@ -93,7 +105,7 @@ static void eprom_send_bits_string(struct net_device *dev, 
short b[], int len)
 }
 
 
-u32 eprom_read(struct net_device *dev, u32 addr)
+int eprom_read(struct net_device *dev, u32 addr)
 {
struct r8192_priv *priv = ieee80211_priv(dev);
short read_cmd[] = {1, 1, 0};
@@ -101,6 +113,7 @@ u32 eprom_read(struct net_device *dev, u32 addr)
int i;
int addr_len;
u32 ret;
+   int err;
 
ret = 0;
/* enable EPROM programming */
@@ -144,7 +157,10 @@ u32 eprom_read(struct net_device *dev, u32 addr)
 * and reading data. (eeprom outs a dummy 0)
 */
eprom_ck_cycle(dev);
-   ret |= (eprom_r(dev)<<(15-i));
+   err = eprom_r(dev)<<(15-i);
+   if (err)
+   return err;
+   ret |= ((u32)err);
}
 
eprom_cs(dev, 0);
diff --git a/drivers/staging/rtl8192u/r8180_93cx6.h 
b/drivers/staging/rtl8192u/r8180_93cx6.h
index b840348..9cf7f58 100644
--- a/drivers/staging/rtl8192u/r8180_93cx6.h
+++ b/drivers/staging/rtl8192u/r8180_93cx6.h
@@ -40,4 +40,4 @@
 #define EPROM_TXPW1 0x3d
 
 
-u32 eprom_read(struct net_device *dev, u32 addr); /* reads a 16 bits word */
+int eprom_read(struct net_device *dev, u32 addr); /* reads a 16 bits word */
diff --git a/drivers/staging/rtl8192u/r8192U_core.c 
b/drivers/staging/rtl8192u/r8192U_core.c
index 3a93218..4ce4310 100644
--- a/drivers/staging/rtl8192u/r8192U_core.c
+++ b/drivers/staging/rtl8192u/r8192U_core.c
@@ -2432,7 +2432,7 @@ static inline u16 endian_swap(u16 *data)
*data = (tmp >> 8) | (tmp << 8);
return *data;
 }
-static void rtl8192_read_eeprom_info(struct net_device *dev)
+static int rtl8192_read_eeprom_info(struct net_device *dev)
 {
u16 wEPROM_ID = 0;
u8 bMac_Tmp_Addr[6] = {0x00, 0xe0, 0x4c, 0x00, 0x00, 0x02};
@@ -2440,9 +2440,13 @@ static void rtl8192_read_eeprom_info(struct net_device 
*dev)
struct r8192_priv *priv = ieee80211_priv(dev);
u16 tmpValue = 0;
int i;
+   int ret;
 
RT_TRACE(COMP_EPROM, "===>%s()\n", __func__);
-   wEPROM_ID = eprom_read(dev, 0); /* first read EEPROM ID out; */
+   ret = eprom_read(dev, 0); /* first read EEPROM ID out; */
+   if (ret)
+   return ret;
+   wEPROM_ID = (u16) ret;
RT_TRACE(COMP_EPROM, "EEPROM ID is 0x%x\n", wEPROM_ID);
 
if (wEPROM_ID != RTL8190_EEPROM_ID)
@@ -2453,14 +2457,25 @@ static void rtl8192_read_eeprom_info(struct net_device 
*dev)
bLoad_From_EEPOM = true;
 
if (bLoad_From_EEPOM) {
-   tmpValue = eprom_read(dev, EEPROM_VID >> 1);
+   ret = eprom_read(dev, EEPROM_VID >> 1);
+  

drivers: staging: rtl8723au: remove unneeded null test

2016-03-04 Thread Cihangir Akturk
null test on pnetwork removed, because the iterator variable
list_for_each_entry_safe cannot be null.

This commit fixes the following error reported by coccinelle:

drivers/staging/rtl8723au/core/rtw_mlme.c:1621:7-15: ERROR: iterator
variable bound on line 1620 cannot be NULL

Signed-off-by: Cihangir Akturk 
---
 drivers/staging/rtl8723au/core/rtw_mlme.c | 13 ++---
 1 file changed, 2 insertions(+), 11 deletions(-)

diff --git a/drivers/staging/rtl8723au/core/rtw_mlme.c 
b/drivers/staging/rtl8723au/core/rtw_mlme.c
index 3adda55..a786fc4 100644
--- a/drivers/staging/rtl8723au/core/rtw_mlme.c
+++ b/drivers/staging/rtl8723au/core/rtw_mlme.c
@@ -1617,19 +1617,10 @@ rtw_select_candidate_from_queue(struct mlme_priv 
*pmlmepriv)
 
spin_lock_bh(&pmlmepriv->scanned_queue.lock);
phead = get_list_head(queue);
-   list_for_each_entry_safe(pnetwork, ptmp, phead, list) {
-   if (!pnetwork) {
-   RT_TRACE(_module_rtl871x_mlme_c_, _drv_err_,
-"%s: return _FAIL:(pnetwork == NULL)\n",
-__func__);
-   goto exit;
-   }
-
+   list_for_each_entry_safe(pnetwork, ptmp, phead, list)
rtw_check_join_candidate(pmlmepriv, &candidate, pnetwork);
-   }
-
-exit:
spin_unlock_bh(&pmlmepriv->scanned_queue.lock);
+
return candidate;
 }
 
-- 
2.1.4

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


Re: drivers: staging: rtl8723au: remove unneeded null test

2016-03-04 Thread Cihangir Akturk
On Fri, Mar 04, 2016 at 03:08:19PM +0200, Cihangir Akturk wrote:
> null test on pnetwork removed, because the iterator variable
> list_for_each_entry_safe cannot be null.
> 
> This commit fixes the following error reported by coccinelle:
> 
> drivers/staging/rtl8723au/core/rtw_mlme.c:1621:7-15: ERROR: iterator
> variable bound on line 1620 cannot be NULL
> 
> Signed-off-by: Cihangir Akturk 
> ---
>  drivers/staging/rtl8723au/core/rtw_mlme.c | 13 ++---
>  1 file changed, 2 insertions(+), 11 deletions(-)
> 
> diff --git a/drivers/staging/rtl8723au/core/rtw_mlme.c 
> b/drivers/staging/rtl8723au/core/rtw_mlme.c
> index 3adda55..a786fc4 100644
> --- a/drivers/staging/rtl8723au/core/rtw_mlme.c
> +++ b/drivers/staging/rtl8723au/core/rtw_mlme.c
> @@ -1617,19 +1617,10 @@ rtw_select_candidate_from_queue(struct mlme_priv 
> *pmlmepriv)
>  
>   spin_lock_bh(&pmlmepriv->scanned_queue.lock);
>   phead = get_list_head(queue);
> - list_for_each_entry_safe(pnetwork, ptmp, phead, list) {
> - if (!pnetwork) {
> - RT_TRACE(_module_rtl871x_mlme_c_, _drv_err_,
> -  "%s: return _FAIL:(pnetwork == NULL)\n",
> -  __func__);
> - goto exit;
> - }
> -
> + list_for_each_entry_safe(pnetwork, ptmp, phead, list)
>   rtw_check_join_candidate(pmlmepriv, &candidate, pnetwork);
> - }
> -
> -exit:
>   spin_unlock_bh(&pmlmepriv->scanned_queue.lock);
> +
>   return candidate;
>  }
>  
> -- 
> 2.1.4
> 

Opps. It seems I've made a mistake by not adding PATCH suffix. Please
ignore this patch, I will resend it in correct format.

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


[PATCH] drivers: staging: rtl8723au: remove unneeded null test

2016-03-04 Thread Cihangir Akturk
null test on pnetwork removed, because the iterator variable
list_for_each_entry_safe cannot be null.

This commit fixes the following error reported by coccinelle:

drivers/staging/rtl8723au/core/rtw_mlme.c:1621:7-15: ERROR: iterator
variable bound on line 1620 cannot be NULL

Signed-off-by: Cihangir Akturk 
---
 drivers/staging/rtl8723au/core/rtw_mlme.c | 13 ++---
 1 file changed, 2 insertions(+), 11 deletions(-)

diff --git a/drivers/staging/rtl8723au/core/rtw_mlme.c 
b/drivers/staging/rtl8723au/core/rtw_mlme.c
index 3adda55..a786fc4 100644
--- a/drivers/staging/rtl8723au/core/rtw_mlme.c
+++ b/drivers/staging/rtl8723au/core/rtw_mlme.c
@@ -1617,19 +1617,10 @@ rtw_select_candidate_from_queue(struct mlme_priv 
*pmlmepriv)
 
spin_lock_bh(&pmlmepriv->scanned_queue.lock);
phead = get_list_head(queue);
-   list_for_each_entry_safe(pnetwork, ptmp, phead, list) {
-   if (!pnetwork) {
-   RT_TRACE(_module_rtl871x_mlme_c_, _drv_err_,
-"%s: return _FAIL:(pnetwork == NULL)\n",
-__func__);
-   goto exit;
-   }
-
+   list_for_each_entry_safe(pnetwork, ptmp, phead, list)
rtw_check_join_candidate(pmlmepriv, &candidate, pnetwork);
-   }
-
-exit:
spin_unlock_bh(&pmlmepriv->scanned_queue.lock);
+
return candidate;
 }
 
-- 
2.1.4

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


Re: [PATCH 2/2] isdn: i4l: move active-isdn drivers to staging

2016-03-04 Thread Arnd Bergmann
On Thursday 03 March 2016 09:30:38 i...@linux-pingi.de wrote:
> Hi Arnd,
> I fully agree and ack.
> Thanks for the work.
> 

I actually did more patches that I ended up not submitting:

* move hisax to staging
* remove i4l support from gigaset
* move i4l core to staging

while I initially thought that i4l as a whole is not just unmaintained
but also more or less unused, patch 19cebbcb04c8 ("isdn: Partially
revert debug format string usage clean up") came in that indicated that
there are still users that even send patches for hisax, and that
made me doubt whether we could consider it obsolete enough.

Any thoughts on this? If you like, I can send those too.

My main motivation was to not have to fix up the ippp implementation
when I move the compat ioctl handler from fs/compat_ioctl.c
into drivers/net/ppp/ppp_generic.c, but I guess I can do that
anyway as it seems that i4l never worked properly in compat mode.

Arnd




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


Re: [PATCH 2/2] isdn: i4l: move active-isdn drivers to staging

2016-03-04 Thread Paul Bolle
[Added Tilman and Christoph.]

On vr, 2016-03-04 at 16:24 +0100, Arnd Bergmann wrote:
> I actually did more patches that I ended up not submitting:
> 
> * move hisax to staging
> * remove i4l support from gigaset

For the record: I have no reason to object a patch that does that. (I'm
not aware anyone complained when gigaset switched its default from i4l
to capi. By now all relevant distributions should use our capi driver.)

> * move i4l core to staging

On a local tree I have two (draft) patches that do some related
preliminary work:
- isdnhdlc: move into separate directory
- mISDN: NETJet: stop selecting ISDN_I4L

These trivial patches untangle mISDN and i4l. Perhaps you did something
similar in your "move i4l core to staging".

> while I initially thought that i4l as a whole is not just unmaintained
> but also more or less unused, patch 19cebbcb04c8 ("isdn: Partially
> revert debug format string usage clean up") came in that indicated
> that
> there are still users that even send patches for hisax, and that
> made me doubt whether we could consider it obsolete enough.

See also commit 3460baa62068 ("PCI: Fix minimum allocation address
overwrite").

> Any thoughts on this? If you like, I can send those too.

For my part I'm surprised that anyone is still using it. But apparently
the hardware that required commit 19cebbcb04c8 and 3460baa62068  (which
I'm unfamiliar with) is still operational. And since there never has
been, as far as I know, a global i4l to capi migration nor a global i4l
(and capi) to mISDN migration it might be that some people are stuck on
i4l drivers for their hardware. Perhaps that explains Cristoph's
commits.

> My main motivation was to not have to fix up the ippp implementation
> when I move the compat ioctl handler from fs/compat_ioctl.c
> into drivers/net/ppp/ppp_generic.c, but I guess I can do that
> anyway as it seems that i4l never worked properly in compat mode.


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


Re: [PATCH 2/2] isdn: i4l: move active-isdn drivers to staging

2016-03-04 Thread Arnd Bergmann
On Friday 04 March 2016 17:18:23 Paul Bolle wrote:
> [Added Tilman and Christoph.]
> 
> On vr, 2016-03-04 at 16:24 +0100, Arnd Bergmann wrote:
> > I actually did more patches that I ended up not submitting:
> > 
> > * move hisax to staging
> > * remove i4l support from gigaset
> 
> For the record: I have no reason to object a patch that does that. (I'm
> not aware anyone complained when gigaset switched its default from i4l
> to capi. By now all relevant distributions should use our capi driver.)

Ok.

> > * move i4l core to staging
> 
> On a local tree I have two (draft) patches that do some related
> preliminary work:
> - isdnhdlc: move into separate directory
> - mISDN: NETJet: stop selecting ISDN_I4L
> 
> These trivial patches untangle mISDN and i4l. Perhaps you did something
> similar in your "move i4l core to staging".

Yes, I have the same thing. I didn't mention it here as it should
be completely non-controversial.

A third patch moves the capidrv source from drivers/isdn/capi/
into the i4l directory.

> > Any thoughts on this? If you like, I can send those too.
> 
> For my part I'm surprised that anyone is still using it. But apparently
> the hardware that required commit 19cebbcb04c8 and 3460baa62068  (which
> I'm unfamiliar with) is still operational. And since there never has
> been, as far as I know, a global i4l to capi migration nor a global i4l
> (and capi) to mISDN migration it might be that some people are stuck on
> i4l drivers for their hardware. Perhaps that explains Cristoph's
> commits.

My understanding is that it's not about the hardware, and that all
devices that people actually use with hisax should also with with
mISDN.

Instead, the only argument I've heard about keeping i4l and hisax
around (indefinitely) is that existing user space tools are written
for i4l and not ported to mISDN. They work fine with CAPI drivers
using capidrv.ko, but there is no i4l emulation on top of mISDN.

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


Re: [PATCH] staging/android: add flags member to sync ioctl structs

2016-03-04 Thread Daniel Vetter
On Thu, Mar 03, 2016 at 08:17:14AM -0800, Greg Kroah-Hartman wrote:
> On Thu, Mar 03, 2016 at 11:37:17AM -0300, Gustavo Padovan wrote:
> > From: Gustavo Padovan 
> > 
> > Play safe and add flags member to all structs. So we don't need to
> > break API or create new IOCTL in the future if new features that requires
> > flags arises.
> > 
> > v2: check if flags are valid (zero, in this case)
> > 
> > v3: return -EINVAL if flags are not zero'ed
> > 
> > v4: add padding for 64-bit alignment
> > 
> > v5: rebase to use only stacked sync_file_info
> 
> Why are these vX things here in the changelog?

Because this is drm and we're special ;-)

> And you just broke all existing userspace users of this code, why are
> you allowed to do that?
> 
> not ok...

We could do fence2.h if you absolutely insist and just forget about the
current one, but that seemed silly. Like Gustavo said, everyone who
actually cares about this stuff is perfectly fine with this. And there's
not a single user of this in upstream anyway, so the only trees we could
break are vendor trees with massive amounts of additional stuff.

Is that reasonable ok for you, or do you insist we do a fences2.h without
going through staging ? ;-)

Thanks, Daniel
-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


Re: [PATCH 2/2] isdn: i4l: move active-isdn drivers to staging

2016-03-04 Thread isdn
Am 04.03.2016 um 16:24 schrieb Arnd Bergmann:
> On Thursday 03 March 2016 09:30:38 i...@linux-pingi.de wrote:
>> Hi Arnd,
>> I fully agree and ack.
>> Thanks for the work.
>>
> 
> I actually did more patches that I ended up not submitting:
> 
> * move hisax to staging
> * remove i4l support from gigaset
> * move i4l core to staging
> 
> while I initially thought that i4l as a whole is not just unmaintained
> but also more or less unused, patch 19cebbcb04c8 ("isdn: Partially
> revert debug format string usage clean up") came in that indicated that
> there are still users that even send patches for hisax, and that
> made me doubt whether we could consider it obsolete enough.
> 
> Any thoughts on this? If you like, I can send those too.

I4L is still in use on some sides and here is no 100% replacement (net
via RAW IP mode, terminal via X.75).

This week I got some question from a big retail chain  in Germany about
migration. I never know that they are  using this stuff (for initial
setup of remote shops).

So I would not drop i4l yet, maybe we should propose this for 2018.
I4L is not so usefull for NT mode, which is very popular nowadays for
gateways into the new full IP world. Some design ins with mISDN here,
mostly in the embedded area.

> 
> My main motivation was to not have to fix up the ippp implementation
> when I move the compat ioctl handler from fs/compat_ioctl.c
> into drivers/net/ppp/ppp_generic.c, but I guess I can do that
> anyway as it seems that i4l never worked properly in compat mode.
> 
>   Arnd
> 
> 
> 
> 
> 

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


Re: [PATCH] drivers: staging: rtl8723au: remove unneeded null test

2016-03-04 Thread Jes Sorensen
Cihangir Akturk  writes:
> null test on pnetwork removed, because the iterator variable
> list_for_each_entry_safe cannot be null.
>
> This commit fixes the following error reported by coccinelle:
>
> drivers/staging/rtl8723au/core/rtw_mlme.c:1621:7-15: ERROR: iterator
> variable bound on line 1620 cannot be NULL
>
> Signed-off-by: Cihangir Akturk 
> ---
>  drivers/staging/rtl8723au/core/rtw_mlme.c | 13 ++---
>  1 file changed, 2 insertions(+), 11 deletions(-)

Looks fine to me

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


[PATCH] Staging: netlogic: removes an unnecessary cast on a void pointer.

2016-03-04 Thread Ben Marsh
This patch removes an unnecessary cast on a void pointer in xlr_net.c

Signed-off-by: Ben Marsh 
---
 drivers/staging/netlogic/xlr_net.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/staging/netlogic/xlr_net.c 
b/drivers/staging/netlogic/xlr_net.c
index 0015847..ec5b8e0 100644
--- a/drivers/staging/netlogic/xlr_net.c
+++ b/drivers/staging/netlogic/xlr_net.c
@@ -130,7 +130,7 @@ static void xlr_net_fmn_handler(int bkt, int src_stnid, int 
size, int code,
struct xlr_net_priv *priv;
u32 port, length;
unsigned char *addr;
-   struct xlr_adapter *adapter = (struct xlr_adapter *)arg;
+   struct xlr_adapter *adapter = arg;
 
length = (msg->msg0 >> 40) & 0x3fff;
if (length == 0) {
-- 
1.9.1

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


Re: [PATCH 2/2] isdn: i4l: move active-isdn drivers to staging

2016-03-04 Thread Arnd Bergmann
On Friday 04 March 2016 19:18:49 i...@linux-pingi.de wrote:
> Am 04.03.2016 um 16:24 schrieb Arnd Bergmann:
> > On Thursday 03 March 2016 09:30:38 i...@linux-pingi.de wrote:
> >> Hi Arnd,
> >> I fully agree and ack.
> >> Thanks for the work.
> >>
> > 
> > I actually did more patches that I ended up not submitting:
> > 
> > * move hisax to staging
> > * remove i4l support from gigaset
> > * move i4l core to staging
> > 
> > while I initially thought that i4l as a whole is not just unmaintained
> > but also more or less unused, patch 19cebbcb04c8 ("isdn: Partially
> > revert debug format string usage clean up") came in that indicated that
> > there are still users that even send patches for hisax, and that
> > made me doubt whether we could consider it obsolete enough.
> > 
> > Any thoughts on this? If you like, I can send those too.
> 
> I4L is still in use on some sides and here is no 100% replacement (net
> via RAW IP mode, terminal via X.75).

I see.

> This week I got some question from a big retail chain  in Germany about
> migration. I never know that they are  using this stuff (for initial
> setup of remote shops).

Just for more background, do you know how old the kernel is that they
(or other i4l users you know of) are currently using?

> So I would not drop i4l yet, maybe we should propose this for 2018.
> I4L is not so usefull for NT mode, which is very popular nowadays for
> gateways into the new full IP world. Some design ins with mISDN here,
> mostly in the embedded area.

Ok, with a planned 2018 removal date I think we can consider moving
it all to staging now, that would give at least everyone who still uses
modern kernels a warning ahead of time so they can either plan the
migration away from i4l (or away from ISDN in other cases), as well as
a chance for us to hear about any remaining active users and whether
they need a later removal date.

In the TODO file for the active ISDN drivers, I have listed 2017
after the longterm kernel as the date for the projected removal.
If we decide to move the rest of I4L to staging with a date of
2018 (after the longterm release), that gives users at least until
2020 before they stop seeing upstream bug fixes for a kernel with
an included i4l, and many are probably stuck with running unsupported
older kernels anyway.

For reference, the currently largest provider of ISDN phone lines
is Deutsche Telekom, and they plan to disconnect their last user
in 2018, while Vodafone Germany said they will continue their service
until 2022, but my interpretation of their website fine print is that
this is only true for expensive S2M connections that few people use.

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


[PATCH net-next] hv_netvsc: Move subchannel waiting to rndis_filter_device_remove()

2016-03-04 Thread Haiyang Zhang
During hot add, vmbus_device_register() is called from vmbus_onoffer(), on
the same workqueue as the subchannel offer message work-queue, so 
subchannel offer won't be processed until the vmbus_device_register()/...
/netvsc_probe() is done.
Also, vmbus_device_register() is called with channel_mutex locked, which
prevents subchannel processing too. So the "waiting for sub-channel 
processing" will not success in hot add case. But, in usual module loading,
the netvsc_probe() is called from different code path, and doesn't fail.

This patch resolves the deadlock during NIC hot-add, and speeds up NIC 
loading time.

Signed-off-by: Haiyang Zhang 
Reviewed-by: K. Y. Srinivasan 
---
 drivers/net/hyperv/rndis_filter.c |   19 +--
 1 files changed, 13 insertions(+), 6 deletions(-)

diff --git a/drivers/net/hyperv/rndis_filter.c 
b/drivers/net/hyperv/rndis_filter.c
index a37bbda..47d07c5 100644
--- a/drivers/net/hyperv/rndis_filter.c
+++ b/drivers/net/hyperv/rndis_filter.c
@@ -1175,22 +1175,18 @@ int rndis_filter_device_add(struct hv_device *dev,
ret = rndis_filter_set_rss_param(rndis_device, net_device->num_chn);
 
/*
-* Wait for the host to send us the sub-channel offers.
+* Set the number of sub-channels to be received.
 */
spin_lock_irqsave(&net_device->sc_lock, flags);
sc_delta = num_rss_qs - (net_device->num_chn - 1);
net_device->num_sc_offered -= sc_delta;
spin_unlock_irqrestore(&net_device->sc_lock, flags);
 
-   while (net_device->num_sc_offered != 0) {
-   t = wait_for_completion_timeout(&net_device->channel_init_wait, 
10*HZ);
-   if (t == 0)
-   WARN(1, "Netvsc: Waiting for sub-channel processing");
-   }
 out:
if (ret) {
net_device->max_chn = 1;
net_device->num_chn = 1;
+   net_device->num_sc_offered = 0;
}
 
return 0; /* return 0 because primary channel can be used alone */
@@ -1204,6 +1200,17 @@ void rndis_filter_device_remove(struct hv_device *dev)
 {
struct netvsc_device *net_dev = hv_get_drvdata(dev);
struct rndis_device *rndis_dev = net_dev->extension;
+   unsigned long t;
+
+   /* If not all subchannel offers are complete, wait for them until
+* completion to avoid race.
+*/
+   while (net_dev->num_sc_offered > 0) {
+   t = wait_for_completion_timeout(&net_dev->channel_init_wait,
+   10 * HZ);
+   if (t == 0)
+   WARN(1, "Netvsc: Waiting for sub-channel processing");
+   }
 
/* Halt and release the rndis device */
rndis_filter_halt_device(rndis_dev);
-- 
1.7.4.1

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


[PATCH 01/10] staging: lustre: LNet drop rule implementation

2016-03-04 Thread James Simmons
From: Liang Zhen 

This is implementation of LNet Drop Rule, which can randomly drop
LNet messages at specified rate.

LNet Drop Rule can only be applied to receive side of message. User
can add drop_rule either on end point of cluster (client/server) or
on LNet routers.

Here are lctl command to control LNet Drop Rules:
 - net_drop_add -s SRC_NID -d DEST_NID --rate VALUE
   drop 1/@VALUE of messages from @SRC_NID to @DEST_NID

 - net_drop_del -s SRC_NID -d DEST_NID
   remove all drop rules from @SRC_NID to @DEST_NID

 - net_drop_list
   list all drop rules on current node

 Examples:
 - lctl net_drop_add -s *@o2ib0 -d 192.168.1.102@tcp 1000
   add new drop rule, it will drop 1/1000 messages from network o2ib0
   to 192.168.1.102@tcp

 - lctl net_drop_add -s 10.8.6.123@o2ib1 -d * 500
   add new drop rule, it will drop 1/500 messages from 10.8.6.123@o2ib1
   to all nodes

Signed-off-by: Liang Zhen 
Intel-bug-id: https://jira.hpdd.intel.com/browse/LU-5435
Reviewed-on: http://review.whamcloud.com/11314
Reviewed-by: Bobi Jam 
Reviewed-by: Amir Shehata 
Reviewed-by: Johann Lombardi 
Reviewed-by: Oleg Drokin 
---
 .../lustre/include/linux/libcfs/libcfs_ioctl.h |1 +
 .../staging/lustre/include/linux/lnet/lib-lnet.h   |   10 +
 .../staging/lustre/include/linux/lnet/lib-types.h  |2 +
 .../staging/lustre/include/linux/lnet/lnetctl.h|   83 
 drivers/staging/lustre/lnet/lnet/Makefile  |2 +-
 drivers/staging/lustre/lnet/lnet/api-ni.c  |6 +
 drivers/staging/lustre/lnet/lnet/lib-move.c|8 +
 drivers/staging/lustre/lnet/lnet/net_fault.c   |  436 
 8 files changed, 547 insertions(+), 1 deletions(-)
 create mode 100644 drivers/staging/lustre/lnet/lnet/net_fault.c

diff --git a/drivers/staging/lustre/include/linux/libcfs/libcfs_ioctl.h 
b/drivers/staging/lustre/include/linux/libcfs/libcfs_ioctl.h
index f788631..5ca99bd 100644
--- a/drivers/staging/lustre/include/linux/libcfs/libcfs_ioctl.h
+++ b/drivers/staging/lustre/include/linux/libcfs/libcfs_ioctl.h
@@ -121,6 +121,7 @@ struct libcfs_ioctl_handler {
 #define IOC_LIBCFS_PING_IOWR('e', 61, long)
 /* #define IOC_LIBCFS_DEBUG_PEER _IOWR('e', 62, long) */
 #define IOC_LIBCFS_LNETST_IOWR('e', 63, long)
+#defineIOC_LIBCFS_LNET_FAULT   _IOWR('e', 64, long)
 /* lnd ioctls */
 #define IOC_LIBCFS_REGISTER_MYNID_IOWR('e', 70, long)
 #define IOC_LIBCFS_CLOSE_CONNECTION_IOWR('e', 71, long)
diff --git a/drivers/staging/lustre/include/linux/lnet/lib-lnet.h 
b/drivers/staging/lustre/include/linux/lnet/lib-lnet.h
index 84642dc..7b3f858 100644
--- a/drivers/staging/lustre/include/linux/lnet/lib-lnet.h
+++ b/drivers/staging/lustre/include/linux/lnet/lib-lnet.h
@@ -578,6 +578,16 @@ char *lnet_msgtyp2str(int type);
 void lnet_print_hdr(lnet_hdr_t *hdr);
 int lnet_fail_nid(lnet_nid_t nid, unsigned int threshold);
 
+/** \addtogroup lnet_fault_simulation @{ */
+
+int lnet_fault_ctl(int cmd, struct libcfs_ioctl_data *data);
+int lnet_fault_init(void);
+void lnet_fault_fini(void);
+
+bool lnet_drop_rule_match(lnet_hdr_t *hdr);
+
+/** @} lnet_fault_simulation */
+
 void lnet_counters_get(lnet_counters_t *counters);
 void lnet_counters_reset(void);
 
diff --git a/drivers/staging/lustre/include/linux/lnet/lib-types.h 
b/drivers/staging/lustre/include/linux/lnet/lib-types.h
index d2513db..cb09a8a 100644
--- a/drivers/staging/lustre/include/linux/lnet/lib-types.h
+++ b/drivers/staging/lustre/include/linux/lnet/lib-types.h
@@ -40,6 +40,7 @@
 #include 
 
 #include "types.h"
+#include "lnetctl.h"
 
 /* Max payload size */
 #define LNET_MAX_PAYLOAD  CONFIG_LNET_MAX_PAYLOAD
@@ -572,6 +573,7 @@ typedef struct {
struct lnet_peer_table  **ln_peer_tables;
/* failure simulation */
struct list_head  ln_test_peers;
+   struct list_head  ln_drop_rules;
 
struct list_head  ln_nis;   /* LND instances */
/* NIs bond on specific CPT(s) */
diff --git a/drivers/staging/lustre/include/linux/lnet/lnetctl.h 
b/drivers/staging/lustre/include/linux/lnet/lnetctl.h
index 4b64f62..ec33bf8 100644
--- a/drivers/staging/lustre/include/linux/lnet/lnetctl.h
+++ b/drivers/staging/lustre/include/linux/lnet/lnetctl.h
@@ -17,6 +17,89 @@
 
 #include "types.h"
 
+/** \addtogroup lnet_fault_simulation
+ * @{
+ */
+
+enum {
+   LNET_CTL_DROP_ADD,
+   LNET_CTL_DROP_DEL,
+   LNET_CTL_DROP_RESET,
+   LNET_CTL_DROP_LIST,
+};
+
+#define LNET_ACK_BIT   BIT(0)
+#define LNET_PUT_BIT   BIT(1)
+#define LNET_GET_BIT   BIT(2)
+#define LNET_REPLY_BIT BIT(3)
+
+/** ioctl parameter for LNet fault simulation */
+struct lnet_fault_attr {
+   /**
+* source NID of drop rule
+* LNET_NID_ANY is wildcard for all sources
+* 255.255.255.255@net is wildcard for all addresses from @net
+*/
+   lnet_nid_t   

[PATCH 04/10] staging: lustre: fix 'NULL pointer dereference' errors

2016-03-04 Thread James Simmons
From: Sebastien Buisson 

Fix 'NULL pointer dereference' defects found by Coverity version
6.5.3:
Dereference after null check (FORWARD_NULL)
For instance, Passing null pointer to a function which dereferences
it.
Dereference before null check (REVERSE_INULL)
Null-checking variable suggests that it may be null, but it has
already been dereferenced on all paths leading to the check.
Dereference null return value (NULL_RETURNS)

The following fixes for the LNet layer are broken out of patch
http://review.whamcloud.com/4720.

Signed-off-by: Sebastien Buisson 
Intel-bug-id: https://jira.hpdd.intel.com/browse/LU-2217
Reviewed-on: http://review.whamcloud.com/4720
Reviewed-by: Dmitry Eremin 
Reviewed-by: Oleg Drokin 
---
 drivers/staging/lustre/lnet/lnet/lib-move.c|2 +
 drivers/staging/lustre/lnet/selftest/conctl.c  |   49 ++--
 .../lustre/lustre/include/lustre/lustre_user.h |3 +
 drivers/staging/lustre/lustre/ldlm/ldlm_request.c  |7 ++-
 drivers/staging/lustre/lustre/lmv/lmv_obd.c|2 +-
 drivers/staging/lustre/lustre/lov/lov_request.c|2 +-
 drivers/staging/lustre/lustre/mgc/mgc_request.c|   10 -
 .../lustre/lustre/obdclass/lprocfs_status.c|   24 +
 drivers/staging/lustre/lustre/ptlrpc/layout.c  |2 +-
 9 files changed, 61 insertions(+), 40 deletions(-)

diff --git a/drivers/staging/lustre/lnet/lnet/lib-move.c 
b/drivers/staging/lustre/lnet/lnet/lib-move.c
index a5e90e7..f323b8b 100644
--- a/drivers/staging/lustre/lnet/lnet/lib-move.c
+++ b/drivers/staging/lustre/lnet/lnet/lib-move.c
@@ -162,6 +162,7 @@ lnet_iov_nob(unsigned int niov, struct kvec *iov)
 {
unsigned int nob = 0;
 
+   LASSERT(!niov || iov);
while (niov-- > 0)
nob += (iov++)->iov_len;
 
@@ -282,6 +283,7 @@ lnet_kiov_nob(unsigned int niov, lnet_kiov_t *kiov)
 {
unsigned int nob = 0;
 
+   LASSERT(!niov || kiov);
while (niov-- > 0)
nob += (kiov++)->kiov_len;
 
diff --git a/drivers/staging/lustre/lnet/selftest/conctl.c 
b/drivers/staging/lustre/lnet/selftest/conctl.c
index 714d14b..62cacb6 100644
--- a/drivers/staging/lustre/lnet/selftest/conctl.c
+++ b/drivers/staging/lustre/lnet/selftest/conctl.c
@@ -670,44 +670,45 @@ static int
 lst_stat_query_ioctl(lstio_stat_args_t *args)
 {
int rc;
-   char *name;
+   char *name = NULL;
 
/* TODO: not finished */
if (args->lstio_sta_key != console_session.ses_key)
return -EACCES;
 
-   if (!args->lstio_sta_resultp ||
-   (!args->lstio_sta_namep && !args->lstio_sta_idsp) ||
-   args->lstio_sta_nmlen <= 0 ||
-   args->lstio_sta_nmlen > LST_NAME_SIZE)
-   return -EINVAL;
-
-   if (args->lstio_sta_idsp &&
-   args->lstio_sta_count <= 0)
+   if (!args->lstio_sta_resultp)
return -EINVAL;
 
-   LIBCFS_ALLOC(name, args->lstio_sta_nmlen + 1);
-   if (!name)
-   return -ENOMEM;
-
-   if (copy_from_user(name, args->lstio_sta_namep,
-  args->lstio_sta_nmlen)) {
-   LIBCFS_FREE(name, args->lstio_sta_nmlen + 1);
-   return -EFAULT;
-   }
+   if (args->lstio_sta_idsp) {
+   if (args->lstio_sta_count <= 0)
+   return -EINVAL;
 
-   if (!args->lstio_sta_idsp) {
-   rc = lstcon_group_stat(name, args->lstio_sta_timeout,
-  args->lstio_sta_resultp);
-   } else {
rc = lstcon_nodes_stat(args->lstio_sta_count,
   args->lstio_sta_idsp,
   args->lstio_sta_timeout,
   args->lstio_sta_resultp);
-   }
+   } else if (args->lstio_sta_namep) {
+   if (args->lstio_sta_nmlen <= 0 ||
+   args->lstio_sta_nmlen > LST_NAME_SIZE)
+   return -EINVAL;
 
-   LIBCFS_FREE(name, args->lstio_sta_nmlen + 1);
+   LIBCFS_ALLOC(name, args->lstio_sta_nmlen + 1);
+   if (!name)
+   return -ENOMEM;
 
+   rc = copy_from_user(name, args->lstio_sta_namep,
+   args->lstio_sta_nmlen);
+   if (!rc)
+   rc = lstcon_group_stat(name, args->lstio_sta_timeout,
+  args->lstio_sta_resultp);
+   else
+   rc = -EFAULT;
+   } else {
+   rc = -EINVAL;
+   }
+
+   if (name)
+   LIBCFS_FREE(name, args->lstio_sta_nmlen + 1);
return rc;
 }
 
diff --git a/drivers/staging/lustre/lustre/include/lustre/lustre_user.h 
b/drivers/staging/lustre/lustre/include/lustre/lustre_user.h
index 9f026bd..276906e 100644
--- a/drivers/staging/lustre/lustre/include/lustre/lustre_user.h
+++ b/drivers/staging/lustre/lustre/include/lustre/lustre_

[PATCH 03/10] staging: lustre: fix 'data race condition' issue in conrpc.c

2016-03-04 Thread James Simmons
From: Sebastien Buisson 

Fix 'data race condition' defects found by Coverity version 6.5.0:
Data race condition (MISSING_LOCK)
Accessing variable without holding lock. Elsewhere,
this variable is accessed with lock held.

Signed-off-by: Sebastien Buisson 
Intel-bug-id: https://jira.hpdd.intel.com/browse/LU-2744
Reviewed-on: http://review.whamcloud.com/6567
Reviewed-by: Liang Zhen 
Reviewed-by: Dmitry Eremin 
Reviewed-by: Oleg Drokin 
---
 drivers/staging/lustre/lnet/selftest/conrpc.c |8 ++--
 1 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/drivers/staging/lustre/lnet/selftest/conrpc.c 
b/drivers/staging/lustre/lnet/selftest/conrpc.c
index e6376a0..8a67f89 100644
--- a/drivers/staging/lustre/lnet/selftest/conrpc.c
+++ b/drivers/staging/lustre/lnet/selftest/conrpc.c
@@ -945,8 +945,12 @@ lstcon_sesnew_stat_reply(lstcon_rpc_trans_t *trans,
return status;
 
if (!trans->tas_feats_updated) {
-   trans->tas_feats_updated = 1;
-   trans->tas_features = reply->msg_ses_feats;
+   spin_lock(&console_session.ses_rpc_lock);
+   if (!trans->tas_feats_updated) { /* recheck with lock */
+   trans->tas_feats_updated = 1;
+   trans->tas_features = reply->msg_ses_feats;
+   }
+   spin_unlock(&console_session.ses_rpc_lock);
}
 
if (reply->msg_ses_feats != trans->tas_features) {
-- 
1.7.1

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


[PATCH 00/10] Last batch of fixes for LNet

2016-03-04 Thread James Simmons
This batch merges the remaining LNet patches from the OpenSFS
branch for the upstream client. Once merged the LNet code
will be up to date with the latest production code. Only style
issues are remaining. Still future patches being developed
for LNet will be landed to the upstream client as soon as they
are ready after extensive testing.

Frank Zago (1):
  staging: lustre: add last missing sparse annotation __user

James Nunez (1):
  staging: lustre: Correct missing newline

James Simmons (3):
  staging: lustre: change test to asser in LNetGetId
  staging: lustre: rename proc_call_handler to lprocfs_call_handler
  staging: lustre: make LNet use lprocfs_call_handler

Liang Zhen (2):
  staging: lustre: LNet drop rule implementation
  staging: lustre: LNet network latency simulation

Sebastien Buisson (3):
  staging: lustre: fix 'data race condition' issue in conrpc.c
  staging: lustre: fix 'NULL pointer dereference' errors
  staging: lustre: fix 'data race condition' issue in framework.c

 .../staging/lustre/include/linux/libcfs/libcfs.h   |4 +
 .../lustre/include/linux/libcfs/libcfs_ioctl.h |1 +
 .../staging/lustre/include/linux/lnet/lib-lnet.h   |   27 +
 .../staging/lustre/include/linux/lnet/lib-types.h  |5 +
 .../staging/lustre/include/linux/lnet/lnetctl.h|  100 ++
 drivers/staging/lustre/lnet/lnet/Makefile  |2 +-
 drivers/staging/lustre/lnet/lnet/api-ni.c  |   13 +-
 drivers/staging/lustre/lnet/lnet/lib-move.c|   83 +-
 drivers/staging/lustre/lnet/lnet/lib-msg.c |6 +
 drivers/staging/lustre/lnet/lnet/net_fault.c   | 1025 
 drivers/staging/lustre/lnet/lnet/router_proc.c |   32 +-
 drivers/staging/lustre/lnet/selftest/conctl.c  |   49 +-
 drivers/staging/lustre/lnet/selftest/conrpc.c  |8 +-
 drivers/staging/lustre/lnet/selftest/framework.c   |9 +-
 drivers/staging/lustre/lnet/selftest/rpc.c |2 +-
 .../lustre/lustre/include/lustre/lustre_user.h |3 +
 drivers/staging/lustre/lustre/ldlm/ldlm_request.c  |9 +-
 .../staging/lustre/lustre/libcfs/libcfs_string.c   |   27 +-
 drivers/staging/lustre/lustre/libcfs/module.c  |   25 +-
 drivers/staging/lustre/lustre/llite/file.c |8 +-
 drivers/staging/lustre/lustre/lmv/lmv_obd.c|4 +-
 drivers/staging/lustre/lustre/lov/lov_lock.c   |2 +-
 drivers/staging/lustre/lustre/lov/lov_obd.c|2 +-
 drivers/staging/lustre/lustre/lov/lov_pool.c   |4 +-
 drivers/staging/lustre/lustre/lov/lov_request.c|2 +-
 drivers/staging/lustre/lustre/mdc/mdc_request.c|3 +-
 drivers/staging/lustre/lustre/mgc/mgc_request.c|   11 +-
 drivers/staging/lustre/lustre/obdclass/cl_lock.c   |2 +-
 .../lustre/lustre/obdclass/lprocfs_status.c|   26 +-
 drivers/staging/lustre/lustre/obdclass/lu_object.c |2 +-
 .../staging/lustre/lustre/obdecho/echo_client.c|8 +-
 drivers/staging/lustre/lustre/osc/osc_cache.c  |9 +-
 drivers/staging/lustre/lustre/osc/osc_lock.c   |2 +-
 drivers/staging/lustre/lustre/osc/osc_request.c|3 +-
 drivers/staging/lustre/lustre/ptlrpc/client.c  |6 +-
 drivers/staging/lustre/lustre/ptlrpc/layout.c  |2 +-
 drivers/staging/lustre/lustre/ptlrpc/sec.c |4 +-
 37 files changed, 1380 insertions(+), 150 deletions(-)
 create mode 100644 drivers/staging/lustre/lnet/lnet/net_fault.c

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


[PATCH 02/10] staging: lustre: LNet network latency simulation

2016-03-04 Thread James Simmons
From: Liang Zhen 

Incoming lnet message can be delayed for seconds if it can match
any of LNet Delay Rules.

User can add/remove/list Delay Rule by lctl commands:
- lctl net_delay_add
  Add a new Delay Rule to LNet, options
  <-s | --source SRC_NID>
  <-d | --dest DST_NID>
  <<-r | --rate RATE_NUMBER>
  <-i | --interlval SECONDS>>
  <-l | --latency DELAY_LATENCY>

- lctl net_delay_del
  Remove matched Delay Rule from LNet, options:
  <[-a | --all] |
  <-s | --source SRC_NID>
  <-d | --dest DST_NID>>

- lctl net_delay_list
  List all Delay Rules in LNet

- lctl net_delay_reset
  Reset statistic counters for all Delay Rules

Signed-off-by: Liang Zhen 
Intel-bug-id: https://jira.hpdd.intel.com/browse/LU-5435
Reviewed-on: http://review.whamcloud.com/11409
Reviewed-by: Amir Shehata 
Reviewed-by: Bobi Jam 
Reviewed-by: Oleg Drokin 
---
 .../staging/lustre/include/linux/lnet/lib-lnet.h   |   17 +
 .../staging/lustre/include/linux/lnet/lib-types.h  |3 +
 .../staging/lustre/include/linux/lnet/lnetctl.h|   21 +-
 drivers/staging/lustre/lnet/lnet/api-ni.c  |1 +
 drivers/staging/lustre/lnet/lnet/lib-move.c|   73 ++-
 drivers/staging/lustre/lnet/lnet/lib-msg.c |6 +
 drivers/staging/lustre/lnet/lnet/net_fault.c   |  601 +++-
 7 files changed, 683 insertions(+), 39 deletions(-)

diff --git a/drivers/staging/lustre/include/linux/lnet/lib-lnet.h 
b/drivers/staging/lustre/include/linux/lnet/lib-lnet.h
index 7b3f858..dfc0208 100644
--- a/drivers/staging/lustre/include/linux/lnet/lib-lnet.h
+++ b/drivers/staging/lustre/include/linux/lnet/lib-lnet.h
@@ -559,13 +559,22 @@ void lnet_portals_destroy(void);
 /* message functions */
 int lnet_parse(lnet_ni_t *ni, lnet_hdr_t *hdr,
   lnet_nid_t fromnid, void *private, int rdma_req);
+int lnet_parse_local(lnet_ni_t *ni, lnet_msg_t *msg);
+int lnet_parse_forward_locked(lnet_ni_t *ni, lnet_msg_t *msg);
+
 void lnet_recv(lnet_ni_t *ni, void *private, lnet_msg_t *msg, int delayed,
   unsigned int offset, unsigned int mlen, unsigned int rlen);
+void lnet_ni_recv(lnet_ni_t *ni, void *private, lnet_msg_t *msg,
+ int delayed, unsigned int offset,
+ unsigned int mlen, unsigned int rlen);
+
 lnet_msg_t *lnet_create_reply_msg(lnet_ni_t *ni, lnet_msg_t *get_msg);
 void lnet_set_reply_msg_len(lnet_ni_t *ni, lnet_msg_t *msg, unsigned int len);
 
 void lnet_finalize(lnet_ni_t *ni, lnet_msg_t *msg, int rc);
 
+void lnet_drop_message(lnet_ni_t *ni, int cpt, void *private,
+  unsigned int nob);
 void lnet_drop_delayed_msg_list(struct list_head *head, char *reason);
 void lnet_recv_delayed_msg_list(struct list_head *head);
 
@@ -586,6 +595,14 @@ void lnet_fault_fini(void);
 
 bool lnet_drop_rule_match(lnet_hdr_t *hdr);
 
+int lnet_delay_rule_add(struct lnet_fault_attr *attr);
+int lnet_delay_rule_del(lnet_nid_t src, lnet_nid_t dst, bool shutdown);
+int lnet_delay_rule_list(int pos, struct lnet_fault_attr *attr,
+struct lnet_fault_stat *stat);
+void lnet_delay_rule_reset(void);
+void lnet_delay_rule_check(void);
+bool lnet_delay_rule_match_locked(lnet_hdr_t *hdr, struct lnet_msg *msg);
+
 /** @} lnet_fault_simulation */
 
 void lnet_counters_get(lnet_counters_t *counters);
diff --git a/drivers/staging/lustre/include/linux/lnet/lib-types.h 
b/drivers/staging/lustre/include/linux/lnet/lib-types.h
index cb09a8a..29c72f8 100644
--- a/drivers/staging/lustre/include/linux/lnet/lib-types.h
+++ b/drivers/staging/lustre/include/linux/lnet/lib-types.h
@@ -88,6 +88,7 @@ typedef struct lnet_msg {
unsigned intmsg_rtrcredit:1;/* taken a global router credit 
*/
unsigned intmsg_peerrtrcredit:1;/* taken a peer router credit */
unsigned intmsg_onactivelist:1; /* on the activelist */
+   unsigned intmsg_rdma_get:1;
 
struct lnet_peer*msg_txpeer; /* peer I'm sending to */
struct lnet_peer*msg_rxpeer; /* peer I received from */
@@ -574,6 +575,7 @@ typedef struct {
/* failure simulation */
struct list_head  ln_test_peers;
struct list_head  ln_drop_rules;
+   struct list_head  ln_delay_rules;
 
struct list_head  ln_nis;   /* LND instances */
/* NIs bond on specific CPT(s) */
@@ -610,6 +612,7 @@ typedef struct {
 
struct mutex  ln_api_mutex;
struct mutex  ln_lnd_mutex;
+   struct mutex  ln_delay_mutex;
/* Have I called LNetNIInit myself? */
int   ln_niinit_self;
/* LNetNIInit/LNetNIFini counter */
diff --git a/drivers/staging/lustre/include/linux/lnet/lnetctl.h 
b/drivers/staging/lustre/include/linux/lnet/lnetctl.h
index ec33bf8..3957507 100644
--- a/drivers/staging/lustre/include/linux/lnet/lnetctl.h
+++ b/drivers/staging/lustre/

[PATCH 05/10] staging: lustre: fix 'data race condition' issue in framework.c

2016-03-04 Thread James Simmons
From: Sebastien Buisson 

Fix 'data race condition' defects found by Coverity version 6.5.0:
Data race condition (MISSING_LOCK)
Accessing variable without holding lock. Elsewhere,
this variable is accessed with lock held.

Signed-off-by: Sebastien Buisson 
Intel-bug-id: https://jira.hpdd.intel.com/browse/LU-2744
Reviewed-on: http://review.whamcloud.com/6568
Reviewed-by: Bob Glossman 
Reviewed-by: Andreas Dilger 
---
 drivers/staging/lustre/lnet/selftest/framework.c |3 +--
 1 files changed, 1 insertions(+), 2 deletions(-)

diff --git a/drivers/staging/lustre/lnet/selftest/framework.c 
b/drivers/staging/lustre/lnet/selftest/framework.c
index dbd2c61..5c7cafa 100644
--- a/drivers/staging/lustre/lnet/selftest/framework.c
+++ b/drivers/staging/lustre/lnet/selftest/framework.c
@@ -981,9 +981,8 @@ sfw_run_test(swi_workitem_t *wi)
list_add_tail(&rpc->crpc_list, &tsi->tsi_active_rpcs);
spin_unlock(&tsi->tsi_lock);
 
-   rpc->crpc_timeout = rpc_timeout;
-
spin_lock(&rpc->crpc_lock);
+   rpc->crpc_timeout = rpc_timeout;
srpc_post_rpc(rpc);
spin_unlock(&rpc->crpc_lock);
return 0;
-- 
1.7.1

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


[PATCH 06/10] staging: lustre: Correct missing newline

2016-03-04 Thread James Simmons
From: James Nunez 

Several error messages are missing newline characters
at the end of the message. Newlines are added where
necessary and other minor corrections; no punctuation
at the end of an error message, add a return code to
the end of error messages, device name at the beginning,
etc.

There are just a couple of places where newlines are
removed and this is only in LDLM_DEBUG_NOLOCK. The definition
of LDLM_DEBUG_NOLOCK already has a newline in it and
resulted in double newlines printed.

Signed-off-by: James Nunez 
Intel-bug-id: https://jira.hpdd.intel.com/browse/LU-4871
Reviewed-on: http://review.whamcloud.com/1
Reviewed-by: Andreas Dilger 
Reviewed-by: John L. Hammond 
Reviewed-by: Cliff White 
---
 drivers/staging/lustre/lnet/selftest/framework.c   |6 +++---
 drivers/staging/lustre/lnet/selftest/rpc.c |2 +-
 drivers/staging/lustre/lustre/ldlm/ldlm_request.c  |2 +-
 drivers/staging/lustre/lustre/llite/file.c |8 
 drivers/staging/lustre/lustre/lmv/lmv_obd.c|2 +-
 drivers/staging/lustre/lustre/lov/lov_lock.c   |2 +-
 drivers/staging/lustre/lustre/lov/lov_obd.c|2 +-
 drivers/staging/lustre/lustre/lov/lov_pool.c   |4 ++--
 drivers/staging/lustre/lustre/mdc/mdc_request.c|3 ++-
 drivers/staging/lustre/lustre/mgc/mgc_request.c|3 ++-
 drivers/staging/lustre/lustre/obdclass/cl_lock.c   |2 +-
 .../lustre/lustre/obdclass/lprocfs_status.c|2 +-
 drivers/staging/lustre/lustre/obdclass/lu_object.c |2 +-
 .../staging/lustre/lustre/obdecho/echo_client.c|8 ++--
 drivers/staging/lustre/lustre/osc/osc_cache.c  |9 +
 drivers/staging/lustre/lustre/osc/osc_lock.c   |2 +-
 drivers/staging/lustre/lustre/osc/osc_request.c|3 ++-
 drivers/staging/lustre/lustre/ptlrpc/client.c  |6 +++---
 drivers/staging/lustre/lustre/ptlrpc/sec.c |4 ++--
 19 files changed, 40 insertions(+), 32 deletions(-)

diff --git a/drivers/staging/lustre/lnet/selftest/framework.c 
b/drivers/staging/lustre/lnet/selftest/framework.c
index 5c7cafa..a2f94fa 100644
--- a/drivers/staging/lustre/lnet/selftest/framework.c
+++ b/drivers/staging/lustre/lnet/selftest/framework.c
@@ -453,7 +453,7 @@ sfw_make_session(srpc_mksn_reqst_t *request, 
srpc_mksn_reply_t *reply)
/* brand new or create by force */
LIBCFS_ALLOC(sn, sizeof(sfw_session_t));
if (!sn) {
-   CERROR("Dropping RPC (mksn) under memory pressure.\n");
+   CERROR("dropping RPC mksn under memory pressure\n");
return -ENOMEM;
}
 
@@ -1155,7 +1155,7 @@ sfw_add_test(struct srpc_server_rpc *rpc)
 
bat = sfw_bid2batch(request->tsr_bid);
if (!bat) {
-   CERROR("Dropping RPC (%s) from %s under memory pressure.\n",
+   CERROR("dropping RPC %s from %s under memory pressure\n",
   rpc->srpc_scd->scd_svc->sv_name,
   libcfs_id2str(rpc->srpc_peer));
return -ENOMEM;
@@ -1367,7 +1367,7 @@ sfw_bulk_ready(struct srpc_server_rpc *rpc, int status)
}
 
if (sfw_del_session_timer()) {
-   CERROR("Dropping RPC (%s) from %s: racing with expiry timer",
+   CERROR("dropping RPC %s from %s: racing with expiry timer\n",
   sv->sv_name, libcfs_id2str(rpc->srpc_peer));
spin_unlock(&sfw_data.fw_lock);
return -EAGAIN;
diff --git a/drivers/staging/lustre/lnet/selftest/rpc.c 
b/drivers/staging/lustre/lnet/selftest/rpc.c
index 129fa02..5eb4232 100644
--- a/drivers/staging/lustre/lnet/selftest/rpc.c
+++ b/drivers/staging/lustre/lnet/selftest/rpc.c
@@ -667,7 +667,7 @@ srpc_finish_service(struct srpc_service *sv)
}
 
if (scd->scd_buf_nposted > 0) {
-   CDEBUG(D_NET, "waiting for %d posted buffers to unlink",
+   CDEBUG(D_NET, "waiting for %d posted buffers to 
unlink\n",
   scd->scd_buf_nposted);
spin_unlock(&scd->scd_lock);
return 0;
diff --git a/drivers/staging/lustre/lustre/ldlm/ldlm_request.c 
b/drivers/staging/lustre/lustre/ldlm/ldlm_request.c
index 6f0761c..c7904a9 100644
--- a/drivers/staging/lustre/lustre/ldlm/ldlm_request.c
+++ b/drivers/staging/lustre/lustre/ldlm/ldlm_request.c
@@ -1041,7 +1041,7 @@ int ldlm_cli_cancel(struct lustre_handle *lockh,
/* concurrent cancels on the same handle can happen */
lock = ldlm_handle2lock_long(lockh, LDLM_FL_CANCELING);
if (!lock) {
-   LDLM_DEBUG_NOLOCK("lock is already being destroyed\n");
+   LDLM_DEBUG_NOLOCK("lock is already being destroyed");
return 0;
}
 
diff --git a/drivers/staging/lustre/lustre/llite/file.c 
b/drivers/staging/lustre/lustre/llite/file.c
index d3ed905..cf619af 100644
--- a/drivers/staging/lustre/lustre/llite/file.c
+

[PATCH 07/10] staging: lustre: add last missing sparse annotation __user

2016-03-04 Thread James Simmons
From: Frank Zago 

One of the __user was missed in being applied to upstream
client. This is broken out of patch 11819.

Signed-off-by: Frank Zago 
Intel-bug-id: https://jira.hpdd.intel.com/browse/LU-5396
Reviewed-on: http://review.whamcloud.com/11819
Reviewed-by: James Simmons 
Reviewed-by: Dmitry Eremin 
Reviewed-by: Oleg Drokin 
---
 drivers/staging/lustre/lnet/lnet/api-ni.c |2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/drivers/staging/lustre/lnet/lnet/api-ni.c 
b/drivers/staging/lustre/lnet/lnet/api-ni.c
index a666d49..7395985 100644
--- a/drivers/staging/lustre/lnet/lnet/api-ni.c
+++ b/drivers/staging/lustre/lnet/lnet/api-ni.c
@@ -2041,7 +2041,7 @@ LNetCtl(unsigned int cmd, void *arg)
id.nid = data->ioc_nid;
id.pid = data->ioc_u32[0];
rc = lnet_ping(id, data->ioc_u32[1], /* timeout */
-  data->ioc_pbuf1,
+  (lnet_process_id_t __user *)data->ioc_pbuf1,
   data->ioc_plen1 / sizeof(lnet_process_id_t));
if (rc < 0)
return rc;
-- 
1.7.1

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


[PATCH 10/10] staging: lustre: make LNet use lprocfs_call_handler

2016-03-04 Thread James Simmons
Sometime ago a patch was submitted to duplicate the
proc_call_handler code in the LNet layer. This was
due to the thinking libcfs was not used by the LNet
layer. This was a wrong assumption so lets make LNet
use the lprocfs_call_handler from the libcfs layer.

Signed-off-by: James Simmons 
---
 .../staging/lustre/include/linux/libcfs/libcfs.h   |4 ++
 drivers/staging/lustre/lnet/lnet/router_proc.c |   32 
 drivers/staging/lustre/lustre/libcfs/module.c  |9 +++--
 3 files changed, 15 insertions(+), 30 deletions(-)

diff --git a/drivers/staging/lustre/include/linux/libcfs/libcfs.h 
b/drivers/staging/lustre/include/linux/libcfs/libcfs.h
index 1eab0eb..7d63620 100644
--- a/drivers/staging/lustre/include/linux/libcfs/libcfs.h
+++ b/drivers/staging/lustre/include/linux/libcfs/libcfs.h
@@ -154,5 +154,9 @@ struct lnet_debugfs_symlink_def {
 
 void lustre_insert_debugfs(struct ctl_table *table,
   const struct lnet_debugfs_symlink_def *symlinks);
+int lprocfs_call_handler(void *data, int write, loff_t *ppos,
+void __user *buffer, size_t *lenp,
+int (*handler)(void *data, int write,
+loff_t pos, void __user *buffer, int len));
 
 #endif /* _LIBCFS_H */
diff --git a/drivers/staging/lustre/lnet/lnet/router_proc.c 
b/drivers/staging/lustre/lnet/lnet/router_proc.c
index ce4331e..65f65a3 100644
--- a/drivers/staging/lustre/lnet/lnet/router_proc.c
+++ b/drivers/staging/lustre/lnet/lnet/router_proc.c
@@ -73,26 +73,6 @@
 
 #define LNET_PROC_VERSION(v)   ((unsigned int)((v) & LNET_PROC_VER_MASK))
 
-static int proc_call_handler(void *data, int write, loff_t *ppos,
-void __user *buffer, size_t *lenp,
-int (*handler)(void *data, int write,
-   loff_t pos, void __user *buffer,
-   int len))
-{
-   int rc = handler(data, write, *ppos, buffer, *lenp);
-
-   if (rc < 0)
-   return rc;
-
-   if (write) {
-   *ppos += *lenp;
-   } else {
-   *lenp = rc;
-   *ppos += rc;
-   }
-   return 0;
-}
-
 static int __proc_lnet_stats(void *data, int write,
 loff_t pos, void __user *buffer, int nob)
 {
@@ -144,8 +124,8 @@ static int __proc_lnet_stats(void *data, int write,
 static int proc_lnet_stats(struct ctl_table *table, int write,
   void __user *buffer, size_t *lenp, loff_t *ppos)
 {
-   return proc_call_handler(table->data, write, ppos, buffer, lenp,
-__proc_lnet_stats);
+   return lprocfs_call_handler(table->data, write, ppos, buffer, lenp,
+   __proc_lnet_stats);
 }
 
 static int proc_lnet_routes(struct ctl_table *table, int write,
@@ -640,8 +620,8 @@ static int __proc_lnet_buffers(void *data, int write,
 static int proc_lnet_buffers(struct ctl_table *table, int write,
 void __user *buffer, size_t *lenp, loff_t *ppos)
 {
-   return proc_call_handler(table->data, write, ppos, buffer, lenp,
-__proc_lnet_buffers);
+   return lprocfs_call_handler(table->data, write, ppos, buffer, lenp,
+   __proc_lnet_buffers);
 }
 
 static int proc_lnet_nis(struct ctl_table *table, int write,
@@ -865,8 +845,8 @@ static int proc_lnet_portal_rotor(struct ctl_table *table, 
int write,
  void __user *buffer, size_t *lenp,
  loff_t *ppos)
 {
-   return proc_call_handler(table->data, write, ppos, buffer, lenp,
-__proc_lnet_portal_rotor);
+   return lprocfs_call_handler(table->data, write, ppos, buffer, lenp,
+   __proc_lnet_portal_rotor);
 }
 
 static struct ctl_table lnet_table[] = {
diff --git a/drivers/staging/lustre/lustre/libcfs/module.c 
b/drivers/staging/lustre/lustre/libcfs/module.c
index a7e06ec..cdc640b 100644
--- a/drivers/staging/lustre/lustre/libcfs/module.c
+++ b/drivers/staging/lustre/lustre/libcfs/module.c
@@ -217,10 +217,10 @@ struct cfs_psdev_ops libcfs_psdev_ops = {
libcfs_ioctl
 };
 
-static int lprocfs_call_handler(void *data, int write, loff_t *ppos,
-void __user *buffer, size_t *lenp,
-int (*handler)(void *data, int write, loff_t pos,
-   void __user *buffer, int len))
+int lprocfs_call_handler(void *data, int write, loff_t *ppos,
+void __user *buffer, size_t *lenp,
+int (*handler)(void *data, int write, loff_t pos,
+   void __user *buffer, int len))
 {
int rc = handler(data, write, *ppos, buffer, *lenp);
 
@@ -235,6 +235,7 @@ static int lprocfs_call_handler(v

[PATCH 09/10] staging: lustre: rename proc_call_handler to lprocfs_call_handler

2016-03-04 Thread James Simmons
Using proc_call_handler as a function name is way too generic.
Rename to lprocfs_call_handler to avoid possible collisions.

Signed-off-by: James Simmons 
---
 drivers/staging/lustre/lustre/libcfs/module.c |   18 +-
 1 files changed, 9 insertions(+), 9 deletions(-)

diff --git a/drivers/staging/lustre/lustre/libcfs/module.c 
b/drivers/staging/lustre/lustre/libcfs/module.c
index 2a62331..a7e06ec 100644
--- a/drivers/staging/lustre/lustre/libcfs/module.c
+++ b/drivers/staging/lustre/lustre/libcfs/module.c
@@ -217,7 +217,7 @@ struct cfs_psdev_ops libcfs_psdev_ops = {
libcfs_ioctl
 };
 
-static int proc_call_handler(void *data, int write, loff_t *ppos,
+static int lprocfs_call_handler(void *data, int write, loff_t *ppos,
 void __user *buffer, size_t *lenp,
 int (*handler)(void *data, int write, loff_t pos,
void __user *buffer, int len))
@@ -280,8 +280,8 @@ static int __proc_dobitmasks(void *data, int write,
 static int proc_dobitmasks(struct ctl_table *table, int write,
   void __user *buffer, size_t *lenp, loff_t *ppos)
 {
-   return proc_call_handler(table->data, write, ppos, buffer, lenp,
-__proc_dobitmasks);
+   return lprocfs_call_handler(table->data, write, ppos, buffer, lenp,
+   __proc_dobitmasks);
 }
 
 static int __proc_dump_kernel(void *data, int write,
@@ -296,8 +296,8 @@ static int __proc_dump_kernel(void *data, int write,
 static int proc_dump_kernel(struct ctl_table *table, int write,
void __user *buffer, size_t *lenp, loff_t *ppos)
 {
-   return proc_call_handler(table->data, write, ppos, buffer, lenp,
-__proc_dump_kernel);
+   return lprocfs_call_handler(table->data, write, ppos, buffer, lenp,
+   __proc_dump_kernel);
 }
 
 static int __proc_daemon_file(void *data, int write,
@@ -319,8 +319,8 @@ static int __proc_daemon_file(void *data, int write,
 static int proc_daemon_file(struct ctl_table *table, int write,
void __user *buffer, size_t *lenp, loff_t *ppos)
 {
-   return proc_call_handler(table->data, write, ppos, buffer, lenp,
-__proc_daemon_file);
+   return lprocfs_call_handler(table->data, write, ppos, buffer, lenp,
+   __proc_daemon_file);
 }
 
 static int libcfs_force_lbug(struct ctl_table *table, int write,
@@ -389,8 +389,8 @@ static int __proc_cpt_table(void *data, int write,
 static int proc_cpt_table(struct ctl_table *table, int write,
  void __user *buffer, size_t *lenp, loff_t *ppos)
 {
-   return proc_call_handler(table->data, write, ppos, buffer, lenp,
-__proc_cpt_table);
+   return lprocfs_call_handler(table->data, write, ppos, buffer, lenp,
+   __proc_cpt_table);
 }
 
 static struct ctl_table lnet_table[] = {
-- 
1.7.1

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


[PATCH 08/10] staging: lustre: change test to asser in LNetGetId

2016-03-04 Thread James Simmons
The ln_refcount test was changed into an assert.

Signed-off-by: James Simmons 
---
 drivers/staging/lustre/lnet/lnet/api-ni.c |4 +---
 1 files changed, 1 insertions(+), 3 deletions(-)

diff --git a/drivers/staging/lustre/lnet/lnet/api-ni.c 
b/drivers/staging/lustre/lnet/lnet/api-ni.c
index 7395985..4843980 100644
--- a/drivers/staging/lustre/lnet/lnet/api-ni.c
+++ b/drivers/staging/lustre/lnet/lnet/api-ni.c
@@ -2090,9 +2090,7 @@ LNetGetId(unsigned int index, lnet_process_id_t *id)
int cpt;
int rc = -ENOENT;
 
-   /* LNetNI initilization failed? */
-   if (!the_lnet.ln_refcount)
-   return rc;
+   LASSERT(the_lnet.ln_refcount > 0);
 
cpt = lnet_net_lock_current();
 
-- 
1.7.1

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


Re: [PATCH v3 16/52] mtd: nand: use mtd_set_ecclayout() where appropriate

2016-03-04 Thread Brian Norris
On Fri, Feb 26, 2016 at 01:57:24AM +0100, Boris Brezillon wrote:
> Use the mtd_set_ecclayout() helper instead of directly assigning the
> mtd->ecclayout field.
> 
> Signed-off-by: Boris Brezillon 
> ---
>  drivers/mtd/nand/nand_base.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/mtd/nand/nand_base.c b/drivers/mtd/nand/nand_base.c
> index 17504f2..5093a3c 100644
> --- a/drivers/mtd/nand/nand_base.c
> +++ b/drivers/mtd/nand/nand_base.c
> @@ -4288,7 +4288,7 @@ int nand_scan_tail(struct mtd_info *mtd)
>   ecc->write_oob_raw = ecc->write_oob;
>  
>   /* propagate ecc info to mtd_info */
> - mtd->ecclayout = ecc->layout;
> + mtd_set_ecclayout(mtd, ecc->layout);

I'm having trouble applying this one. For the life of me, I can't figure
out where you got this context from. This block only appears much later
in nand_scan_tail()...

Do you think you could post a git tree with your intended changes? I may
just try to pull something in like that instead.

BTW, I'm not sure the OMAP refactorings are going to come in time, but I
was planning to pull those directly from the TI folks (i.e., they won't
be rebased on l2-mtd.git), since there's some intermingling of platform
changes there. I think I can fix the conflicts fine, but FYI.

Brian

>   mtd->ecc_strength = ecc->strength;
>   mtd->ecc_step_size = ecc->size;
>  
> -- 
> 2.1.4
> 
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


Re: [PATCH 07/10] staging: lustre: add last missing sparse annotation __user

2016-03-04 Thread Drokin, Oleg

On Mar 4, 2016, at 9:09 PM, James Simmons wrote:

> From: Frank Zago 
> 
> One of the __user was missed in being applied to upstream
> client. This is broken out of patch 11819.

It was not, the bug was fixed in another way.

> Signed-off-by: Frank Zago 
> Intel-bug-id: https://jira.hpdd.intel.com/browse/LU-5396
> Reviewed-on: http://review.whamcloud.com/11819
> Reviewed-by: James Simmons 
> Reviewed-by: Dmitry Eremin 
> Reviewed-by: Oleg Drokin 
> ---
> drivers/staging/lustre/lnet/lnet/api-ni.c |2 +-
> 1 files changed, 1 insertions(+), 1 deletions(-)
> 
> diff --git a/drivers/staging/lustre/lnet/lnet/api-ni.c 
> b/drivers/staging/lustre/lnet/lnet/api-ni.c
> index a666d49..7395985 100644
> --- a/drivers/staging/lustre/lnet/lnet/api-ni.c
> +++ b/drivers/staging/lustre/lnet/lnet/api-ni.c
> @@ -2041,7 +2041,7 @@ LNetCtl(unsigned int cmd, void *arg)
>   id.nid = data->ioc_nid;
>   id.pid = data->ioc_u32[0];
>   rc = lnet_ping(id, data->ioc_u32[1], /* timeout */
> -data->ioc_pbuf1,
> +(lnet_process_id_t __user *)data->ioc_pbuf1,

We do not need this one anymore, since ioc_pbuf1 is defned as user now:
drivers/staging/lustre/include/linux/libcfs/libcfs_ioctl.h: void __user 
*ioc_pbuf1;

>  data->ioc_plen1 / sizeof(lnet_process_id_t));
>   if (rc < 0)
>   return rc;
> -- 
> 1.7.1
> 

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


Re: [PATCH 2/2] isdn: i4l: move active-isdn drivers to staging

2016-03-04 Thread kbuild test robot
Hi Arnd,

[auto build test WARNING on staging/staging-testing]
[also build test WARNING on v4.5-rc6 next-20160304]
[if your patch is applied to the wrong git tree, please drop us a note to help 
improving the system]

url:
https://github.com/0day-ci/linux/commits/Arnd-Bergmann/isdn-icn-remove-a-warning/20160303-031435
config: m68k-allyesconfig (attached as .config)
reproduce:
wget 
https://git.kernel.org/cgit/linux/kernel/git/wfg/lkp-tests.git/plain/sbin/make.cross
 -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# save the attached .config to linux build tree
make.cross ARCH=m68k 

All warnings (new ones prefixed by >>):

   In file included from arch/m68k/include/asm/io_mm.h:26:0,
from arch/m68k/include/asm/io.h:4,
from include/linux/io.h:25,
from drivers/staging/i4l/icn/icn.h:41,
from drivers/staging/i4l/icn/icn.c:12:
   drivers/staging/i4l/icn/icn.c: In function 'icn_shiftout':
   arch/m68k/include/asm/raw_io.h:43:32: warning: cast to pointer from integer 
of different size [-Wint-to-pointer-cast]
#define out_8(addr,b) (void)((*(__force volatile u8 *) (addr)) = (b))
   ^
   arch/m68k/include/asm/io_mm.h:396:72: note: in expansion of macro 'out_8'
#define outb(val, port) ((port) < 1024 ? isa_rom_outb((val), (port)) : 
out_8((port), (val)))
   ^
>> drivers/staging/i4l/icn/icn.h:59:16: note: in expansion of macro 'outb'
#define OUTB_P outb
   ^
>> drivers/staging/i4l/icn/icn.c:89:3: note: in expansion of macro 'OUTB_P'
  OUTB_P((u_char) ((val >> s) & 1) ? 0xff : 0, port);
  ^

vim +/outb +59 drivers/staging/i4l/icn/icn.h

^1da177e drivers/isdn/icn/icn.h Linus Torvalds 2005-04-16  35  #ifdef __KERNEL__
^1da177e drivers/isdn/icn/icn.h Linus Torvalds 2005-04-16  36  /* Kernel 
includes */
^1da177e drivers/isdn/icn/icn.h Linus Torvalds 2005-04-16  37  
^1da177e drivers/isdn/icn/icn.h Linus Torvalds 2005-04-16  38  #include 

^1da177e drivers/isdn/icn/icn.h Linus Torvalds 2005-04-16  39  #include 

^1da177e drivers/isdn/icn/icn.h Linus Torvalds 2005-04-16  40  #include 

2584cf83 drivers/isdn/icn/icn.h Dan Williams   2015-08-10 @41  #include 

^1da177e drivers/isdn/icn/icn.h Linus Torvalds 2005-04-16  42  #include 

^1da177e drivers/isdn/icn/icn.h Linus Torvalds 2005-04-16  43  #include 

^1da177e drivers/isdn/icn/icn.h Linus Torvalds 2005-04-16  44  #include 

^1da177e drivers/isdn/icn/icn.h Linus Torvalds 2005-04-16  45  #include 

^1da177e drivers/isdn/icn/icn.h Linus Torvalds 2005-04-16  46  #include 

^1da177e drivers/isdn/icn/icn.h Linus Torvalds 2005-04-16  47  #include 

^1da177e drivers/isdn/icn/icn.h Linus Torvalds 2005-04-16  48  #include 

^1da177e drivers/isdn/icn/icn.h Linus Torvalds 2005-04-16  49  #include 

^1da177e drivers/isdn/icn/icn.h Linus Torvalds 2005-04-16  50  #include 

^1da177e drivers/isdn/icn/icn.h Linus Torvalds 2005-04-16  51  #include 

^1da177e drivers/isdn/icn/icn.h Linus Torvalds 2005-04-16  52  
^1da177e drivers/isdn/icn/icn.h Linus Torvalds 2005-04-16  53  #endif   
   /* __KERNEL__ */
^1da177e drivers/isdn/icn/icn.h Linus Torvalds 2005-04-16  54  
^1da177e drivers/isdn/icn/icn.h Linus Torvalds 2005-04-16  55  /* some useful 
macros for debugging */
^1da177e drivers/isdn/icn/icn.h Linus Torvalds 2005-04-16  56  #ifdef 
ICN_DEBUG_PORT
^1da177e drivers/isdn/icn/icn.h Linus Torvalds 2005-04-16  57  #define 
OUTB_P(v, p) {printk(KERN_DEBUG "icn: outb_p(0x%02x,0x%03x)\n", v, p); 
outb_p(v, p);}
^1da177e drivers/isdn/icn/icn.h Linus Torvalds 2005-04-16  58  #else
^1da177e drivers/isdn/icn/icn.h Linus Torvalds 2005-04-16 @59  #define OUTB_P 
outb
^1da177e drivers/isdn/icn/icn.h Linus Torvalds 2005-04-16  60  #endif
^1da177e drivers/isdn/icn/icn.h Linus Torvalds 2005-04-16  61  
^1da177e drivers/isdn/icn/icn.h Linus Torvalds 2005-04-16  62  /* Defaults for 
Port-Address and shared-memory */

:: The code at line 59 was first introduced by commit
:: 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 Linux-2.6.12-rc2

:: TO: Linus Torvalds 
:: CC: Linus Torvalds 

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


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


Re: [PATCH 01/10] staging: lustre: LNet drop rule implementation

2016-03-04 Thread kbuild test robot
Hi Liang,

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

url:
https://github.com/0day-ci/linux/commits/James-Simmons/Last-batch-of-fixes-for-LNet/20160305-101431
config: m68k-allyesconfig (attached as .config)
reproduce:
wget 
https://git.kernel.org/cgit/linux/kernel/git/wfg/lkp-tests.git/plain/sbin/make.cross
 -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# save the attached .config to linux build tree
make.cross ARCH=m68k 

All errors (new ones prefixed by >>):

>> ERROR: "__umoddi3" [drivers/staging/lustre/lnet/lnet/lnet.ko] undefined!

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


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