On 10/23/2018 01:30 PM, Joel Fernandes wrote: > On Tue, Oct 23, 2018 at 11:13:36AM -0600, Shuah Khan wrote: >> On 10/23/2018 11:05 AM, Michal Hocko wrote: >>> On Tue 23-10-18 08:26:40, Matthew Wilcox wrote: >>>> On Tue, Oct 23, 2018 at 09:02:56AM -0600, Shuah Khan wrote: >>> [...] >>>>> The way it can be handled is by adding a test module under lib. test_kmod, >>>>> test_sysctl, test_user_copy etc. >>>> >>>> The problem is that said module can only invoke functions which are >>>> exported using EXPORT_SYMBOL. And there's a cost to exporting them, >>>> which I don't think we're willing to pay, purely to get test coverage. >>> >>> Yes, I think we do not want to export internal functionality which might >>> be still interesting for the testing coverage. Maybe we want something >>> like EXPORT_SYMBOL_KSELFTEST which would allow to link within the >>> kselftest machinery but it wouldn't allow the same for general modules >>> and will not give any API promisses. >>> >> >> I like this proposal. I think we will open up lot of test opportunities with >> this approach. >> >> Maybe we can use this stress test as a pilot and see where it takes us. > > I am a bit worried that such an EXPORT_SYMBOL_KSELFTEST mechanism can be abused by > out-of-tree module writers to call internal functionality. That is valid concern to consider before we go forward with the proposal. We could wrap EXPORT_SYMBOL_KSELFTEST this in an existing debug option. This could be fine grained for each sub-system for its debug option. We do have a few of these now # CONFIG_STATIC_KEYS_SELFTEST is not set # CONFIG_BT_SELFTEST is not set # CONFIG_DRM_DEBUG_SELFTEST is not set # CONFIG_CHASH_SELFTEST is not set # CONFIG_DRM_I915_SELFTEST is not set # CONFIG_CRC32_SELFTEST is not set # CONFIG_RANDOM32_SELFTEST is not set # CONFIG_GLOB_SELFTEST is not set # CONFIG_STRING_SELFTEST is not set # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set # CONFIG_WW_MUTEX_SELFTEST is not set # CONFIG_ATOMIC64_SELFTEST is not set # CONFIG_X86_DECODER_SELFTEST is not set # CONFIG_DEBUG_NMI_SELFTEST is not set thanks, -- Shuah