+int sidtab_clone(struct sidtab *s, struct sidtab *d)If s or d are NULL (see if() below), why would we want rc, the return value, to be 0? How about defaulting rc to an error value (-EINVAL)?
+{
+ int i, rc = 0;
+ struct sidtab_node *cur;Thanks,
+
+ if (!s || !d)
+ goto errout;
+
+ read_lock(&s->lock);
+ for (i = 0; i < SIDTAB_SIZE; i++) {
+ cur = s->htable[i];
+ while (cur) {
+ if (cur->sid > SECINITSID_NUM)
+ rc = sidtab_insert(d, cur->sid, &cur->context);
+ if (rc)
+ goto out;
+ cur = cur->next;
+ }
+ }
+out:
+ read_unlock(&s->lock);
+errout:
+ return rc;
+}