Deleted Added
full compact
link_elf_obj.c (231949) link_elf_obj.c (241896)
1/*-
2 * Copyright (c) 1998-2000 Doug Rabson
3 * Copyright (c) 2004 Peter Wemm
4 * All rights reserved.
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions
8 * are met:

--- 12 unchanged lines hidden (view full) ---

21 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
22 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
23 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
24 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
25 * SUCH DAMAGE.
26 */
27
28#include <sys/cdefs.h>
1/*-
2 * Copyright (c) 1998-2000 Doug Rabson
3 * Copyright (c) 2004 Peter Wemm
4 * All rights reserved.
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions
8 * are met:

--- 12 unchanged lines hidden (view full) ---

21 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
22 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
23 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
24 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
25 * SUCH DAMAGE.
26 */
27
28#include <sys/cdefs.h>
29__FBSDID("$FreeBSD: head/sys/kern/link_elf_obj.c 231949 2012-02-21 01:05:12Z kib $");
29__FBSDID("$FreeBSD: head/sys/kern/link_elf_obj.c 241896 2012-10-22 17:50:54Z kib $");
30
31#include "opt_ddb.h"
32
33#include <sys/param.h>
34#include <sys/systm.h>
35#include <sys/kernel.h>
36#include <sys/lock.h>
37#include <sys/malloc.h>

--- 407 unchanged lines hidden (view full) ---

445 elf_file_t ef;
446 linker_file_t lf;
447 int symtabindex;
448 int symstrindex;
449 int shstrindex;
450 int nsym;
451 int pb, rl, ra;
452 int alignmask;
30
31#include "opt_ddb.h"
32
33#include <sys/param.h>
34#include <sys/systm.h>
35#include <sys/kernel.h>
36#include <sys/lock.h>
37#include <sys/malloc.h>

--- 407 unchanged lines hidden (view full) ---

445 elf_file_t ef;
446 linker_file_t lf;
447 int symtabindex;
448 int symstrindex;
449 int shstrindex;
450 int nsym;
451 int pb, rl, ra;
452 int alignmask;
453 int vfslocked;
454
455 shdr = NULL;
456 lf = NULL;
457 mapsize = 0;
458 hdr = NULL;
459
453
454 shdr = NULL;
455 lf = NULL;
456 mapsize = 0;
457 hdr = NULL;
458
460 NDINIT(&nd, LOOKUP, FOLLOW | MPSAFE, UIO_SYSSPACE, filename, td);
459 NDINIT(&nd, LOOKUP, FOLLOW, UIO_SYSSPACE, filename, td);
461 flags = FREAD;
462 error = vn_open(&nd, &flags, 0, NULL);
463 if (error)
464 return error;
460 flags = FREAD;
461 error = vn_open(&nd, &flags, 0, NULL);
462 if (error)
463 return error;
465 vfslocked = NDHASGIANT(&nd);
466 NDFREE(&nd, NDF_ONLY_PNBUF);
467 if (nd.ni_vp->v_type != VREG) {
468 error = ENOEXEC;
469 goto out;
470 }
471#ifdef MAC
472 error = mac_kld_check_load(td->td_ucred, nd.ni_vp);
473 if (error) {

--- 387 unchanged lines hidden (view full) ---

861 if (error)
862 goto out;
863
864 *result = lf;
865
866out:
867 VOP_UNLOCK(nd.ni_vp, 0);
868 vn_close(nd.ni_vp, FREAD, td->td_ucred, td);
464 NDFREE(&nd, NDF_ONLY_PNBUF);
465 if (nd.ni_vp->v_type != VREG) {
466 error = ENOEXEC;
467 goto out;
468 }
469#ifdef MAC
470 error = mac_kld_check_load(td->td_ucred, nd.ni_vp);
471 if (error) {

--- 387 unchanged lines hidden (view full) ---

859 if (error)
860 goto out;
861
862 *result = lf;
863
864out:
865 VOP_UNLOCK(nd.ni_vp, 0);
866 vn_close(nd.ni_vp, FREAD, td->td_ucred, td);
869 VFS_UNLOCK_GIANT(vfslocked);
870 if (error && lf)
871 linker_file_unload(lf, LINKER_UNLOAD_FORCE);
872 if (hdr)
873 free(hdr, M_LINKER);
874
875 return error;
876}
877

--- 501 unchanged lines hidden ---
867 if (error && lf)
868 linker_file_unload(lf, LINKER_UNLOAD_FORCE);
869 if (hdr)
870 free(hdr, M_LINKER);
871
872 return error;
873}
874

--- 501 unchanged lines hidden ---