[Nouveau] [PATCH 4/8] acpi: Allow evaluate_optimus_dsm to take NULL results
Samuel Pitoiset
samuel.pitoiset at gmail.com
Tue May 26 01:02:04 PDT 2015
On 05/26/2015 12:22 AM, Pierre Moreau wrote:
> Signed-off-by: Pierre Moreau <pierre.morrow at free.fr>
> ---
> drm/nouveau/nouveau_acpi.c | 10 ++++------
> 1 file changed, 4 insertions(+), 6 deletions(-)
>
> diff --git a/drm/nouveau/nouveau_acpi.c b/drm/nouveau/nouveau_acpi.c
> index 36f4a40..073f7d7 100644
> --- a/drm/nouveau/nouveau_acpi.c
> +++ b/drm/nouveau/nouveau_acpi.c
> @@ -88,15 +88,14 @@ static int nouveau_evaluate_optimus_dsm(acpi_handle handle, int func, int arg, u
> for (i = 0; i < 4; i++)
> args_buff[i] = (arg >> i * 8) & 0xFF;
>
> - *result = 0;
> obj = acpi_evaluate_dsm_typed(handle, nouveau_op_dsm_muid, nouveau_op_dsm_rid,
> func, &argv4, ACPI_TYPE_BUFFER);
> if (!obj) {
> acpi_handle_info(handle, "failed to evaluate _DSM\n");
> return AE_ERROR;
> } else {
> - if (obj->buffer.length == 4) {
> - *result |= obj->buffer.pointer[0];
> + if (!result && obj->buffer.length == 4) {
> + *result = obj->buffer.pointer[0];
segfault here if result is NULL! ;)
> *result |= (obj->buffer.pointer[1] << 8);
> *result |= (obj->buffer.pointer[2] << 16);
> *result |= (obj->buffer.pointer[3] << 24);
> @@ -322,18 +321,17 @@ void nouveau_register_dsm_handler(void)
> /* Must be called for Optimus models before the card can be turned off */
> void nouveau_switcheroo_optimus_dsm(void)
> {
> - u32 result = 0;
> if (!nouveau_dsm_priv.optimus_detected)
> return;
>
> nouveau_evaluate_optimus_dsm(nouveau_dsm_priv.dhandle,
> NOUVEAU_DSM_OPTIMUS_FLAGS,
> - 0x3, &result);
> + 0x3, NULL);
>
> nouveau_evaluate_optimus_dsm(nouveau_dsm_priv.dhandle,
> NOUVEAU_DSM_OPTIMUS_CAPS,
> NOUVEAU_DSM_OPTIMUS_SET_POWERDOWN,
> - &result);
> + NULL);
>
> }
>
More information about the Nouveau
mailing list