Commit Graph

97 Commits

Author SHA1 Message Date
haad 185aec71fe Add prop_array_add_int* and prop_array_add_uint* functions. These functions
can be used to append specified type to the end of prop_array_t.

Ok'ed by @joerg.
2008-09-11 13:15:13 +00:00
christos ecd6bc7086 typo in comment and white-space fixes mostly from Stathis Kamperis 2008-08-11 05:54:21 +00:00
thorpej 4ce0dc3a15 Fix an issue introduced with the prop_stack change: It's not a good idea to
return a 3-value enum from a function declared to return bool.  This broke
the recurse case for prop_object_equals().  Instead, declare the object type
equals routine to return a _prop_object_equals_rv_t.

Give the same treatment to the object type free routines: declare them to
return a _prop_object_free_rv_t, and consistently check those return values
againt the enum type.

Tidy up some whitespace while we're here.
2008-08-03 04:00:12 +00:00
thorpej 1d49730690 Fix a typo. 2008-08-03 03:11:28 +00:00
matt 5a4f0c6b2b Change tree op members/typedefs to rbto_compare_* from rb_compare_* 2008-06-30 20:14:09 +00:00
thorpej e0e4b153c9 _prop_rb_tree_insert_node() now returns true/false to indicate if the
insertion succeeded.  Update existing usage that arranges for insertions
to always succeed to assert that they do.
2008-06-17 21:29:47 +00:00
wiz 46c5658a32 Sort SEE ALSO. 2008-06-04 07:46:48 +00:00
haad 9b09c481c8 Add prop_array_util functions to proplib. This code is copied/changed
prop_dictionary_util.

From manual page

The prop_array_util family of functions are provided to make getting and
setting values in arrays more convenient in some applications.

OK by mjf@ and freza@.
2008-06-03 20:18:24 +00:00
haad b95cd5a6fe Fix typo.
OK by martin@.
2008-06-02 09:27:04 +00:00
yamt 75b1a2ec18 fix recursive read-lock bugs found by lockdebug and reported
by Geoff C. Wing and others.  ok'ed by Jason Thorpe.
an earlier version was tested by Sverre Froyen.
PR/38732 from oster@.
2008-05-24 14:32:48 +00:00
yamt 6787eedebd revert the recent "use trylock to hide locking errors" changes
and their associated changes, in particular, the following versions.
	prop_array.c		1.13-1.16
	prop_dictionary.c	1.25-1.28
	prop_object_impl.h	1.21-1.25
ok'ed by core@.
2008-05-24 14:24:04 +00:00
dyoung 848e7ffe8c In prop_data_create_data(blob, len), if len == 0, allocate no memory
for blob, and leave pd_mutable set to NULL.  In this way, avoid
tripping over the assertion in prop_data_data_nocopy().
2008-05-15 21:23:33 +00:00
tron e70ab693a2 Change the argument of _PROP_RWLOCK_TRYRDLOCK() to the lock member and not
its address to be consistent with all the other macros.
2008-05-07 10:16:41 +00:00
tron 2916b940f8 Replace _prop_rwlock_tryrdlock() by a macro _PROP_RWLOCK_TRYRDLOCK().
This avoids build failures in stand alone binaries (e.g. bootloaders)
where there is no "pa_rwlock" member in the "_prop_array" structure.
2008-05-07 10:01:50 +00:00
simonb 4ec02db9e9 Fix a "#define<tab><tab>" that crept in to previous. 2008-05-07 05:40:01 +00:00
xtraeme 35fe7cdcf1 prop_object_iterator_next() and prop_object_iterator_reset() were
acquiring the rwlock recursively in some paths.

Introduce _prop_rwlock_tryrdlock() and use it in these functions, so
that the rwlock is *always* acquired once, while here add some
_PROP_RWLOCK_OWNED asserts to verify.

This definitely fixes the "locking against myself" panics.
2008-05-06 22:57:26 +00:00
xtraeme d69a8a8939 Xref prop_dictionary_util(3). 2008-05-06 17:23:38 +00:00
xtraeme 771a05b730 Do not acquire the rwlock recursively in prop_{array,dictionary}_iterator_reset()
when prop_{array,dictionary}_copyout_ioctl() is called.

Introduce _PROP_RWLOCK_OWNED() which is a KASSERT(rw_lock_held(lock))
and use it in those two functions, also acquire the rwlock in other
places where it is required now.

This fixes a LOCKDEBUG panic "locking against myself", as reported by
Geoff C. Wing in current-users@.
2008-05-06 13:52:51 +00:00
martin 11a6dbe728 Convert TNF licenses to new 2 clause variant 2008-04-30 13:10:46 +00:00
martin ce099b4099 Remove clause 3 and 4 from TNF licenses 2008-04-28 20:22:51 +00:00
cube 5b25d80ca0 Actually implement prop_dictionary_make_immutable. OK'd by thorpej@. 2008-03-05 07:47:09 +00:00
lukem 8346a6360d Use mkstemp() + fchmod() instead of mktemp(), since the latter
results in linker warnings.
2008-02-23 01:26:01 +00:00
apb 267197ec1e For all files under src/common, as well as related man pages under
src/lib/libc, or related headers under src/sys/sys: change u_intNN_t to
uintNN_t.
2008-02-16 17:37:13 +00:00
christos 428727f47f PR/37838: Stathis Kamperis: proplib documentation enhancements 2008-01-21 22:15:03 +00:00
ad 9324487752 Include sys/simplelock.h in prop_object_impl.h. 2008-01-05 01:15:02 +00:00
mjf 83535b7f11 Nuke prop_dictionary_capacity, there was no implementation for it.
No objections on tech-kern.
2008-01-05 00:23:46 +00:00
xtraeme 0f546319ca sys/simplelock.h is required now. 2008-01-04 21:33:17 +00:00
mjf c05cd035e3 Fix typo 2007-11-06 11:41:35 +00:00
xtraeme d7ef1da684 Fix a typo that has been there forever. prop_dictionary_set:
the object will be retained by the dictionary not array.
2007-10-11 03:10:28 +00:00
xtraeme ed504658f5 tyop: guaranty -> guarantee. 2007-08-30 19:12:32 +00:00
joerg 4deb593145 Avoid using unbound amount of stack frames in prop_object_equal
by using a dynamic stack as well. Reorder arguments for the internalizer
as the iteration is always present and should go before possibly
NULL arguments.

Reviewed by mjf@ and adrianp@
2007-08-30 12:23:53 +00:00
joerg e835604c26 libprop is currently using a recursive parser. While this is fine for
userland, deeply nested arrays and dictionaries can easily overflow
the kernel stack and thereby force a panic.

Fix the internalizer and prop_object_release to use a separate call
stack and alter the dictionary and array handling to not recurse on
the C stack. The default stack has an inline depth of 16 elements,
which should keep the overhead reasonable.

This issue was found by Pavel Cahyna and Jachym Holecek.

Additionally add a limit for prop_object_copyin_ioctl to prevent user
programs from temporary allocating unbound amount of kernel memory.
Allow malloc to fail so that tight loops of userland processes can't
force panics by exhausting the kernel map.

Tested with the sample exploit of Jachym, his test suite and reviewed
by himself (initial patch), Christos Zoulas and Jason Thorpe.
2007-08-16 21:44:06 +00:00
thorpej 04377267cc boolean_t -> bool
TRUE -> true
FALSE -> false
2007-08-16 16:28:17 +00:00
ad 79ba10e06a lockmgr > rwlock 2007-07-29 11:25:01 +00:00
joerg 22549e91c8 Consider '\r' to be white space. Discussed with and also kept as local
change by freza. With this change, DOS style line endings work.
2007-07-17 20:36:38 +00:00
joerg 39dccbf2f1 prop_array_internalize and prop_dictionary_internalize are basically the
same code. Refactor it into _prop_generic_internalize, which gets passed
the second-level tag.
2007-07-16 19:20:17 +00:00
degroote be58d0f67a Fix the prototyp of prop_dictionary_set_keysym in the DESCRIPTION part 2007-07-07 19:03:52 +00:00
xtraeme 5386acb4ac Xref prop_dictionary_util(3) and prop_send_ioctl(3). 2007-06-21 12:02:31 +00:00
xtraeme d4be10ac51 Typo: prop_dictionary_receive_ioctl -> prop_dictionary_recv_ioctl.
Bump date.
2007-05-10 22:15:47 +00:00
xtraeme 6af752323b It's "Copy a dictionary" not "Copy an dictionary". preempt wiz and
bump date.
2007-04-28 06:01:13 +00:00
yamt 1e244571b1 correct a section number. 2007-04-22 11:27:25 +00:00
yamt 8ad48713da correct function names. 2007-04-22 11:23:29 +00:00
ad 59d979c5f1 Pass an ipl argument to pool_init/POOL_INIT to be used when initializing
the pool's lock.
2007-03-12 18:18:22 +00:00
dillo 3827e4b3e7 Fix white space skipping before closing tag when padding characters
are present.

Okayed by thorpej.
2007-03-04 22:31:43 +00:00
freza d7d800dc0c Add prop_data_size() to SYNOPSIS. 2007-02-22 22:49:29 +00:00
mjf 118bbc15f5 Fix typo. 2007-02-02 19:35:59 +00:00
cube bb54157110 Add a comment to explain how the value for uaddr is chosen. Maybe uvm_mmap
should do that instead of sys_mmap...
2006-11-28 18:36:26 +00:00
cube 00fbe2b725 In _prop_object_copyout_ioctl, uaddr was not initialised, although it is
used by uvm_mmap() as a hint for the virtual address to map memory to.  As
a consequence, it tended to fail a lot on some architectures.

We cannot use 0, so instead use the value that would have been used if we
were calling mmap(2) with 0 as the first argument.

Fixes PR#34639 by xtraeme@.
2006-11-28 18:30:47 +00:00
thorpej 1aea07a325 Add prop_array_t support to prop_kern. 2006-10-26 18:51:21 +00:00
thorpej 26d4f90430 - Add prop_dictionary_all_keys(). Takes a snapshot of a dictionary's
keys and returns them in an array.  This effectively allows a caller
  to mutate a dictionary while iterating over it (really, you iterate
  over the array of keys instead of the dictionary itself).
- Add a slew of utility functions that make it more convenient (in some
  circumstances, anyway) to get/set values in a dictionary.
2006-10-26 05:02:12 +00:00