diff options
Diffstat (limited to 'net/netlabel/netlabel_domainhash.c')
-rw-r--r-- | net/netlabel/netlabel_domainhash.c | 82 |
1 files changed, 43 insertions, 39 deletions
diff --git a/net/netlabel/netlabel_domainhash.c b/net/netlabel/netlabel_domainhash.c index d64e2ae3b129..af4371d3b459 100644 --- a/net/netlabel/netlabel_domainhash.c +++ b/net/netlabel/netlabel_domainhash.c | |||
@@ -188,7 +188,7 @@ int netlbl_domhsh_init(u32 size) | |||
188 | /** | 188 | /** |
189 | * netlbl_domhsh_add - Adds a entry to the domain hash table | 189 | * netlbl_domhsh_add - Adds a entry to the domain hash table |
190 | * @entry: the entry to add | 190 | * @entry: the entry to add |
191 | * @audit_secid: the LSM secid to use in the audit message | 191 | * @audit_info: NetLabel audit information |
192 | * | 192 | * |
193 | * Description: | 193 | * Description: |
194 | * Adds a new entry to the domain hash table and handles any updates to the | 194 | * Adds a new entry to the domain hash table and handles any updates to the |
@@ -196,7 +196,8 @@ int netlbl_domhsh_init(u32 size) | |||
196 | * negative on failure. | 196 | * negative on failure. |
197 | * | 197 | * |
198 | */ | 198 | */ |
199 | int netlbl_domhsh_add(struct netlbl_dom_map *entry, u32 audit_secid) | 199 | int netlbl_domhsh_add(struct netlbl_dom_map *entry, |
200 | struct netlbl_audit *audit_info) | ||
200 | { | 201 | { |
201 | int ret_val; | 202 | int ret_val; |
202 | u32 bkt; | 203 | u32 bkt; |
@@ -241,26 +242,26 @@ int netlbl_domhsh_add(struct netlbl_dom_map *entry, u32 audit_secid) | |||
241 | spin_unlock(&netlbl_domhsh_def_lock); | 242 | spin_unlock(&netlbl_domhsh_def_lock); |
242 | } else | 243 | } else |
243 | ret_val = -EINVAL; | 244 | ret_val = -EINVAL; |
244 | if (ret_val == 0) { | 245 | |
245 | if (entry->domain != NULL) | 246 | if (entry->domain != NULL) |
246 | audit_domain = entry->domain; | 247 | audit_domain = entry->domain; |
247 | else | 248 | else |
248 | audit_domain = "(default)"; | 249 | audit_domain = "(default)"; |
249 | audit_buf = netlbl_audit_start_common(AUDIT_MAC_MAP_ADD, | 250 | audit_buf = netlbl_audit_start_common(AUDIT_MAC_MAP_ADD, audit_info); |
250 | audit_secid); | 251 | audit_log_format(audit_buf, " nlbl_domain=%s", audit_domain); |
251 | audit_log_format(audit_buf, " domain=%s", audit_domain); | 252 | switch (entry->type) { |
252 | switch (entry->type) { | 253 | case NETLBL_NLTYPE_UNLABELED: |
253 | case NETLBL_NLTYPE_UNLABELED: | 254 | audit_log_format(audit_buf, " nlbl_protocol=unlbl"); |
254 | audit_log_format(audit_buf, " protocol=unlbl"); | 255 | break; |
255 | break; | 256 | case NETLBL_NLTYPE_CIPSOV4: |
256 | case NETLBL_NLTYPE_CIPSOV4: | 257 | audit_log_format(audit_buf, |
257 | audit_log_format(audit_buf, | 258 | " nlbl_protocol=cipsov4 cipso_doi=%u", |
258 | " protocol=cipsov4 doi=%u", | 259 | entry->type_def.cipsov4->doi); |
259 | entry->type_def.cipsov4->doi); | 260 | break; |
260 | break; | ||
261 | } | ||
262 | audit_log_end(audit_buf); | ||
263 | } | 261 | } |
262 | audit_log_format(audit_buf, " res=%u", ret_val == 0 ? 1 : 0); | ||
263 | audit_log_end(audit_buf); | ||
264 | |||
264 | rcu_read_unlock(); | 265 | rcu_read_unlock(); |
265 | 266 | ||
266 | if (ret_val != 0) { | 267 | if (ret_val != 0) { |
@@ -279,7 +280,7 @@ int netlbl_domhsh_add(struct netlbl_dom_map *entry, u32 audit_secid) | |||
279 | /** | 280 | /** |
280 | * netlbl_domhsh_add_default - Adds the default entry to the domain hash table | 281 | * netlbl_domhsh_add_default - Adds the default entry to the domain hash table |
281 | * @entry: the entry to add | 282 | * @entry: the entry to add |
282 | * @audit_secid: the LSM secid to use in the audit message | 283 | * @audit_info: NetLabel audit information |
283 | * | 284 | * |
284 | * Description: | 285 | * Description: |
285 | * Adds a new default entry to the domain hash table and handles any updates | 286 | * Adds a new default entry to the domain hash table and handles any updates |
@@ -287,15 +288,16 @@ int netlbl_domhsh_add(struct netlbl_dom_map *entry, u32 audit_secid) | |||
287 | * negative on failure. | 288 | * negative on failure. |
288 | * | 289 | * |
289 | */ | 290 | */ |
290 | int netlbl_domhsh_add_default(struct netlbl_dom_map *entry, u32 audit_secid) | 291 | int netlbl_domhsh_add_default(struct netlbl_dom_map *entry, |
292 | struct netlbl_audit *audit_info) | ||
291 | { | 293 | { |
292 | return netlbl_domhsh_add(entry, audit_secid); | 294 | return netlbl_domhsh_add(entry, audit_info); |
293 | } | 295 | } |
294 | 296 | ||
295 | /** | 297 | /** |
296 | * netlbl_domhsh_remove - Removes an entry from the domain hash table | 298 | * netlbl_domhsh_remove - Removes an entry from the domain hash table |
297 | * @domain: the domain to remove | 299 | * @domain: the domain to remove |
298 | * @audit_secid: the LSM secid to use in the audit message | 300 | * @audit_info: NetLabel audit information |
299 | * | 301 | * |
300 | * Description: | 302 | * Description: |
301 | * Removes an entry from the domain hash table and handles any updates to the | 303 | * Removes an entry from the domain hash table and handles any updates to the |
@@ -303,7 +305,7 @@ int netlbl_domhsh_add_default(struct netlbl_dom_map *entry, u32 audit_secid) | |||
303 | * negative on failure. | 305 | * negative on failure. |
304 | * | 306 | * |
305 | */ | 307 | */ |
306 | int netlbl_domhsh_remove(const char *domain, u32 audit_secid) | 308 | int netlbl_domhsh_remove(const char *domain, struct netlbl_audit *audit_info) |
307 | { | 309 | { |
308 | int ret_val = -ENOENT; | 310 | int ret_val = -ENOENT; |
309 | struct netlbl_dom_map *entry; | 311 | struct netlbl_dom_map *entry; |
@@ -345,18 +347,20 @@ int netlbl_domhsh_remove(const char *domain, u32 audit_secid) | |||
345 | ret_val = -ENOENT; | 347 | ret_val = -ENOENT; |
346 | spin_unlock(&netlbl_domhsh_def_lock); | 348 | spin_unlock(&netlbl_domhsh_def_lock); |
347 | } | 349 | } |
348 | if (ret_val == 0) { | ||
349 | if (entry->domain != NULL) | ||
350 | audit_domain = entry->domain; | ||
351 | else | ||
352 | audit_domain = "(default)"; | ||
353 | audit_buf = netlbl_audit_start_common(AUDIT_MAC_MAP_DEL, | ||
354 | audit_secid); | ||
355 | audit_log_format(audit_buf, " domain=%s", audit_domain); | ||
356 | audit_log_end(audit_buf); | ||
357 | 350 | ||
351 | if (entry->domain != NULL) | ||
352 | audit_domain = entry->domain; | ||
353 | else | ||
354 | audit_domain = "(default)"; | ||
355 | audit_buf = netlbl_audit_start_common(AUDIT_MAC_MAP_DEL, audit_info); | ||
356 | audit_log_format(audit_buf, | ||
357 | " nlbl_domain=%s res=%u", | ||
358 | audit_domain, | ||
359 | ret_val == 0 ? 1 : 0); | ||
360 | audit_log_end(audit_buf); | ||
361 | |||
362 | if (ret_val == 0) | ||
358 | call_rcu(&entry->rcu, netlbl_domhsh_free_entry); | 363 | call_rcu(&entry->rcu, netlbl_domhsh_free_entry); |
359 | } | ||
360 | 364 | ||
361 | remove_return: | 365 | remove_return: |
362 | rcu_read_unlock(); | 366 | rcu_read_unlock(); |
@@ -365,7 +369,7 @@ remove_return: | |||
365 | 369 | ||
366 | /** | 370 | /** |
367 | * netlbl_domhsh_remove_default - Removes the default entry from the table | 371 | * netlbl_domhsh_remove_default - Removes the default entry from the table |
368 | * @audit_secid: the LSM secid to use in the audit message | 372 | * @audit_info: NetLabel audit information |
369 | * | 373 | * |
370 | * Description: | 374 | * Description: |
371 | * Removes/resets the default entry for the domain hash table and handles any | 375 | * Removes/resets the default entry for the domain hash table and handles any |
@@ -373,9 +377,9 @@ remove_return: | |||
373 | * success, non-zero on failure. | 377 | * success, non-zero on failure. |
374 | * | 378 | * |
375 | */ | 379 | */ |
376 | int netlbl_domhsh_remove_default(u32 audit_secid) | 380 | int netlbl_domhsh_remove_default(struct netlbl_audit *audit_info) |
377 | { | 381 | { |
378 | return netlbl_domhsh_remove(NULL, audit_secid); | 382 | return netlbl_domhsh_remove(NULL, audit_info); |
379 | } | 383 | } |
380 | 384 | ||
381 | /** | 385 | /** |