tmem: By default to join an shared pool it must be authorized.

Having an off by default option allowing guests to join
_any_ shared pool is not very secure.

Lets eliminate tmem_shared_auth bootup option (which
was disabled by default) and have the code force this by default.

Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
This commit is contained in:
Konrad Rzeszutek Wilk committed 2017-04-05 09:39:46 -04:00
1 parent 1144c8f12b
commit a9a3c04567
5 files changed
+3 -19

No files matched your search

+2 -4
View File
@@ -715,11 +715,9 @@ Ocfs2 has only very limited security; it is assumed that anyone who can
access the filesystem bits on the shared disk can mount the filesystem and use
it. But in a virtualized data center,
higher isolation requirements may apply.
As a result, a Xen boot option -- &quot;tmem_shared_auth&quot; -- was
added. The option defaults to disabled,
but when it is enabled, management tools must explicitly authenticate (or may
As a result, management tools must explicitly authenticate (or may
explicitly deny) shared pool access to any client.
On Xen, this is done with the &quot;xm
On Xen, this is done with the &quot;xl
tmem-shared-auth&quot; command.
<P>
<b><i>32-bit implementation</i>.</b>
-3
View File
@@ -1539,9 +1539,6 @@ pages) must also be specified via the tbuf\_size parameter.
### tmem\_compress
> `= <boolean>`
### tmem\_shared\_auth
> `= <boolean>`
### tsc
> `= unstable | skewed | stable:socket`
+1 -2
View File
@@ -846,7 +846,6 @@ struct client *client_create(domid_t cli_id)
client->info.version = TMEM_SPEC_VERSION;
client->info.maxpools = MAX_POOLS_PER_DOMAIN;
client->info.flags.u.compress = tmem_compression_enabled();
client->shared_auth_required = tmem_shared_auth();
for ( i = 0; i < MAX_GLOBAL_SHARED_POOLS; i++)
client->shared_auth_uuid[i][0] =
client->shared_auth_uuid[i][1] = -1L;
@@ -1530,7 +1529,7 @@ int do_tmem_new_pool(domid_t this_cli_id,
pool->shared = 0;
goto out;
}
if ( client->shared_auth_required && !tmem_global.shared_auth )
if ( !tmem_global.shared_auth )
{
for ( i = 0; i < MAX_GLOBAL_SHARED_POOLS; i++)
if ( (client->shared_auth_uuid[i][0] == uuid_lo) &&
-3
View File
@@ -20,9 +20,6 @@ boolean_param("tmem", opt_tmem);
bool_t __read_mostly opt_tmem_compress = 0;
boolean_param("tmem_compress", opt_tmem_compress);
bool_t __read_mostly opt_tmem_shared_auth = 0;
boolean_param("tmem_shared_auth", opt_tmem_shared_auth);
atomic_t freeable_page_count = ATOMIC_INIT(0);
/* these are a concurrency bottleneck, could be percpu and dynamically
-7
View File
@@ -41,12 +41,6 @@ static inline bool_t tmem_compression_enabled(void)
return opt_tmem_compress;
}
extern bool_t opt_tmem_shared_auth;
static inline bool_t tmem_shared_auth(void)
{
return opt_tmem_shared_auth;
}
#ifdef CONFIG_TMEM
extern bool_t opt_tmem;
static inline bool_t tmem_enabled(void)
@@ -291,7 +285,6 @@ struct client {
long eph_count, eph_count_max;
domid_t cli_id;
xen_tmem_client_t info;
bool_t shared_auth_required;
/* For save/restore/migration. */
bool_t was_frozen;
struct list_head persistent_invalidated_list;
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.