On 2013-07-18, at 1:07 PM, Al Viro wrote: > On Thu, Jul 18, 2013 at 11:40:16AM -0700, Nathan Rutman wrote: >>>> } >>>> RETURN(rc); >>>> } >>>> What is going on here? We cast something to struct super_block *? >>>> Where does it come from? The function it's in is >> Well, addressing the "what's going on" question without getting >> into the larger philosophy, keys and values are used as a generic mechanism to pass various items between Lustre clients and servers. >> In this case, a specific key should only have a value of "a >> superblock", and so this is just a sanity check to make sure the >> value length is sane. It should probably be more of an ASSERT, >> but we can't reasonably assert on remotely-supplied data. > > What? Excuse me, but have you seriously been intending to pass > struct super_block instances around? Ones that are choke-full of > pointers to all kinds of things, not to mention a mutex, spinlock, > etc.? The set_info() code is also used between modules on the same node. I don't make any excuses for the cleanliness of this code, which is why it is in staging and will take time to clean up before even attempting to get it into fs/. I apologize that you even had to look at this code - definitely a twisty maze that needs cleaning. > _THAT_ was going to be a remotely supplied data? I really hope I've > misparsed what you said above... > > And that still leaves the question about the code path that could > lead to execution of mgc_fs_setup(). The KEY_SET_FS is only used in the server code, not on the client. The MGC code is shared between client and server to mount the filesystem and fetch the cluster configuration from the management server. In the case of a server mount, it also has to mount the underlying block device, which isn't true on the client, so this code is indeed unused. Cheers, Andreas -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html