lkml.org 
[lkml]   [2019]   [May]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
From
Subject[PATCH] docs: Move kref.txt to core-api/kref.rst
Date
kref.txt is already written using correct ReStructuredText format.  This
can be verified as follows

make cleandocs
make htmldocs 2> pre.stderr
mv Documentation/kref.txt Documentation/core-api/kref.rst
// Add 'kref' to core-api/index.rst
make cleandocs
make htmldocs 2> post.stderr
diff pre.stderr post.stderr

While doing the file move, fix the column width to be 72 characters wide
as it is throughout the document. This is whitespace only. kref.txt is
so cleanly written its a shame to have these few extra wide paragraphs.

Signed-off-by: Tobin C. Harding <tobin@kernel.org>
---

I'm always hesitant to do docs patches that seem obvious - is there
some reason that this was not done previously?

I did this one in preparation for converting kobject.txt, my intent is
to put kboject.rst in core-api/ also?

I can split the whitespace change and the file rename into separate
patches if you'd prefer.

thanks,
Tobin.

Documentation/core-api/index.rst | 1 +
Documentation/{kref.txt => core-api/kref.rst} | 24 +++++++++----------
Documentation/kobject.txt | 4 ++++
3 files changed, 17 insertions(+), 12 deletions(-)
rename Documentation/{kref.txt => core-api/kref.rst} (93%)

diff --git a/Documentation/core-api/index.rst b/Documentation/core-api/index.rst
index ee1bb8983a88..1c95f0cdd239 100644
--- a/Documentation/core-api/index.rst
+++ b/Documentation/core-api/index.rst
@@ -34,6 +34,7 @@ Core utilities
timekeeping
boot-time-mm
memory-hotplug
+ kref


Interfaces for kernel debugging
diff --git a/Documentation/kref.txt b/Documentation/core-api/kref.rst
similarity index 93%
rename from Documentation/kref.txt
rename to Documentation/core-api/kref.rst
index 3af384156d7e..a2174dd09eb2 100644
--- a/Documentation/kref.txt
+++ b/Documentation/core-api/kref.rst
@@ -230,8 +230,8 @@ of the free operations that could take a long time or might claim the
same lock. Note that doing everything in the release routine is still
preferred as it is a little neater.

-The above example could also be optimized using kref_get_unless_zero() in
-the following way::
+The above example could also be optimized using kref_get_unless_zero()
+in the following way::

static struct my_data *get_entry()
{
@@ -261,11 +261,11 @@ the following way::
kref_put(&entry->refcount, release_entry);
}

-Which is useful to remove the mutex lock around kref_put() in put_entry(), but
-it's important that kref_get_unless_zero is enclosed in the same critical
-section that finds the entry in the lookup table,
-otherwise kref_get_unless_zero may reference already freed memory.
-Note that it is illegal to use kref_get_unless_zero without checking its
+Which is useful to remove the mutex lock around kref_put() in
+put_entry(), but it's important that kref_get_unless_zero is enclosed in
+the same critical section that finds the entry in the lookup table,
+otherwise kref_get_unless_zero may reference already freed memory. Note
+that it is illegal to use kref_get_unless_zero without checking its
return value. If you are sure (by already having a valid pointer) that
kref_get_unless_zero() will return true, then use kref_get() instead.

@@ -312,8 +312,8 @@ locking for lookups in the above example::
kref_put(&entry->refcount, release_entry_rcu);
}

-But note that the struct kref member needs to remain in valid memory for a
-rcu grace period after release_entry_rcu was called. That can be accomplished
-by using kfree_rcu(entry, rhead) as done above, or by calling synchronize_rcu()
-before using kfree, but note that synchronize_rcu() may sleep for a
-substantial amount of time.
+But note that the struct kref member needs to remain in valid memory for
+a rcu grace period after release_entry_rcu was called. That can be
+accomplished by using kfree_rcu(entry, rhead) as done above, or by
+calling synchronize_rcu() before using kfree, but note that
+synchronize_rcu() may sleep for a substantial amount of time.
diff --git a/Documentation/kobject.txt b/Documentation/kobject.txt
index ff4c25098119..140030b4603b 100644
--- a/Documentation/kobject.txt
+++ b/Documentation/kobject.txt
@@ -159,6 +159,10 @@ kernel at the same time, called surprisingly enough kobject_init_and_add()::
int kobject_init_and_add(struct kobject *kobj, struct kobj_type *ktype,
struct kobject *parent, const char *fmt, ...);

+An error return from kobject_init_and_add() must be followed by a call to
+kobject_put() since the 'init' part of this function is always called and the
+error return is due to the 'add' part.
+
The arguments are the same as the individual kobject_init() and
kobject_add() functions described above.

--
2.21.0
\
 
 \ /
  Last update: 2019-05-10 02:18    [W:0.064 / U:19.036 seconds]
©2003-2018 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site