[RFC PATCH 0/5] kobject: Add and use init predicate

From: Tobin C. Harding
Date: Wed May 01 2019 - 22:40:41 EST


Hi,

This set patches kobject to add a predicate function for determining the
initialization state of a kobject. Stripped down, the predicate is:

bool kobject_is_initialized(struct kobject *kobj)
{
return kobj->state_initialized
}

This is RFC because there are merge conflicts with Greg's driver-core
tree. I'm guessing this is caused by the cleanup patches (#2 and #3).
If the set is deemed likeable then I can re-work the set targeting
whomever's tree this would go in through.

Applies on top of:

mainline tag: v5.1-rc6
livepatching branch: for-next

Series Description
------------------

Patch #1 is a memleak patch, previously posted and not overly
interesting. Comment by Greg on the thread on that patch was the
incentive for this series.

Patch #2 and #3 are kobject kernel-doc comment clean ups. Can be
dropped if not liked.

Patch #4 adds the predicate function to the kobject API.

Patch #5 uses the new predicate to remove the custom logic from livepatch
for tracking kobject initialization state.

Testing
-------

Kernel build configuration

$ egrep LIVEPATCH .config
CONFIG_HAVE_LIVEPATCH=y
CONFIG_LIVEPATCH=y
CONFIG_TEST_LIVEPATCH=m

$ egrep FTRACE .config
CONFIG_KPROBES_ON_FTRACE=y
CONFIG_HAVE_KPROBES_ON_FTRACE=y
CONFIG_HAVE_DYNAMIC_FTRACE=y
CONFIG_HAVE_DYNAMIC_FTRACE_WITH_REGS=y
CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
CONFIG_FTRACE=y
CONFIG_FTRACE_SYSCALLS=y
CONFIG_DYNAMIC_FTRACE=y
CONFIG_DYNAMIC_FTRACE_WITH_REGS=y
CONFIG_FTRACE_MCOUNT_RECORD=y
# CONFIG_FTRACE_STARTUP_TEST is not set

Builds fine but doesn't boot in Qemu. I've never run dynamic Ftrace, it
appears to crash during this. Was hoping to run the livepatch tests but
not sure how to at this moment. Is dynamic Ftrace and livepatch testing
something that can even be done in a VM or do I need to do this or
baremetal?

Thanks for taking the time to look at this.

Tobin


Tobin C. Harding (5):
livepatch: Fix kobject memleak
kobject: Remove docstring reference to kset
kobject: Fix kernel-doc comment first line
kobject: Add kobject initialized predicate
livepatch: Do not manually track kobject initialization

include/linux/kobject.h | 2 ++
include/linux/livepatch.h | 6 ----
kernel/livepatch/core.c | 28 +++++++++---------
lib/kobject.c | 60 +++++++++++++++++++++++----------------
4 files changed, 51 insertions(+), 45 deletions(-)

--
2.21.0