The ghash_update function passes a pointer to gf128mul_4k_lle which will be NULL if ghash_setkey is not called or if the most recent call to ghash_setkey failed to allocate memory. This causes an oops. Fix this up by returning an error code in the null case. This is trivially triggered from unprivileged userspace through the AF_ALG interface by simply writing to the socket without setting a key. The ghash_final function has a similar issue, but triggering it requires a memory allocation failure in ghash_setkey _after_ at least one successful call to ghash_update. Acknowledgements: Red Hat would like to thank Nick Bowler for reporting this issue.
Upstream commit: http://git.kernel.org/linus/7ed47b7d142ec99ad6880bbbec51e9f12b3af74c
Created kernel tracking bugs for this issue Affects: fedora-all [bug 749484]
Statement: This issue did not affect the Linux kernels as shipped with Red Hat Enterprise Linux 4, and 5 as they did not include support for the GHASH message digest algorithm. This has been addressed in Red Hat Enterprise Linux 6, and MRG via https://rhn.redhat.com/errata/RHSA-2012-0350.html, and https://rhn.redhat.com/errata/RHSA-2012-0010.html.
This issue has been addressed in following products: MRG for RHEL-6 v.2 Via RHSA-2012:0010 https://rhn.redhat.com/errata/RHSA-2012-0010.html
This issue has been addressed in following products: Red Hat Enterprise Linux 6 Via RHSA-2012:0350 https://rhn.redhat.com/errata/RHSA-2012-0350.html