This repository has been archived on 2026-03-14. You can view files and clone it, but cannot push or open issues or pull requests.
Files
ubports_kernel_google_msm/include/linux
Thomas Hellstrom c9cb68da74 kref: Implement kref_get_unless_zero v3
This function is intended to simplify locking around refcounting for
objects that can be looked up from a lookup structure, and which are
removed from that lookup structure in the object destructor.
Operations on such objects require at least a read lock around
lookup + kref_get, and a write lock around kref_put + remove from lookup
structure. Furthermore, RCU implementations become extremely tricky.
With a lookup followed by a kref_get_unless_zero *with return value check*
locking in the kref_put path can be deferred to the actual removal from
the lookup structure and RCU lookups become trivial.

v2: Formatting fixes.
v3: Invert the return value.

Change-Id: Ibcb524294c2cebe1d832e77714895822adc1c89a
Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
Git-commit: 4b20db3de8dab005b07c74161cb041db8c5ff3a7
Git-repo: git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
[shrenujb@codeaurora.org: resolve trivial merge conflicts]
Signed-off-by: Shrenuj Bansal <shrenujb@codeaurora.org>
2013-09-06 16:15:39 -07:00
..
2013-03-15 17:05:25 -07:00
2012-04-23 14:23:32 +03:00
2012-04-27 11:03:38 -06:00
2011-11-02 16:07:03 -07:00
2012-04-09 13:57:51 -07:00
2013-02-27 18:13:43 -08:00
2012-03-20 21:29:46 -04:00
2012-03-16 20:35:02 +00:00
2012-03-16 20:35:02 +00:00
2013-02-25 11:29:27 -08:00
2012-02-28 16:02:54 +01:00
2012-01-03 22:54:57 -05:00
2012-04-09 13:57:52 -07:00
2012-03-29 15:38:31 +10:30
2012-03-23 16:58:38 -07:00
2013-02-25 11:29:22 -08:00
2011-12-13 09:26:45 +00:00
2012-03-20 21:29:37 -04:00
2012-03-20 21:29:53 -04:00
2013-02-20 02:50:23 -08:00
2012-02-20 19:46:36 +11:00
2012-01-04 08:56:31 -06:00
2011-10-31 20:19:04 +00:00
2012-05-22 14:01:06 -07:00
2013-02-20 01:31:50 -08:00
2011-11-26 14:59:39 -05:00
2012-04-30 15:30:18 -07:00
2011-12-11 18:25:16 -05:00
2012-01-12 20:13:04 -08:00
2013-03-04 12:44:09 -08:00
2012-04-12 12:57:08 +02:00
2013-03-15 17:08:42 -07:00
2012-02-28 17:10:21 +00:00
2012-04-09 13:53:16 -07:00
2012-04-27 10:46:45 +08:00
2012-04-09 13:57:58 -07:00
2013-03-15 17:08:42 -07:00
2012-03-26 21:47:19 +02:00
2012-03-26 21:47:19 +02:00
2012-03-26 21:47:19 +02:00
2012-03-26 21:47:19 +02:00
2012-03-26 21:47:19 +02:00
2012-03-26 21:47:19 +02:00
2013-09-04 12:43:32 -07:00
2012-03-27 22:45:26 -04:00
2013-02-08 15:04:34 -08:00
2012-01-03 22:55:17 -05:00
2013-02-27 18:13:08 -08:00
2012-01-09 13:52:09 +01:00
2012-03-08 10:50:35 -08:00
2012-03-21 17:54:57 -07:00
2012-03-08 10:50:35 -08:00
2013-09-06 16:15:39 -07:00
2011-12-27 11:26:41 +02:00
2012-03-15 21:41:34 +01:00
2012-03-03 15:04:45 -05:00
2013-03-15 17:08:42 -07:00
2013-02-25 11:29:50 -08:00
2013-03-15 17:24:49 -07:00
2013-06-26 16:28:49 -07:00
2011-11-14 00:47:54 -05:00
2012-03-05 15:26:47 -05:00
2012-03-21 17:54:58 -07:00
2012-03-21 17:55:01 -07:00
2012-01-06 12:10:26 -08:00
2012-03-16 21:49:24 +01:00
2011-12-13 09:26:45 +00:00
2011-11-02 16:07:02 -07:00
2013-02-25 11:29:28 -08:00
2012-03-20 21:29:38 -04:00
2013-02-27 18:16:43 -08:00
2012-01-03 22:55:07 -05:00
2012-03-28 18:30:03 +01:00
2012-03-08 11:38:50 -08:00
2012-03-12 22:19:13 +01:00
2012-01-09 09:33:57 +09:00
2012-05-01 09:40:19 -04:00
2012-03-06 11:01:33 +02:00
2012-03-19 16:53:08 -04:00
2011-12-13 09:26:45 +00:00
2011-10-31 17:30:47 -07:00
2012-05-16 13:27:23 -07:00
2013-02-25 11:29:18 -08:00
2012-01-03 22:54:56 -05:00
2012-03-22 19:43:43 -07:00
2012-04-10 22:39:17 -06:00
2013-03-04 12:45:08 -08:00
2013-03-15 17:07:24 -07:00
2011-11-02 16:07:02 -07:00
2012-04-11 09:36:00 +01:00
2012-03-08 10:50:35 -08:00
2013-02-20 02:50:29 -08:00
2013-02-25 11:29:50 -08:00