[PATCH] tpm: use clear_bit

Use set_bit() and clear_bit() for dev_mask manipulation.

Signed-off-by: Kylie Hall <kjhall@us.ibm.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>

authored by Kylene Jo Hall and committed by Linus Torvalds 10685a95 36b20020

+7 -18
+7 -18
drivers/char/tpm/tpm.c
··· 32 32 TPM_MINOR = 224, /* officially assigned */ 33 33 TPM_BUFSIZE = 2048, 34 34 TPM_NUM_DEVICES = 256, 35 - TPM_NUM_MASK_ENTRIES = TPM_NUM_DEVICES / (8 * sizeof(int)) 36 35 }; 37 36 38 37 enum tpm_duration { ··· 47 48 48 49 static LIST_HEAD(tpm_chip_list); 49 50 static DEFINE_SPINLOCK(driver_lock); 50 - static int dev_mask[TPM_NUM_MASK_ENTRIES]; 51 + static DECLARE_BITMAP(dev_mask, TPM_NUM_DEVICES); 51 52 52 53 /* 53 54 * Array with one entry per ordinal defining the maximum amount ··· 1037 1038 sysfs_remove_group(&dev->kobj, chip->vendor.attr_group); 1038 1039 tpm_bios_log_teardown(chip->bios_dir); 1039 1040 1040 - dev_mask[chip->dev_num / TPM_NUM_MASK_ENTRIES] &= 1041 - ~(1 << (chip->dev_num % TPM_NUM_MASK_ENTRIES)); 1041 + clear_bit(chip->dev_num, dev_mask); 1042 1042 1043 1043 kfree(chip); 1044 1044 ··· 1095 1097 1096 1098 char *devname; 1097 1099 struct tpm_chip *chip; 1098 - int i, j; 1099 1100 1100 1101 /* Driver specific per-device data */ 1101 1102 chip = kzalloc(sizeof(*chip), GFP_KERNEL); ··· 1113 1116 1114 1117 memcpy(&chip->vendor, entry, sizeof(struct tpm_vendor_specific)); 1115 1118 1116 - chip->dev_num = -1; 1119 + chip->dev_num = find_first_zero_bit(dev_mask, TPM_NUM_DEVICES); 1117 1120 1118 - for (i = 0; i < TPM_NUM_MASK_ENTRIES; i++) 1119 - for (j = 0; j < 8 * sizeof(int); j++) 1120 - if ((dev_mask[i] & (1 << j)) == 0) { 1121 - chip->dev_num = 1122 - i * TPM_NUM_MASK_ENTRIES + j; 1123 - dev_mask[i] |= 1 << j; 1124 - goto dev_num_search_complete; 1125 - } 1126 - 1127 - dev_num_search_complete: 1128 - if (chip->dev_num < 0) { 1121 + if (chip->dev_num >= TPM_NUM_DEVICES) { 1129 1122 dev_err(dev, "No available tpm device numbers\n"); 1130 1123 kfree(chip); 1131 1124 return NULL; ··· 1123 1136 chip->vendor.miscdev.minor = TPM_MINOR; 1124 1137 else 1125 1138 chip->vendor.miscdev.minor = MISC_DYNAMIC_MINOR; 1139 + 1140 + set_bit(chip->dev_num, dev_mask); 1126 1141 1127 1142 devname = kmalloc(DEVNAME_SIZE, GFP_KERNEL); 1128 1143 scnprintf(devname, DEVNAME_SIZE, "%s%d", "tpm", chip->dev_num); ··· 1139 1150 chip->vendor.miscdev.name, 1140 1151 chip->vendor.miscdev.minor); 1141 1152 put_device(dev); 1153 + clear_bit(chip->dev_num, dev_mask); 1142 1154 kfree(chip); 1143 - dev_mask[i] &= !(1 << j); 1144 1155 return NULL; 1145 1156 } 1146 1157