فهرست منبع

Execute all operations on kernel_memory using plain pci model to avoid extra references

Suren A. Chilingaryan 9 سال پیش
والد
کامیت
87583e6ec5
2فایلهای تغییر یافته به همراه5 افزوده شده و 1 حذف شده
  1. 1 1
      driver/kmem.c
  2. 4 0
      pcitool/cli.c

+ 1 - 1
driver/kmem.c

@@ -238,7 +238,7 @@ static int pcidriver_kmem_free_check(pcidriver_privdata_t *privdata, kmem_handle
 
 	    if (kmem_entry->refs) {
 		kmem_entry->mode += 1;
-		mod_info("can't free referenced kmem_entry\n");
+		mod_info("can't free referenced kmem_entry, refs = %lx\n", kmem_entry->refs);
 		return -EBUSY;
 	    }
 	

+ 4 - 0
pcitool/cli.c

@@ -2689,6 +2689,7 @@ int main(int argc, char **argv) {
 	    case OPT_LIST_KMEM:
 		if (mode != MODE_INVALID) Usage(argc, argv, "Multiple operations are not supported");
 		mode = MODE_LIST_KMEM;
+		if (!model) model = "pci";
 		
 		if (optarg) use = optarg;
 		else if ((optind < argc)&&(argv[optind][0] != '-'))  use = argv[optind++];
@@ -2708,6 +2709,7 @@ int main(int argc, char **argv) {
 	    case OPT_READ_KMEM:
 		if (mode != MODE_INVALID) Usage(argc, argv, "Multiple operations are not supported");
 		mode = MODE_READ_KMEM;
+		if (!model) model = "pci";
 
 		num_offset = strchr(optarg, ':');
 
@@ -2724,6 +2726,7 @@ int main(int argc, char **argv) {
 	    case OPT_ALLOC_KMEM:
 		if (mode != MODE_INVALID) Usage(argc, argv, "Multiple operations are not supported");
 		mode = MODE_ALLOC_KMEM;
+		model = "pci";
 
 		if (optarg) use = optarg;
 		else if ((optind < argc)&&(argv[optind][0] != '-')) use = argv[optind++];
@@ -2731,6 +2734,7 @@ int main(int argc, char **argv) {
 	    case OPT_FREE_KMEM:
 		if (mode != MODE_INVALID) Usage(argc, argv, "Multiple operations are not supported");
 		mode = MODE_FREE_KMEM;
+		if (!model) model = "pci";
 
 		if (optarg) use = optarg;
 		else if ((optind < argc)&&(argv[optind][0] != '-')) use = argv[optind++];