Author: slavash
Date: Wed Dec  5 13:41:37 2018
New Revision: 341556
URL: https://svnweb.freebsd.org/changeset/base/341556

Log:
  mlx5: Fix for potential memory leaks.
  
  Make sure allocated data gets freed in error cases.
  
  Submitted by:   hselasky@
  Approved by:    hselasky (mentor)
  MFC after:      1 week
  Sponsored by:   Mellanox Technologies

Modified:
  head/sys/dev/mlx5/mlx5_core/mlx5_fs_tree.c
  head/sys/dev/mlx5/mlx5_core/mlx5_pagealloc.c
  head/sys/dev/mlx5/mlx5_core/mlx5_vport.c

Modified: head/sys/dev/mlx5/mlx5_core/mlx5_fs_tree.c
==============================================================================
--- head/sys/dev/mlx5/mlx5_core/mlx5_fs_tree.c  Wed Dec  5 13:41:06 2018        
(r341555)
+++ head/sys/dev/mlx5/mlx5_core/mlx5_fs_tree.c  Wed Dec  5 13:41:37 2018        
(r341556)
@@ -1601,9 +1601,10 @@ static char *get_dest_name(struct mlx5_flow_destinatio
        case MLX5_FLOW_CONTEXT_DEST_TYPE_TIR:
                snprintf(name, 20, "dest_%s_%u", "tir", dest->tir_num);
                return name;
+       default:
+               kfree(name);
+               return NULL;
        }
-
-       return NULL;
 }
 
 /* assumed fg is locked */

Modified: head/sys/dev/mlx5/mlx5_core/mlx5_pagealloc.c
==============================================================================
--- head/sys/dev/mlx5/mlx5_core/mlx5_pagealloc.c        Wed Dec  5 13:41:06 
2018        (r341555)
+++ head/sys/dev/mlx5/mlx5_core/mlx5_pagealloc.c        Wed Dec  5 13:41:37 
2018        (r341556)
@@ -153,6 +153,7 @@ failure:
                bus_dmamem_free(dev->cmd.dma_tag, fwp[x].virt_addr, 
fwp[x].dma_map);
        }
        sx_xunlock(&dev->cmd.dma_sx);
+       kfree(fwp);
        return (NULL);
 }
 

Modified: head/sys/dev/mlx5/mlx5_core/mlx5_vport.c
==============================================================================
--- head/sys/dev/mlx5/mlx5_core/mlx5_vport.c    Wed Dec  5 13:41:06 2018        
(r341555)
+++ head/sys/dev/mlx5/mlx5_core/mlx5_vport.c    Wed Dec  5 13:41:37 2018        
(r341556)
@@ -1597,8 +1597,8 @@ int mlx5_query_vport_counter(struct mlx5_core_dev *dev
 
        err = mlx5_cmd_exec(dev, in, in_sz, out,  out_size);
 
-       kvfree(in);
 ex:
+       kvfree(in);
        return err;
 }
 EXPORT_SYMBOL_GPL(mlx5_query_vport_counter);
_______________________________________________
[email protected] mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "[email protected]"

Reply via email to