svn commit: r277496 - head/sys/kern

Mateusz Guzik mjg at FreeBSD.org
Wed Jan 21 18:32:54 UTC 2015


Author: mjg
Date: Wed Jan 21 18:32:53 2015
New Revision: 277496
URL: https://svnweb.freebsd.org/changeset/base/277496

Log:
  filedesc: avoid spurious copying of capabilities in fget_unlocked
  
  We obtain a stable copy and store it in local 'fde' variable. Storing another
  copy (based on aforementioned variable) does not serve any purpose.
  
  No functional changes.

Modified:
  head/sys/kern/kern_descrip.c

Modified: head/sys/kern/kern_descrip.c
==============================================================================
--- head/sys/kern/kern_descrip.c	Wed Jan 21 18:05:42 2015	(r277495)
+++ head/sys/kern/kern_descrip.c	Wed Jan 21 18:32:53 2015	(r277496)
@@ -2337,7 +2337,7 @@ fget_unlocked(struct filedesc *fdp, int 
 	u_int count;
 #ifdef CAPABILITIES
 	seq_t seq;
-	cap_rights_t haverights;
+	cap_rights_t *haverights;
 	int error;
 #endif
 
@@ -2367,9 +2367,9 @@ fget_unlocked(struct filedesc *fdp, int 
 		if (fp == NULL)
 			return (EBADF);
 #ifdef CAPABILITIES
-		haverights = *cap_rights_fde(&fde);
+		haverights = cap_rights_fde(&fde);
 		if (needrightsp != NULL) {
-			error = cap_check(&haverights, needrightsp);
+			error = cap_check(haverights, needrightsp);
 			if (error != 0)
 				return (error);
 			if (cap_rights_is_set(needrightsp, CAP_FCNTL)) {
@@ -2408,7 +2408,7 @@ fget_unlocked(struct filedesc *fdp, int 
 	*fpp = fp;
 	if (haverightsp != NULL) {
 #ifdef CAPABILITIES
-		*haverightsp = haverights;
+		*haverightsp = *haverights;
 #else
 		CAP_ALL(haverightsp);
 #endif


More information about the svn-src-head mailing list