Use of vTaskSuspendAll on hardware access?

Hi all, I am running FreeRTOS successfully on a STM32F103CBT6 using Keil uVision. I use the SPI from two different tasks. To ensure only one task is accessing the SPI at a time i use a Mutex.
So far so good. From the flash.c-file of the demonstration i got the following function.
void vParTestToggleLED( unsigned portBASE_TYPE uxLED )
{
unsigned portSHORT usBit;
    vTaskSuspendAll();
    {
        if( uxLED < partstMAX_OUTPUT_LED )
        {
            usBit = partstFIRST_LED << uxLED;
            if( usOutputValue & usBit )
            {
                usOutputValue &= ~usBit;
            }
            else
            {
                usOutputValue |= usBit;
            }
            GPIO_Write( GPIOC, usOutputValue );
        }
    }
    xTaskResumeAll();
}
I am wondering about the use of the SuspendAll / ResumeAll calls. What exactly are they for in this application? I see two possible explanations. 1) To ensure no other task is currently accessing the usOutputValue-variable.
2) To ensure no other task is currently calling the GPIO_Write-function. I think the GPIO_Write-function shouldn’t be the reason, there is no read modify-write operation in the function.
void GPIO_Write(GPIO_TypeDef* GPIOx, u16 PortVal)
{
  GPIOx->ODR = PortVal;
}
When exactly do I need to use such a “critical section” ? Thanks for clearing my confusion. Benjamin

Use of vTaskSuspendAll on hardware access?

usOutputValue is a file scope variable, so you are correct in your assumption that it protects against multiple access of the usOutputValue variable.  Regards.