svn commit: r309093 - head/sys/dev/firewire

Andriy Gapon avg at FreeBSD.org
Thu Nov 24 09:47:58 UTC 2016


Author: avg
Date: Thu Nov 24 09:47:56 2016
New Revision: 309093
URL: https://svnweb.freebsd.org/changeset/base/309093

Log:
  firewire: initialize tag label to -1 in fw_xfer_alloc()
  
  Zero can be confused for a potentially valid value.
  For example, if I load and unload sbp driver I get a lot of messages
  like the following:
  
  fw_tl_free: the xfer is not in the queue (tlabel=0, flag=0x0)
  send: dst=0x00 tl=0x00 rt=0 tcode=0x0 pri=0x0 src=0x000
  recv: dst=0x01 tl=0x21 rt=1 tcode=0x1 pri=0x0 src=0xffc0
  KDB: stack backtrace:
  db_trace_self_wrapper() at db_trace_self_wrapper+0x2b/frame 0xfffffe04464407e0
  fw_tl_free() at fw_tl_free+0x18d/frame 0xfffffe0446440820
  fw_xfer_unload() at fw_xfer_unload+0xca/frame 0xfffffe0446440840
  fw_xferlist_remove() at fw_xferlist_remove+0x2f/frame 0xfffffe0446440870
  sbp_detach() at sbp_detach+0x1e0/frame 0xfffffe04464408e0
  device_detach() at device_detach+0x80/frame 0xfffffe0446440900
  devclass_driver_deleted() at devclass_driver_deleted+0x6a/frame 0xfffffe0446440940
  devclass_delete_driver() at devclass_delete_driver+0x7d/frame 0xfffffe0446440980
  driver_module_handler() at driver_module_handler+0xff/frame 0xfffffe04464409d0
  module_unload() at module_unload+0x32/frame 0xfffffe04464409f0
  linker_file_unload() at linker_file_unload+0x24b/frame 0xfffffe0446440a40
  kern_kldunload() at kern_kldunload+0xbc/frame 0xfffffe0446440a70
  amd64_syscall() at amd64_syscall+0x314/frame 0xfffffe0446440bf0
  Xfast_syscall() at Xfast_syscall+0xfb/frame 0xfffffe0446440bf0
  
  MFC after:	2 weeks

Modified:
  head/sys/dev/firewire/firewire.c

Modified: head/sys/dev/firewire/firewire.c
==============================================================================
--- head/sys/dev/firewire/firewire.c	Thu Nov 24 09:43:42 2016	(r309092)
+++ head/sys/dev/firewire/firewire.c	Thu Nov 24 09:47:56 2016	(r309093)
@@ -1098,6 +1098,7 @@ fw_xfer_alloc(struct malloc_type *type)
 		return xfer;
 
 	xfer->malloc = type;
+	xfer->tl = -1;
 
 	return xfer;
 }


More information about the svn-src-all mailing list