Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/netbsd-8]: src/sys/modules/lua Pull up following revision(s) (requested ...
details: https://anonhg.NetBSD.org/src/rev/27d62655f9ae
branches: netbsd-8
changeset: 434530:27d62655f9ae
user: snj <snj%NetBSD.org@localhost>
date: Sun Jan 07 09:27:32 2018 +0000
description:
Pull up following revision(s) (requested by sevan in ticket #469):
sys/modules/lua/lua.c: revision 1.24
Fix cargo cult ioctl implementation for LUAINFO: the name and desc fields
are arrays, not pointers, so don't use copyoutstr on them, but instead
copyin/copyout the whole array of structures.
Fixes PR 52864 for me (on sparc64).
diffstat:
sys/modules/lua/lua.c | 24 ++++++++++++++++++------
1 files changed, 18 insertions(+), 6 deletions(-)
diffs (48 lines):
diff -r 73fe20fbd31d -r 27d62655f9ae sys/modules/lua/lua.c
--- a/sys/modules/lua/lua.c Sun Jan 07 09:24:59 2018 +0000
+++ b/sys/modules/lua/lua.c Sun Jan 07 09:27:32 2018 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: lua.c,v 1.23 2017/05/20 09:46:17 mbalmer Exp $ */
+/* $NetBSD: lua.c,v 1.23.2.1 2018/01/07 09:27:32 snj Exp $ */
/*
* Copyright (c) 2011 - 2017 by Marc Balmer <mbalmer%NetBSD.org@localhost>.
@@ -288,6 +288,7 @@
struct pathbuf *pb;
struct vattr va;
struct lua_loadstate ls;
+ struct lua_state_info *states;
int error, n;
klua_State *K;
@@ -307,14 +308,25 @@
LIST_FOREACH(s, &lua_states, lua_next) {
if (n > info->num_states)
break;
- copyoutstr(s->lua_name, info->states[n].name,
- MAX_LUA_NAME, NULL);
- copyoutstr(s->lua_desc, info->states[n].desc,
- MAX_LUA_DESC, NULL);
- info->states[n].user = s->K->ks_user;
n++;
}
info->num_states = n;
+ states = kmem_alloc(sizeof(*states) * n, KM_SLEEP);
+ if (copyin(info->states, states, sizeof(*states) * n)
+ == 0) {
+ n = 0;
+ LIST_FOREACH(s, &lua_states, lua_next) {
+ if (n > info->num_states)
+ break;
+ strcpy(states[n].name, s->lua_name);
+ strcpy(states[n].desc, s->lua_desc);
+ states[n].user = s->K->ks_user;
+ n++;
+ }
+ copyout(states, info->states,
+ sizeof(*states) * n);
+ kmem_free(states, sizeof(*states) * n);
+ }
}
break;
case LUACREATE:
Home |
Main Index |
Thread Index |
Old Index