[dpdk-dev] virtio: check if devargs is NULL before checking its value

Message ID 1464100542-48126-1-git-send-email-huawei.xie@intel.com (mailing list archive)
State Superseded, archived
Delegated to: Yuanhan Liu
Headers

Commit Message

Huawei Xie May 24, 2016, 2:35 p.m. UTC
  Fixes: ac5e1d838dc1 ("virtio: skip error when probing kernel managed device")

Signed-off-by: Huawei Xie <huawei.xie@intel.com>
---
 drivers/net/virtio/virtio_pci.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)
  

Comments

Thomas Monjalon May 25, 2016, 10:47 a.m. UTC | #1
> -		    dev->devargs->type != RTE_DEVTYPE_WHITELISTED_PCI) {
> +		    (!dev->devargs ||
> +		     dev->devargs->type != RTE_DEVTYPE_WHITELISTED_PCI)) {

Should the title be something like "fix crash ..."?

I would also add
Reported-by: Vincent Li <vincent.mc.li@gmail.com>
  
Yuanhan Liu May 27, 2016, 2:09 a.m. UTC | #2
On Wed, May 25, 2016 at 12:47:30PM +0200, Thomas Monjalon wrote:
> > -		    dev->devargs->type != RTE_DEVTYPE_WHITELISTED_PCI) {
> > +		    (!dev->devargs ||
> > +		     dev->devargs->type != RTE_DEVTYPE_WHITELISTED_PCI)) {
> 
> Should the title be something like "fix crash ..."?
> 
> I would also add
> Reported-by: Vincent Li <vincent.mc.li@gmail.com>

Huawei, the two are good comments (Thomas, thanks for the review, BTW :).

So, mind to send v2? BTW, I think this patch deserves some explanation,
say, why dev->devargs could be NULL.



	--yliu
  
Huawei Xie June 1, 2016, 5:50 a.m. UTC | #3
On 5/27/2016 10:08 AM, Yuanhan Liu wrote:
> On Wed, May 25, 2016 at 12:47:30PM +0200, Thomas Monjalon wrote:
>>> -		    dev->devargs->type != RTE_DEVTYPE_WHITELISTED_PCI) {
>>> +		    (!dev->devargs ||
>>> +		     dev->devargs->type != RTE_DEVTYPE_WHITELISTED_PCI)) {
>> Should the title be something like "fix crash ..."?
>>
>> I would also add
>> Reported-by: Vincent Li <vincent.mc.li@gmail.com>
> Huawei, the two are good comments (Thomas, thanks for the review, BTW :).

np.

>
> So, mind to send v2? BTW, I think this patch deserves some explanation,
> say, why dev->devargs could be NULL.
>
>
>
> 	--yliu
>
  

Patch

diff --git a/drivers/net/virtio/virtio_pci.c b/drivers/net/virtio/virtio_pci.c
index 9cdca06..0e76db9 100644
--- a/drivers/net/virtio/virtio_pci.c
+++ b/drivers/net/virtio/virtio_pci.c
@@ -626,6 +626,7 @@  next:
  * Return -1:
  *   if there is error mapping with VFIO/UIO.
  *   if port map error when driver type is KDRV_NONE.
+ *   if whitelisted but driver type is KDRV_UNKNOWN.
  * Return 1 if kernel driver is managing the device.
  * Return 0 on success.
  */
@@ -651,7 +652,8 @@  vtpci_init(struct rte_pci_device *dev, struct virtio_hw *hw,
 	PMD_INIT_LOG(INFO, "trying with legacy virtio pci.");
 	if (legacy_virtio_resource_init(dev, hw, dev_flags) < 0) {
 		if (dev->kdrv == RTE_KDRV_UNKNOWN &&
-		    dev->devargs->type != RTE_DEVTYPE_WHITELISTED_PCI) {
+		    (!dev->devargs ||
+		     dev->devargs->type != RTE_DEVTYPE_WHITELISTED_PCI)) {
 			PMD_INIT_LOG(INFO,
 				"skip kernel managed virtio device.");
 			return 1;