From owner-p4-projects@FreeBSD.ORG Sat Jun 24 07:39:21 2006 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 5C88A16A494; Sat, 24 Jun 2006 07:39:21 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 2F88D16A4B3 for ; Sat, 24 Jun 2006 07:39:21 +0000 (UTC) (envelope-from als@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 4D95143D49 for ; Sat, 24 Jun 2006 07:39:20 +0000 (GMT) (envelope-from als@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.6/8.13.6) with ESMTP id k5O7dKPV014901 for ; Sat, 24 Jun 2006 07:39:20 GMT (envelope-from als@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.6/8.13.4/Submit) id k5O7dJqc014898 for perforce@freebsd.org; Sat, 24 Jun 2006 07:39:19 GMT (envelope-from als@FreeBSD.org) Date: Sat, 24 Jun 2006 07:39:19 GMT Message-Id: <200606240739.k5O7dJqc014898@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to als@FreeBSD.org using -f From: Alex Lyashkov To: Perforce Change Reviews Cc: Subject: PERFORCE change 99916 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 24 Jun 2006 07:39:21 -0000 http://perforce.freebsd.org/chv.cgi?CH=99916 Change 99916 by als@als_head on 2006/06/24 07:38:50 Update copyright. Affected files ... .. //depot/projects/jail2/sys/kern/kern_jail2_resource.c#2 edit Differences ... ==== //depot/projects/jail2/sys/kern/kern_jail2_resource.c#2 (text+ko) ==== @@ -1,160 +1,5 @@ /* - * Copyright (c) 2004 Alex Lyashkov - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#include -__FBSDID("$FreeBSD$"); - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -#include - -#define jprint(a...) -/* printf(a) */ - -static int -jail_setproclimit(struct prison *_pr, void *_data) -{ - int error; - int limit; - - error = copyin(_data, &limit, sizeof(limit)); - if (error) - return (error); - - sx_xlock(&allproc_lock); - _pr->pr_tasks.jt_limit = limit; - sx_xunlock(&allproc_lock); - - if (limit != 0) - JAIL_SET_PROCLIM(_pr); - else - JAIL_CLEAR_PROCLIM(_pr); - - return (0); -} - -static int -jail_setresource_int(uint32_t *res, void *_data) -{ - int error; - int limit; - - error = copyin(_data, &limit, sizeof(limit)); - if (error) - return (error); - - atomic_store_rel_int(res, limit); - - return (0); -} - - -int jail2_resource(struct thread *_td, struct jail_2 *_j) -{ - struct prison *pr; - int ret = 0; - - mtx_lock(&allprison_mtx); - pr = prison_find(_j->ctx_id); - mtx_unlock(&allprison_mtx); - - jprint("jail2_resouce %d ctx: %d pr: %p\n", JAIL2_CMD(_j->cmd), _j->ctx_id, pr ); - if (pr == NULL) { - printf("Prison not found for command %x\n", _j->cmd); - return (ESRCH); - } - - switch(JAIL2_CMD(_j->cmd)) { - case J_SETVROOT: - if (JAIL_VROOT(pr) != NULL) { - if (JAIL_NPROCS(pr) != 0) { - ret = EPERM; - break; - } - jail_destroyvroot(pr); - } - ret = jail_setvroot(pr, _td, _j->data); - break; - case J_SETPROCLIMIT: - ret = jail_setproclimit(pr, _j->data); - break; - case J_SETUSEDSPACE: - ret = jail_setresource_int(&pr->pr_disk.pr_du, _j->data); - break; - case J_SETDISKQUOTE: - ret = jail_setresource_int(&pr->pr_disk.pr_l_du, _j->data); - break; - case J_INODEUSAGE: - ret = jail_setresource_int(&pr->pr_disk.pr_inodes, _j->data); - break; - case J_INODELIMIT: - ret = jail_setresource_int(&pr->pr_disk.pr_l_inodes, _j->data); - break; - case J_MSQLIMIT: - ret = jail_setresource_int(&pr->pr_ipc.msq_limit, _j->data); - break; - case J_SEMLIMIT: - ret = jail_setresource_int(&pr->pr_ipc.sem_limit, _j->data); - break; - case J_SHMLIMIT: - ret = jail_setresource_int(&pr->pr_ipc.shm_limit, _j->data); - break; - case J_SETFILELIMIT: - ret = jail_setresource_int(&pr->pr_limits.fdlimit, _j->data); - break; - case J_SETMEMLIMIT: - case J_SETRSSLIMIT: - case J_SETTCPSOCKETSLIMIT: - case J_SETUDPSOCKETSLIMIT: - case J_CPUHARDLIMIT: - case J_CPUSOFTLIMIT: - default: - ret = EOPNOTSUPP; - break; - } - - /* remove refs from find/create */ - prison_free (pr); - jprint("jail2_resouce return %d\n", ret); - return (ret); - -} -/* - * Copyright (c) 2004 Alex Lyashkov + * Copyright (c) 2004-2006 Alex Lyashkov * All rights reserved. * * Redistribution and use in source and binary forms, with or without