[PATCH V3] staging: rtl8192u: check return value of read_nic_word_E
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
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
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
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
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
[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
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
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
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
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.
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
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()
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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