svn commit: r312878 - head/sys/dev/mlx5/mlx5_core

Hans Petter Selasky hselasky at FreeBSD.org
Fri Jan 27 10:56:04 UTC 2017


Author: hselasky
Date: Fri Jan 27 10:56:03 2017
New Revision: 312878
URL: https://svnweb.freebsd.org/changeset/base/312878

Log:
  Fix command completion with callback scenario.
  
  MFC after:		1 week
  Sponsored by:		Mellanox Technologies

Modified:
  head/sys/dev/mlx5/mlx5_core/mlx5_cmd.c

Modified: head/sys/dev/mlx5/mlx5_core/mlx5_cmd.c
==============================================================================
--- head/sys/dev/mlx5/mlx5_core/mlx5_cmd.c	Fri Jan 27 10:47:53 2017	(r312877)
+++ head/sys/dev/mlx5/mlx5_core/mlx5_cmd.c	Fri Jan 27 10:56:03 2017	(r312878)
@@ -723,6 +723,9 @@ static void complete_command(struct mlx5
 	struct mlx5_cmd *cmd = ent->cmd;
 	struct mlx5_core_dev *dev = container_of(cmd, struct mlx5_core_dev,
 						 cmd);
+	mlx5_cmd_cbk_t callback;
+	void *context;
+
 	s64 ds;
 	struct mlx5_cmd_stats *stats;
 	unsigned long flags;
@@ -744,6 +747,8 @@ static void complete_command(struct mlx5
 			spin_unlock_irqrestore(&stats->lock, flags);
 		}
 
+		callback = ent->callback;
+		context = ent->context;
 		err = ent->ret;
 		if (!err)
 			err = mlx5_copy_from_msg(ent->uout,
@@ -754,7 +759,7 @@ static void complete_command(struct mlx5
 		free_msg(dev, ent->in);
 
 		free_cmd(ent);
-		ent->callback(err, ent->context);
+		callback(err, context);
 	} else {
 		complete(&ent->done);
 	}


More information about the svn-src-all mailing list