svn commit: r240288 - releng/9.1/sys/cddl/compat/opensolaris/sys

Martin Matuska mm at FreeBSD.org
Sun Sep 9 20:26:20 UTC 2012


Author: mm
Date: Sun Sep  9 20:26:19 2012
New Revision: 240288
URL: http://svn.freebsd.org/changeset/base/240288

Log:
  MFC r230454 (pjd):
  Use provided name when allocating ksid domain. It isn't really used
  on FreeBSD, but should fix a panic when pool is imported from another OS
  that is using this.
  
  MFC r240162 (mm):
  Make r230454 more readable and vendor-like.
  
  PR:		kern/171380
  Approved by:	re (kib)

Modified:
  releng/9.1/sys/cddl/compat/opensolaris/sys/sid.h
Directory Properties:
  releng/9.1/sys/   (props changed)

Modified: releng/9.1/sys/cddl/compat/opensolaris/sys/sid.h
==============================================================================
--- releng/9.1/sys/cddl/compat/opensolaris/sys/sid.h	Sun Sep  9 20:13:11 2012	(r240287)
+++ releng/9.1/sys/cddl/compat/opensolaris/sys/sid.h	Sun Sep  9 20:26:19 2012	(r240288)
@@ -30,7 +30,8 @@
 #define	_OPENSOLARIS_SYS_SID_H_
 
 typedef struct ksiddomain {
-	char	kd_name[16];	/* Domain part of SID */
+	char	*kd_name;	/* Domain part of SID */
+	uint_t	kd_len;
 } ksiddomain_t;
 typedef void	ksid_t;
 
@@ -38,9 +39,13 @@ static __inline ksiddomain_t *
 ksid_lookupdomain(const char *domain)
 {
 	ksiddomain_t *kd;
+	size_t len;
 
+	len = strlen(domain) + 1;
 	kd = kmem_alloc(sizeof(*kd), KM_SLEEP);
-	strlcpy(kd->kd_name, "FreeBSD", sizeof(kd->kd_name));
+	kd->kd_len = (uint_t)len;
+	kd->kd_name = kmem_alloc(len, KM_SLEEP);
+	strcpy(kd->kd_name, domain);
 	return (kd);
 }
 
@@ -48,6 +53,7 @@ static __inline void
 ksiddomain_rele(ksiddomain_t *kd)
 {
 
+	kmem_free(kd->kd_name, kd->kd_len);
 	kmem_free(kd, sizeof(*kd));
 }
 


More information about the svn-src-all mailing list