On Thu, 25 May 2006, Paul Moore wrote: > This patch introduces a new kernel feature designed to support labeled > networking protocols such as RIPSO and CIPSO. These protocols are required to > interoperate with existing "trusted" operating systems such as Trusted > Solaris.
A few initial comments. - Did you decide that you definitely need to verify labels on fragments? I can see the code's been added to do that, but wonder about a comment made during earlier discussion that mislabeled fragments could only come from a misbehaving trusted system. What is the threat model here? - Can you explain how module loading and module refcounting for these modules work? (e.g. what causes netlabel_cipso_v4 to be loaded, is it always safe to unload if the refcount is zero?) - What about user APIs for setting and retrieving labels? - What about labeling of kernel-generated packets? - Don't put #ifdef'd code into mainline code. e.g. in net/ipv4/ip_fragment.c +#ifdef CONFIG_NETLABEL_CIPSOV4 + if (sopt->cipso) { This needs to be a function which is compiled away as a static inline when not selected. This stuff should have zero impact on the networking code if not enabled. - Try and add entries for security/selinux/nlmsgtab.c for the new Netlink protocol. - This does not follow normal kernel coding practices: + if (netlbl_netlink_init() != 0) { + netlbl_domhsh_exit(); + return -ENOMEM; This should be: { err = netlbl_netlink_init(); if (err) goto err_domhsh; ... err_domhsh: netlbl_domhsh_exit(); return err; } i.e. a single error path when you have cleanups to perform, and propagation of error codes. - This kind of stuff should be removed before merging: +static void __exit netlbl_exit(void) +{ + printk(KERN_INFO "NetLabel: Exiting\n"); +int netlbl_netlink_init(void) +{ + BUG_ON(netlbl_nl); +int netlbl_netlink_exit(void) +{ + BUG_ON(!netlbl_nl); Should the above two be marked __init and __exit? And why does the last one return an int when the only possible return value is zero? (it needs to return void). - Why does this module have a version number? + printk(KERN_INFO "NetLabel: Initializing (v%s %s)\n", + NETLBL_VER_STR, NETLBL_VER_DATE); -- James Morris <[EMAIL PROTECTED]> - To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html