瀏覽代碼

Merge branch 'master' of git://git.infradead.org/users/pcmoore/selinux into next

James Morris 11 年之前
父節點
當前提交
923b49ff69
共有 1 個文件被更改,包括 13 次插入1 次删除
  1. 13 1
      security/selinux/ss/policydb.c

+ 13 - 1
security/selinux/ss/policydb.c

@@ -1995,7 +1995,19 @@ static int filename_trans_read(struct policydb *p, void *fp)
 		if (rc)
 			goto out;
 
-		hashtab_insert(p->filename_trans, ft, otype);
+		rc = hashtab_insert(p->filename_trans, ft, otype);
+		if (rc) {
+			/*
+			 * Do not return -EEXIST to the caller, or the system
+			 * will not boot.
+			 */
+			if (rc != -EEXIST)
+				goto out;
+			/* But free memory to avoid memory leak. */
+			kfree(ft);
+			kfree(name);
+			kfree(otype);
+		}
 	}
 	hash_eval(p->filename_trans, "filenametr");
 	return 0;