diff --git a/services/audioflinger/Threads.cpp b/services/audioflinger/Threads.cpp
index 5ba64d5..e6a9d65c 100644
--- a/services/audioflinger/Threads.cpp
+++ b/services/audioflinger/Threads.cpp
@@ -2783,7 +2783,7 @@
                     }
                     // indicate to client process that the track was disabled because of underrun;
                     // it will then automatically call start() when data is available
-                    android_atomic_or(CBLK_DISABLED, &track->mCblk->flags);
+                    android_atomic_or(CBLK_DISABLED, &track->mCblk->mFlags);
                     // remove from active list, but state remains ACTIVE [confusing but true]
                     isActive = false;
                     break;
@@ -3061,7 +3061,7 @@
                 // we missed desiredFrames whatever the actual number of frames missing was
                 cblk->u.mStreaming.mUnderrunFrames += desiredFrames;
                 // FIXME also wake futex so that underrun is noticed more quickly
-                (void) android_atomic_or(CBLK_UNDERRUN, &cblk->flags);
+                (void) android_atomic_or(CBLK_UNDERRUN, &cblk->mFlags);
             }
             // clear effect chain input buffer if an active track underruns to avoid sending
             // previous audio buffer again to effects
@@ -3094,7 +3094,7 @@
                     tracksToRemove->add(track);
                     // indicate to client process that the track was disabled because of underrun;
                     // it will then automatically call start() when data is available
-                    android_atomic_or(CBLK_DISABLED, &cblk->flags);
+                    android_atomic_or(CBLK_DISABLED, &cblk->mFlags);
                 // If one track is not ready, mark the mixer also not ready if:
                 //  - the mixer was ready during previous round OR
                 //  - no other track is ready
diff --git a/services/audioflinger/Tracks.cpp b/services/audioflinger/Tracks.cpp
index 4f2e372..58af204 100644
--- a/services/audioflinger/Tracks.cpp
+++ b/services/audioflinger/Tracks.cpp
@@ -128,7 +128,7 @@
         } else {
             mBuffer = sharedBuffer->pointer();
 #if 0
-            mCblk->flags = CBLK_FORCEREADY;     // FIXME hack, need to fix the track ready logic
+            mCblk->mFlags = CBLK_FORCEREADY;    // FIXME hack, need to fix the track ready logic
 #endif
         }
 
@@ -471,7 +471,7 @@
             mCblk->mServer,
             (int)mMainBuffer,
             (int)mAuxBuffer,
-            mCblk->flags,
+            mCblk->mFlags,
             mUnderrunCount,
             nowInUnderrun);
 }
@@ -494,7 +494,7 @@
         // only implemented so far for normal tracks, not fast tracks
         mCblk->u.mStreaming.mUnderrunFrames += desiredFrames;
         // FIXME also wake futex so that underrun is noticed more quickly
-        (void) android_atomic_or(CBLK_UNDERRUN, &mCblk->flags);
+        (void) android_atomic_or(CBLK_UNDERRUN, &mCblk->mFlags);
     }
     return status;
 }
@@ -518,9 +518,9 @@
     }
 
     if (framesReady() >= mFrameCount ||
-            (mCblk->flags & CBLK_FORCEREADY)) {
+            (mCblk->mFlags & CBLK_FORCEREADY)) {
         mFillingUpStatus = FS_FILLED;
-        android_atomic_and(~CBLK_FORCEREADY, &mCblk->flags);
+        android_atomic_and(~CBLK_FORCEREADY, &mCblk->mFlags);
         return true;
     }
     return false;
@@ -694,7 +694,7 @@
     if (!mResetDone) {
         // Force underrun condition to avoid false underrun callback until first data is
         // written to buffer
-        android_atomic_and(~CBLK_FORCEREADY, &mCblk->flags);
+        android_atomic_and(~CBLK_FORCEREADY, &mCblk->mFlags);
         mFillingUpStatus = FS_FILLING;
         mResetDone = true;
         if (mState == FLUSHED) {
@@ -856,7 +856,7 @@
 {
     // FIXME should use proxy, and needs work
     audio_track_cblk_t* cblk = mCblk;
-    android_atomic_or(CBLK_INVALID, &cblk->flags);
+    android_atomic_or(CBLK_INVALID, &cblk->mFlags);
     android_atomic_release_store(0x40000000, &cblk->mFutex);
     // client is not in server, so FUTEX_WAKE is needed instead of FUTEX_WAKE_PRIVATE
     (void) __futex_syscall3(&cblk->mFutex, FUTEX_WAKE, INT_MAX);
@@ -1679,7 +1679,7 @@
     buffer->raw = buf.mRaw;
     if (buf.mFrameCount == 0) {
         // FIXME also wake futex so that overrun is noticed more quickly
-        (void) android_atomic_or(CBLK_OVERRUN, &mCblk->flags);
+        (void) android_atomic_or(CBLK_OVERRUN, &mCblk->mFlags);
     }
     return status;
 }
