Commit 7b3bbb926f4b3dd3a007dcf8dfa00203f52cb58d

Authored by Paul Moore
Committed by David S. Miller
1 parent c1b14c0a46

[NetLabel]: Cleanup ebitmap_import()

Rewrite ebitmap_import() so it is a bit cleaner and easier to read.

Signed-off-by: Paul Moore <paul.moore@hp.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

Showing 1 changed file with 16 additions and 20 deletions Side-by-side Diff

security/selinux/ss/ebitmap.c
... ... @@ -145,29 +145,28 @@
145 145 struct ebitmap *dst)
146 146 {
147 147 size_t src_off = 0;
  148 + size_t node_limit;
148 149 struct ebitmap_node *node_new;
149 150 struct ebitmap_node *node_last = NULL;
150   - size_t iter;
151   - size_t iter_bit;
152   - size_t iter_limit;
  151 + u32 i_byte;
  152 + u32 i_bit;
153 153 unsigned char src_byte;
154 154  
155   - do {
156   - iter_limit = src_len - src_off;
157   - if (iter_limit >= sizeof(MAPTYPE)) {
  155 + while (src_off < src_len) {
  156 + if (src_len - src_off >= sizeof(MAPTYPE)) {
158 157 if (*(MAPTYPE *)&src[src_off] == 0) {
159 158 src_off += sizeof(MAPTYPE);
160 159 continue;
161 160 }
162   - iter_limit = sizeof(MAPTYPE);
  161 + node_limit = sizeof(MAPTYPE);
163 162 } else {
164   - iter = src_off;
165   - src_byte = 0;
166   - do {
167   - src_byte |= src[iter++];
168   - } while (iter < src_len && src_byte == 0);
  163 + for (src_byte = 0, i_byte = src_off;
  164 + i_byte < src_len && src_byte == 0;
  165 + i_byte++)
  166 + src_byte |= src[i_byte];
169 167 if (src_byte == 0)
170 168 break;
  169 + node_limit = src_len - src_off;
171 170 }
172 171  
173 172 node_new = kzalloc(sizeof(*node_new), GFP_ATOMIC);
174 173  
175 174  
176 175  
177 176  
... ... @@ -176,24 +175,21 @@
176 175 return -ENOMEM;
177 176 }
178 177 node_new->startbit = src_off * 8;
179   - iter = 0;
180   - do {
  178 + for (i_byte = 0; i_byte < node_limit; i_byte++) {
181 179 src_byte = src[src_off++];
182   - iter_bit = iter++ * 8;
183   - while (src_byte != 0) {
  180 + for (i_bit = i_byte * 8; src_byte != 0; i_bit++) {
184 181 if (src_byte & 0x80)
185   - node_new->map |= MAPBIT << iter_bit;
186   - iter_bit++;
  182 + node_new->map |= MAPBIT << i_bit;
187 183 src_byte <<= 1;
188 184 }
189   - } while (iter < iter_limit);
  185 + }
190 186  
191 187 if (node_last != NULL)
192 188 node_last->next = node_new;
193 189 else
194 190 dst->node = node_new;
195 191 node_last = node_new;
196   - } while (src_off < src_len);
  192 + }
197 193  
198 194 if (likely(node_last != NULL))
199 195 dst->highbit = node_last->startbit + MAPSIZE;