cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

context.c (862B)


      1// SPDX-License-Identifier: GPL-2.0
      2/*
      3 * Implementations of the security context functions.
      4 *
      5 * Author: Ondrej Mosnacek <omosnacek@gmail.com>
      6 * Copyright (C) 2020 Red Hat, Inc.
      7 */
      8
      9#include <linux/jhash.h>
     10
     11#include "context.h"
     12#include "mls.h"
     13
     14u32 context_compute_hash(const struct context *c)
     15{
     16	u32 hash = 0;
     17
     18	/*
     19	 * If a context is invalid, it will always be represented by a
     20	 * context struct with only the len & str set (and vice versa)
     21	 * under a given policy. Since context structs from different
     22	 * policies should never meet, it is safe to hash valid and
     23	 * invalid contexts differently. The context_cmp() function
     24	 * already operates under the same assumption.
     25	 */
     26	if (c->len)
     27		return full_name_hash(NULL, c->str, c->len);
     28
     29	hash = jhash_3words(c->user, c->role, c->type, hash);
     30	hash = mls_range_hash(&c->range, hash);
     31	return hash;
     32}