[Mesa-dev] [PATCH 1/5] util/hash_table: Don't hash the deleted and freed keys

Tomeu Vizoso tomeu.vizoso at collabora.com
Tue Aug 6 09:28:08 UTC 2019


On Mon, 5 Aug 2019 at 19:01, Alyssa Rosenzweig <alyssa at rosenzweig.io> wrote:
>
> What's the implication of this for Panfrost? (I.e. which patch/es in the
> series are pending on this change)

Patch 2 needs this, otherwise we SIGSEGV on context destruction if
blend shaders are used. And patch 3 depends on patch 5, otherwise the
GPU would try to execute a shader in a memory region marked as not
executable.

Will be sending a v2 with Caio's suggestion.

Cheers,

Tomeu




> On Mon, Aug 05, 2019 at 05:18:32PM +0200, Tomeu Vizoso wrote:
> > Some hash functions (eg. key_u64_hash) will attempt to dereference the
> > key, causing an invalid access when passed DELETED_KEY_VALUE (0x1) or
> > FREED_KEY_VALUE (0x0).
> >
> > The entry.hash field isn't needed by the delete_function, so just stop
> > populating it.
> >
> > Signed-off-by: Tomeu Vizoso <tomeu.vizoso at collabora.com>
> > Cc: Samuel Pitoiset <samuel.pitoiset at gmail.com>
> > Cc: Nicolai Hähnle <nicolai.haehnle at amd.com>
> > ---
> >  src/util/hash_table.c | 2 --
> >  1 file changed, 2 deletions(-)
> >
> > diff --git a/src/util/hash_table.c b/src/util/hash_table.c
> > index f58575de558f..e691f8baa9c1 100644
> > --- a/src/util/hash_table.c
> > +++ b/src/util/hash_table.c
> > @@ -667,7 +667,6 @@ _mesa_hash_table_u64_clear(struct hash_table_u64 *ht,
> >           struct hash_entry entry;
> >
> >           /* Create a fake entry for the delete function. */
> > -         entry.hash = table->key_hash_function(table->deleted_key);
> >           entry.key = table->deleted_key;
> >           entry.data = ht->deleted_key_data;
> >
> > @@ -682,7 +681,6 @@ _mesa_hash_table_u64_clear(struct hash_table_u64 *ht,
> >           struct hash_entry entry;
> >
> >           /* Create a fake entry for the delete function. */
> > -         entry.hash = table->key_hash_function(uint_key(FREED_KEY_VALUE));
> >           entry.key = uint_key(FREED_KEY_VALUE);
> >           entry.data = ht->freed_key_data;
> >
> > --
> > 2.20.1
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list